더 큰 페이지
- 페이지 크기를 키우자 -> 페이지 테이블은 작아진다.
- 문제점
- 더 큰 페이지 -> Bigger internal fragmentation
- Page loading time
Linux의 TLB 관련 정보
- cpuid 실행 (TLB와 페이지 정보 확인)
cache and TLB information (2):
0x63: data TLB: 1G pages, 4-way, 4 entries
0x03: data TLB: 4K pages, 4-way, 64 entries
0x76: instruction TLB: 2M/4M pages, fully, 8 entries
0xff: cache data is in CPUID 4
0xb5: instruction TLB: 4K, 8-way, 64 entries
0xf0: 64 byte prefetching
0xc1: L2 TLB: 4K/2M pages, 8-way, 1024 entries
하이브리드
- Hybrid: Paging + Segments
- 페이지 테이블의 문제: 너무 많은 무효 엔트리
- 세그먼트 별 페이지 테이블 운영
- Segment base register -> Page table 시작 주소
- Segment bounds register -> Page table의 끝
- 쓰는 페이지만 기록함
- 혼합 방식의 문제
- Heap과 같이 드문드문 사용되는(sparsely used) 세그먼트는?
- 외부 단편화
- 복잡하다
다단계 테이블
- Multi-Level Page Table
- Tree 형태와 유사한 다단계 구조
- Page directory 도입
- Page Directory
- 각 엔트리(PDE, Page Directory Entry)는 페이지 테이블의 페이지 정보
- PDE: PFN + Valid bit
- 다단계 페이지 테이블의 장단점
- 장점
- 사용 중인 페이지 테이블만 저장 → 메모리 절약
- 단점
역 페이지 테이블
- 역 (Inverted) 페이지 테이블
- 보통의 페이지 테이블: Virtual → Physical (프로세스 당 하나)
- 역 페이지 테이블: Physical → Virtual (전체 시스템에서 하나)
- 역 페이지 테이블의 엔트리