페이지 테이블 (Page Table)
Jan 27, 2026
핵심 개념
섹션 제목: “핵심 개념”페이지 테이블은 논리 주소의 페이지 번호를 물리 주소의 프레임 번호로 변환해 주는 자료구조이다. 마치 호텔 프론트의 방 배정 목록처럼, “몇 번 페이지가 몇 번 프레임에 있는지”를 기록해 둔다.
각 **PTE(Page Table Entry)**에는 다음 정보가 담긴다.
| 필드 | 역할 |
|---|---|
| 프레임 번호 | 해당 페이지가 위치한 물리 프레임 |
| Valid-Invalid Bit | 1이면 유효(메모리에 있음), 0이면 무효(접근 불가) |
| 보호 비트 | Read / Write / Execute 권한 설정 |
| 참조 비트 (Reference Bit) | 최근에 접근되었는지 표시 (교체 알고리즘 사용) |
| 수정 비트 (Dirty Bit) | 메모리에서 수정되었는지 표시 (swap out 시 디스크 쓰기 필요 여부) |
동작 원리
섹션 제목: “동작 원리”하드웨어 구현 방식
섹션 제목: “하드웨어 구현 방식”| 방식 | 특징 | 접근 시간 |
|---|---|---|
| 전용 레지스터 | 소규모 테이블에 적합, 빠름 | 1회 메모리 접근 |
| 메인 메모리 + PTBR | 유연하지만 페이지 테이블 조회 + 실제 접근 | 2회 메모리 접근 |
| TLB (Translation Lookaside Buffer) | 고속 캐시로 PTBR 방식의 느림을 해결 | TLB hit 시 1회 접근 |
**PTBR (Page-Table Base Register)**은 메모리에 있는 페이지 테이블의 시작 주소를 가리킨다. 유연하지만, 데이터에 접근하려면 페이지 테이블 조회(1회) + 실제 데이터 접근(1회)으로 총 2회 메모리 접근이 필요하다.
TLB는 이 문제를 해결하는 하드웨어 캐시이다.
CPU ──► 논리 주소 [p | d] │ ▼ ┌──────────┐ hit ┌────────────┐ │ TLB │───────►│ 프레임(f)+d │──► 물리 주소 │ (캐시) │ └────────────┘ └────┬─────┘ │ miss ▼ ┌──────────────┐ │ 페이지 테이블 │──► 프레임(f) 획득 → TLB 갱신 │ (메인 메모리) │ └──────────────┘공유 페이지
섹션 제목: “공유 페이지”**재진입 코드(Reentrant Code)**는 실행 중 변경되지 않으므로 여러 프로세스가 같은 물리 프레임을 공유할 수 있다. 예를 들어, 100개 프로세스가 libc를 사용해도 물리 메모리에는 libc 코드가 1벌만 있으면 된다.
장점과 단점
섹션 제목: “장점과 단점”- 장점: 유연한 보호(페이지별 권한), 메모리 공유, 큰 논리 주소 공간 지원
- 단점: 32비트 주소 + 4KB 페이지 → 약 100만 개 PTE → 4MB 페이지 테이블 오버헤드 → 계층적 페이징으로 해결
32비트 시스템, 4KB 페이지:- 페이지 번호 비트 = 32 - 12 = 20비트 → 2^20 = 약 100만 개 PTE- PTE 크기 = 4바이트라면 → 페이지 테이블 = 4MB
TLB 성능 계산 (hit ratio = 98%):- TLB hit: 10ns(TLB) + 100ns(메모리) = 110ns- TLB miss: 10ns(TLB) + 100ns(테이블) + 100ns(메모리) = 210ns- EAT = 0.98 × 110 + 0.02 × 210 = 112ns- TLB 없이: 200ns → 약 44% 성능 향상