728x90
메모리 관리 기법으로, 프로세스가 필요한 메모리 공간을 효과적으로 관리하고 할당하는 방식입니다. 각각의 기법은 가상 메모리를 물리적 메모리에 효율적으로 배치하고, 프로세스를 분할하여 메모리 낭비를 줄이기 위해 사용됩니다.
페이징(Paging)
- 개념: 페이징은 프로세스를 고정된 크기의 블록으로 나누어 메모리에 할당하는 방식입니다. 프로세스를 일정한 크기의 페이지(Page)로 나누고, 물리 메모리는 동일한 크기의 페이지 프레임(Page Frame)으로 나누어 페이지 단위로 메모리에 적재됩니다.
- 작동 방식:
- 프로세스가 요청하는 메모리 주소를 페이지 번호와 오프셋으로 나눕니다.
- 페이지 테이블(Page Table)을 통해 페이지 번호를 프레임 번호로 변환하여 물리 메모리 주소를 찾습니다.
- 장점: 외부 단편화(External Fragmentation)가 발생하지 않으며, 고정된 크기의 페이지로 메모리 관리가 효율적입니다.
- 단점: 프로세스 크기가 페이지 크기의 배수가 아닐 경우 마지막 페이지에 내부 단편화(Internal Fragmentation)가 발생할 수 있습니다.
페이징 예시
프로세스 A가 10KB 메모리를 필요로 하고, 페이지 크기가 4KB라면 프로세스 A는 3개의 페이지로 나뉘며, 각 페이지는 물리 메모리의 빈 페이지 프레임에 할당됩니다.
세그멘테이션(Segmentation)
- 개념: 세그멘테이션은 프로세스를 **논리적인 단위(세그먼트)**로 나누어 메모리에 할당하는 방식입니다. 세그먼트는 고정된 크기가 아닌, 코드, 데이터, 스택과 같은 의미 단위로 나뉩니다.
- 작동 방식:
- 프로세스는 세그먼트 번호와 오프셋으로 메모리 주소를 정의합니다.
- 세그먼트 테이블을 사용하여 논리 주소를 물리 주소로 변환하고, 각 세그먼트는 물리 메모리의 연속된 공간에 할당됩니다.
- 장점: 프로세스를 논리적 단위로 나누기 때문에 프로그램 구조와 일치하며, 공유와 보안이 용이합니다.
- 단점: 가변 크기 세그먼트로 인해 외부 단편화가 발생할 수 있습니다.
세그멘테이션 예시
프로세스 A가 코드 세그먼트(10KB), 데이터 세그먼트(8KB), 스택 세그먼트(4KB)로 구성되어 있다면, 각 세그먼트는 물리 메모리의 다른 위치에 연속적으로 할당됩니다.
페이징과 세그멘테이션의 차이점
구분페이징(Paging)세그멘테이션(Segmentation)
분할 단위 | 고정 크기의 페이지 | 가변 크기의 세그먼트 (논리적 단위) |
주소 구조 | 페이지 번호와 오프셋 | 세그먼트 번호와 오프셋 |
단편화 | 내부 단편화 발생 가능, 외부 단편화 없음 | 외부 단편화 발생 가능, 내부 단편화 없음 |
메모리 접근 방식 | 페이지 테이블을 통해 물리 주소로 매핑 | 세그먼트 테이블을 통해 물리 주소로 매핑 |
메모리 할당 방식 | 고정 크기 블록 할당 | 가변 크기 블록 할당 |
적합성 | 메모리 관리 효율적, 단순한 구조 | 프로그램 구조와 일치, 세그먼트 별 보안 및 공유 용이 |
결론
- 페이징은 고정된 크기로 메모리를 관리하여 외부 단편화가 발생하지 않으며, 메모리 활용 효율이 높습니다.
- 세그멘테이션은 논리적 단위로 메모리를 관리하므로 프로그램 구조와 일치해 효율적이지만, 외부 단편화가 발생할 수 있습니다.
728x90
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 시스템 콜(System Call) (0) | 2024.10.31 |
---|---|
[운영체제] 인터럽트(Interrupt) (0) | 2024.10.31 |
[운영체제] 프로세스 제어 블록과 문맥교환(Process Control Block & Context Switching) (0) | 2024.10.31 |
[운영체제] 동기화 문제(synchronization problem) (0) | 2024.10.31 |
[운영체제] 프로세스(Process)와 스레드(Thread) 차이 (멀티 프로세스, 멀티 스레드) (0) | 2024.10.30 |