페이징 (Paging)
Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”페이징은 논리 메모리를 **페이지(Page)**라는 고정 크기 블록으로, 물리 메모리를 같은 크기의 **프레임(Frame)**으로 나누는 방식이다. 마치 책(논리 메모리)의 각 페이지를 책장(물리 메모리)의 빈 칸 어디든 꽂아 넣을 수 있는 것처럼, 프로세스의 페이지들은 물리 메모리의 아무 프레임에나 배치될 수 있다.
- 페이지(Page): 논리 메모리의 고정 크기 블록
- 프레임(Frame): 물리 메모리의 고정 크기 블록 (페이지와 같은 크기)
- 프레임 테이블: OS가 관리하며, 각 프레임의 할당 상태를 추적
동작 원리
섹션 제목: “동작 원리”CPU가 생성하는 논리 주소는 두 부분으로 나뉜다.
- 논리 주소:
[페이지 번호(p) | 페이지 오프셋(d)] - 물리 주소:
[프레임 번호(f) | 오프셋(d)]
페이지 번호(p)로 페이지 테이블을 조회하여 프레임 번호(f)를 얻고, 오프셋(d)을 그대로 붙여 물리 주소를 구성한다.
논리 주소 물리 주소┌──────────┬──────────┐ ┌──────────┬──────────┐│ 페이지(p) │ 오프셋(d) │ │ 프레임(f) │ 오프셋(d) │└─────┬────┴──────────┘ └──────────┴──────────┘ │ ▲ │ ┌──────────────┐ │ └────►│ 페이지 테이블 │──────────┘ │ p → f 매핑 │ └──────────────┘- 외부 단편화 제거: 프레임 단위로 할당하므로 외부에 자투리 공간이 생기지 않는다
- 비연속 배치: 프로세스의 페이지들이 물리적으로 흩어져 있어도 된다
- 큰 논리 주소 공간: 물리 메모리보다 큰 주소 공간을 논리적으로 사용할 수 있다
- 내부 단편화: 마지막 페이지는 꽉 차지 않을 수 있다 (평균 반 페이지 낭비)
- 페이지 테이블 오버헤드: 페이지 테이블 자체가 메모리를 차지한다
페이지 크기 = 4KB, 프로세스 크기 = 10KB
필요 페이지 수 = ⌈10KB / 4KB⌉ = 3페이지마지막 페이지 내부 단편화 = 4KB × 3 - 10KB = 2KB
페이지 테이블: 페이지 0 → 프레임 5 페이지 1 → 프레임 2 페이지 2 → 프레임 8 (2KB만 사용, 2KB 내부 단편화)
논리 주소 5000 변환: p = 5000 / 4096 = 1 (페이지 1) d = 5000 % 4096 = 904 (오프셋) 프레임 = 2 (테이블 조회) 물리 주소 = 2 × 4096 + 904 = 9096