CS/컴퓨터공학 메모리 관리 기초 – 페이징(Paging) vs 세그멘테이션(Segmentation)

✨ 개요

프로세스의 가상 주소 공간을 물리 메모리와 어떻게 매핑할까?
운영체제(OS)는 크게 페이징세그멘테이션이라는 두 가지 고전 기법(또는 둘의 조합)으로 이 문제를 해결합니다.


1. 요약

현대 범용 OS는 페이징(다단계/대페이지/TLB)를 표준으로 쓰고,
세그멘테이션은 논리·권한 경계에 국한되거나 거의 사용하지 않습니다(예: x86-64는 FS/GS 일부를 제외하고 세그먼트 대부분 비활성).


2 기본 개념

2.1 페이징(Paging)

아스키 다이어그램:
가상메모리 페이지테이블 물리메모리
[ P0 | off ] ---> [P0 -> F7] ----------> [ ... F7 .... ]
[ P1 | off ] ---> [P1 -> F2] ----------> [ ... F2 .... ]

2.2 세그멘테이션(Segmentation)

세그먼트 테이블
S0: base=B0, limit=L0, 권한=R-X
S1: base=B1, limit=L1, 권한=RW-
...
물리 주소 = base(S) + offset (단, offset < limit)

3 단편화( Fragmentation )

구분 내부 단편화 외부 단편화
정의 고정 블록에 데이터가 덜 차서 블록 내부가 남는 낭비 가변 블록을 할당/해제하다 사이사이에 잘게 남는 낭비
페이징 있을 수 있음 (마지막 페이지) 없음
세그멘테이션 작음/없음 있음 (주요 단점)

4. 주소 변환과 성능

4.1 TLB(Translation Lookaside Buffer)

4.2 페이지 테이블 최적화


5. 보호(Protection)와 공유(Sharing)

현대 OS는 보호·공유 대부분을 페이지 권한으로 해결합니다.


6. 페이지 폴트와 스와핑


7. 페이징 vs 세그멘테이션 비교표

항목 페이징 세그멘테이션
단위 고정 크기 페이지 가변 크기 세그먼트
단편화 내부 O / 외부 X 내부 X / 외부 O
관리 용이성 단순, 교체/스왑 용이 의미 반영 좋으나 압축/확장 어려움
보호/공유 페이지 권한·CoW·공유 라이브러리 세그먼트 권한 모델(이론적 표현력↑)
성능 포인트 TLB·다단계 PT·Huge Page 외부 단편화/압축 비용 이슈
현대 OS 채택 주력(표준) 제한적(주로 역사적/특수 용도)

8. 하이브리드: 세그먼트+페이지

일부 아키텍처/시대에는 세그먼트로 큰 논리 영역을 잡고, 내부는 페이지로 관리(외부 단편화↓, 보호/논리 경계 유지).
하지만 현재 범용 데스크톱/서버의 메모리 관리 핵심은 페이징이며, 세그멘테이션은 대체로 축소되었습니다.

예) x86-64는 실질적으로 페이징 중심이며, 세그먼트는 FS/GS 기반 TLS 등 제한적으로만 사용.


9. 실무 관점 팁



Related Posts