가상메모리와 TLB
Virtual Memory and TLB
가상메모리는 프로세스에 물리 메모리보다 큰 독립 주소 공간을 제공하고 MMU가 페이지 테이블로 가상주소를 물리주소로 변환하는 기법이며, TLB는 최근 변환 결과를 저장해 주소 변환 속도를 높이는 MMU 내 고속 캐시임.
핵심 키워드
페이징(Paging)페이지 테이블·PTEMMUTLB 적중·미스(Hit/Miss)페이지 폴트(Page Fault)다단계 페이지 테이블페이지 교체(FIFO·LRU·OPT·Clock)스래싱(Thrashing)·워킹셋ASID
구성도
정리
1. 개요
- 배경: 다중 프로그래밍 환경에서 물리 메모리 크기 한계, 프로세스 간 메모리 보호 필요
- 효과: 물리 메모리보다 큰 주소 공간, 프로세스 격리, 메모리 공유(공유 라이브러리), 요구 페이징으로 적재 효율 향상
- 문제: 매 메모리 접근마다 페이지 테이블 조회 필요 → 성능 저하 → TLB로 해결
2. 구성 및 원리
- 페이징: 가상주소 = 페이지 번호(VPN) + 오프셋, 물리 메모리는 동일 크기 프레임으로 분할
- 페이지 테이블 엔트리(PTE): 프레임 번호, Valid 비트, 보호 비트(R/W/X), 참조(Reference) 비트, 변경(Dirty) 비트
- 다단계 페이지 테이블: 희소한 주소 공간의 테이블 메모리 절감 (x86-64는 4단계, 확장 시 5단계)
- 주소 변환 절차
- CPU가 가상주소 생성 → TLB 조회
- TLB Hit → 즉시 물리주소 생성
- TLB Miss → 페이지 테이블 워크(하드웨어 또는 OS) 후 TLB 갱신
- Valid=0이면 페이지 폴트 → OS가 디스크에서 페이지 적재, 필요 시 교체
- 유효 접근 시간(EAT): EAT = h × (TLB 시간 + 메모리 시간) + (1 − h) × (TLB 시간 + 페이지 테이블 접근 + 메모리 시간), h는 TLB 적중률
3. 페이지 교체 알고리즘 비교
| 알고리즘 | 원리 | 특징 |
|---|---|---|
| FIFO | 가장 먼저 적재된 페이지 교체 | 구현 단순, Belady의 이상 현상 발생 가능 |
| OPT | 가장 오랫동안 사용되지 않을 페이지 교체 | 최소 폴트, 미래 예측 불가로 비교 기준용 |
| LRU | 가장 오래 사용되지 않은 페이지 교체 | 성능 우수, 하드웨어 지원·오버헤드 |
| LFU | 참조 횟수가 가장 적은 페이지 교체 | 과거 빈번 사용 페이지 잔류 문제 |
| Clock(2차 기회) | 참조 비트 순환 검사 | LRU 근사, 실용적 |
4. 고려사항 및 최신 동향
- 스래싱: 프레임 부족으로 페이지 폴트 폭증, CPU 이용률 급락 → 워킹셋 모델, 페이지 폴트 빈도(PFF) 기반 프레임 할당
- TLB 관리: 문맥 교환 시 TLB 플러시 비용 → ASID(PCID)로 프로세스별 엔트리 구분, 멀티코어 TLB Shootdown 비용
- 대형 페이지(Huge Page): 2MB·1GB 페이지로 TLB 커버리지 확대
- 보안: 커널 페이지 테이블 격리(KPTI) 등 사이드채널 대응
- 가상화: 중첩 페이징(EPT/NPT)으로 게스트-호스트 2단계 주소 변환
함께 볼 토픽
v1 · 2026. 10. 19. 갱신 · 틀린 내용을 발견하면 알려 주세요.