본문 바로가기
Computer Architecture/Virtual Address & Cache

Multi-level Page Tables(다단계 페이지 테이블)

by FastBench 2024. 10. 29.
반응형

- 가상 메모리 시리즈 모아 보기-

https://microelectronics.tistory.com/99

 

Multi-level Page Tables

1. 페이지 테이블의 크기 문제

32비트 시스템에서 4KB 페이지를 사용할 때, 페이지 테이블 항목이 약 100만 개 필요하다. 각 페이지 테이블 항목이 4바이트이므로 프로그램당 페이지 테이블에 4MB의 메모리가 필요하게 된다.

  • 4KB 페이지면 12bit offset 이 요구됨. 따라서 2^20 만큼의 항목이 필요함.
  • 보통 32비트 시스템의 경우, PTE 도 4바이트로 사용하는 경우가 많은데
    • 20비트는 물리페이지의 시작주소
    • 나머지 12비트는 Permission bits ( Valid/Present , Read/Write, Dirty, Accessed ..등)의 Permission bits 로 사용된다.

실행되는 프로그램마다 독립적인 페이지 테이블을 갖춰야 하므로, 다수의 프로그램이 실행될 경우 메모리 소모가 급격히 증가한다. 예를 들어, 100개의 프로그램을 실행한다면 400MB의 메모리가 필요하다. 더욱이 페이지 테이블은 디스크에 스왑 아웃할 수 없으므로 항상 메모리에 유지되어야 한다.

2. 다단계 페이지 테이블을 통한 메모리 절약

반응형

이 문제를 해결하기 위해, 운영체제는 다단계 페이지 테이블(Multi-Level Page Table) 구조를 사용한다.(계층적 페이지 맵 이라고도 한다.)  다단계 페이지 테이블은 기본적으로 계층 구조를 통해 페이지 테이블 항목을 그룹화하고, 필요한 경우에만 하위 페이지 테이블을 메모리에 로드하여 메모리 사용을 최적화한다.

  • 1단계 페이지 테이블: 최상위 페이지 테이블로, 1,024개의 페이지 테이블 엔트리를 갖고 있으며, 각각 하위 페이지 테이블을 가리킨다. 페이지 디렉토리 라고도 부른다.
  • 2단계 페이지 테이블: 각 1단계 엔트리가 가리키는 페이지 테이블로, 1,024개의 엔트리를 포함하며, 실제 데이터 페이지의 물리적 위치를 가리킨다.

그런데 이러한 접근 방법은 알겠는데, 실제로 어떻게 써먹을까?

3. 다단계 페이지 테이블로의 주소 변환

가상 주소를 물리 주소로 변환할 때는 가상 주소의 상위 비트하위 비트를 나누어 각 계층에서 주소를 참조한다.

  • 상위 10비트: 1단계 페이지 테이블의 엔트리를 결정하는 데 사용된다. 이 엔트리에는 2단계 페이지 테이블의 시작 주소가 포함된다.
  • 중간 10비트: 2단계 페이지 테이블의 엔트리를 선택하는 데 사용된다. 이 엔트리에는 최종 물리 주소 페이지가 포함된다.
  • 하위 12비트: 페이지 내 오프셋으로, 물리 페이지 내 데이터 위치를 가리킨다.

이 구조 덕분에, 페이지 테이블 전체를 메모리에 상주시키지 않고 필요한 부분만 메모리에 유지할 수 있다.

4. 메모리 절약 효과

다단계 페이지 테이블 구조에서는 최상위 페이지 테이블(4KB)과 최소의 경우 하나의 하위 페이지 테이블(4KB)만 메모리에 상주시키면 된다. 따라서 프로그램당 필요한 최소 페이지 테이블 메모리는 8KB로, 전체 페이지 테이블을 메모리에 상주시킬 경우에 비해 큰 메모리 절감 효과가 있다.

예를 들어, 100개의 프로그램이 동시에 실행될 때:

  • 다단계 페이지 테이블 사용: 프로그램당 8KB가 필요하므로 총 800KB의 메모리만 소모된다.
  • 단일 페이지 테이블 사용: 프로그램당 4MB가 필요하므로 총 400MB가 소모된다.

결론

다단계 페이지 테이블은 메모리 사용량을 크게 줄이며, 프로그램의 가상 주소를 효율적으로 변환할 수 있게 한다. 최상위 페이지 테이블만 메모리에 상주시키고 나머지 부분은 필요할 때만 메모리에 로드하는 방식으로 메모리 사용을 최적화한다.

 

 

Reference

반응형

댓글