← 질문 목록
#263깊이 0
가상 메모리 관리에서 페이징과 세그먼테이션은 무엇으로 구분하는가?
메모리를 나누는 단위의 고정성 여부로 구분한다. 페이징은 시스템이 정한 고정 크기로 나누고, 세그먼테이션은 논리적 의미에 따라 가변 크기로 나눈다.
| 기준 | 페이징 | 세그먼테이션 |
|---|---|---|
| 분할 단위 | 고정 크기(페이지) | 가변 크기(세그먼트) |
| 분할 기준 | 가상 주소는 페이지, 물리 메모리는 프레임 | 논리적 의미(코드, 데이터, 스택) |
| 파편화 | 내부 파편화 발생 | 외부 파편화 발생 |
페이징은 메모리를 고정 크기로 나눠 할당과 회수를 단순하게 만든다. 프로세스 전체를 메모리에 올리지 않고 필요한 부분만 올리는 수요 페이징으로 메모리 사용도를 높인다.
세그먼테이션은 사용자가 정의한 논리적 단위로 메모리를 나누는 방식이다. 코드, 데이터, 스택 영역을 구분하여 보호 및 공유가 쉽다.
요즘 범용 OS는 페이징을 중심으로 쓴다. 세그먼테이션을 어디까지 쓰는지는 아키텍처마다 다르다. 세그먼트로 논리적 영역을 나누고, 그 영역을 다시 페이징으로 관리하여 외부 파편화 문제를 해결한다.