운영체제는 메모리를 효율적으로 관리하기 위해 가상 메모리(Virtual Memory) 를 사용하고, 이를 구현하는 대표적인 기법 중 하나가 페이징(Paging)이다.
페이징은 고정 크기 단위로 메모리를 나누어 메모리 단편화를 줄이고, 주소 공간을 효율적으로 관리하는 기법이다.
메모리에 프로그램을 올릴 때 연속된 공간을 요구하면 외부 단편화(External Fragmentation)가 생긴다.
페이징은 고정 크기의 블록으로 메모리를 분할하고, 불연속적으로 저장하더라도 논리적으로 연속된 것처럼 보이게 한다.

| 개념 | 설명 |
|---|---|
| Page (페이지) | 가상 주소 공간을 일정 크기로 나눈 블록 (예: 4KB) |
| Frame (프레임) | 물리 메모리를 페이지 크기와 동일한 단위로 나눈 블록 |
| Page Table | 각 가상 페이지가 물리 프레임 어디에 매핑되는지 저장하는 자료구조 |
| MMU (Memory Management Unit) | CPU 가상 주소를 물리 주소로 변환하는 하드웨어 장치 |
CPU는 항상 가상 주소(Virtual Address) 를 사용하고,
MMU는 가상 주소를 페이지 번호(Page Number) 와 오프셋(Offset) 으로 나눈다.
가상 주소 = [페이지 번호 | 페이지 내 오프셋]
페이지 테이블에서 해당 페이지 번호에 대응하는 프레임 번호(Frame Number) 를 찾고, 그 프레임 번호 + 오프셋으로 실제 물리 주소를 계산한다.
예를 들어, 32bit 주소 공간이고 페이지 크기가 4KB(2¹²)라면:
가상 주소 0x1234ABCD
→ 페이지 번호 = 0x1234A
→ 오프셋 = 0xBCD
→ 페이지 테이블에서 0x1234A 페이지가 프레임 0x3F에 매핑
→ 물리 주소 = 0x3FBCD
주소 변환 속도 문제를 해결하기 위해, 최근 참조한 페이지 매핑을 캐싱하는 구조
TLB는 페이지 테이블보다 훨씬 빠르지만 용량이 적다.
| 구분 | 페이징 (Paging) | 세그멘테이션 (Segmentation) |
|---|---|---|
| 단위 | 고정 크기 (Page) | 가변 크기 (Segment) |
| 단편화 | 내부 단편화 발생 | 외부 단편화 발생 |
| 주소 | 페이지 번호 + 오프셋 | 세그먼트 번호 + 오프셋 |
| 장점 | 단순하고 효율적 | 논리적 단위에 적합 (함수, 변수 등) |
실제 OS는 페이징 + 세그멘테이션을 혼합하여 사용하는 경우가 많다.