더 작은 테이블 (페이징)

suhye0n·2022년 5월 7일
0

더 큰 페이지

  • 페이지 크기를 키우자 -> 페이지 테이블은 작아진다.
  • 문제점
    • 더 큰 페이지 -> 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
  • 큰 page를 쓰려면?
    • hugetlbfs

하이브리드

  • 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
  • 다단계 페이지 테이블의 장단점
    • 장점
      • 사용 중인 페이지 테이블만 저장 → 메모리 절약
    • 단점
      • TLB miss 시 추가 비용 발생
      • 복잡하다

역 페이지 테이블

  • 역 (Inverted) 페이지 테이블
    • 보통의 페이지 테이블: Virtual → Physical (프로세스 당 하나)
    • 역 페이지 테이블: Physical → Virtual (전체 시스템에서 하나)
  • 역 페이지 테이블의 엔트리
    • VPN + 페이지를 사용 중인 프로세스 ID

0개의 댓글