페이징과 세그멘테이션

외부 단편화(External Fragmentation)
- 메모리의 여러 빈 공간이 존재하지만, 이 빈 공간들이 서로 떨어져 있어 충분한 크기의 연속된 메모리 블록을 할당하지 못하는 현상
- 동적 분할 기법에서 발생
내부 단편화(Internal Fragmentation)
- 프로세스에 할당된 메모리 블록 내에서 사용되지 않는 공간이 발생하는 현상
- 고정 분할 기법에서 발생
페이징(Paging)

- 개념
- 메모리를 고정된 크기의 블록(페이지)로 나누어 관리하는 기법
- 프로세스의 가상 메모리를 동일한 크기의 페이지로 나누고, 이 페이지들을 물리 메모리의 프레임에 할당
- 사용 이유
- 외부 단편화를 방지하고, 메모리를 효율적으로 사용하기 위해 사용
- 특징
- 가상 주소 공간은 페이지로 나뉨
- 페이지 테이블을 통해 가상 주소를 물리 주소로 변환

- 개념
- 메모리를 서로 다른 크기의 논리적 단위(세그먼트)로 나누어 관리하는 기법
- 각 세그먼트는 논리적으로 관련된 데이터(코드, 스택, 데이터 등)로 구성
- 각 세그먼트는 독립적인 메모리 영역을 차지
- 사용 이유
- 프로세스의 논리적 구조를 반영한 메모리 관리를 위해 사용
- 특징
- 가상 주소 공간은 세그먼트로 나뉨
- 세그먼트 테이블을 통해 가상 주소를 물리 주소로 변환
페이징과 세그멘테이션 비교
- 메모리 관리 단위
- 페이징 : 고정된 크기의 페이지로 관리
- 세그멘테이션 : 가변 크기의 세그먼트로 관리
- 단편화 문제
- 페이징 : 내부 단편화 발생. 외부 단편화 발생 X
- 세그멘테이션 : 외부 단편화 발생. 내부 단편화 발생 X
Q. Paging과 Segment의 차이는 무엇인가?
- paging은 일정한 크기의 단위로 나누어 할당하는데 반해, segmentation은 code, data, heap, stack 등의 기능(의미)단위로 물리 메모리에 할당하는 기법이다.
Q. Paged segmentation 기법이 무엇인가?
- paged segmentation이란, segmentation을 기본으로 하되, 이를 다시 동일 크기의 page로 나누어 물리 메모리에 할당하는 메모리 관리 기법이다. 즉, 프로그램을 의미 단위의 segment로 나누고 개별 segment의 크기를 page의 배수가 되도록 하는 벙법이다. 이를 통해 segmentation 기법에서 발생하는 외부 단편화 문제를 해결하고, 동시에 segment 단위로 프로세스간의 공유나 접근 권한 보호가 이루어지도록 해서 paging 기법의 단점을 해결한다.