CS/OS

[운영체제] 다계층 페이지 테이블

F12:) 2023. 12. 9. 15:47

오늘은 다계층 페이지 테이블. Multi-level Page Table에 대해서 알아보겠습니다.

 

 

   Multi-level Page Table

프로세스의 크기가 커지게 되면서 page table을 저장하기 위해 많은 저장 공간이  필요해지게 되었습니다. 이러한 문제를 해결하고자 다계층 페이지 테이블이 도입되게 되었습니다.

 

 

4G의 주소공간을 갖는 컴퓨터가 있다고 해봅시다. 하나의 페이지는 통상 4Kb이니 우리의 메모리에는 페이지가 총 1M개 들어갈 수 있습니다.

 

페이지  테이블 1개는 4K이고, 페이지 엔트리는 4byte입니다. 따라서 페이지 테이블은 1K개의 페이지를 나타낼 수 있습니다. 즉, 페이지 테이블 한개로는 4G에 있는 모든 페이지를 저장할 수 없습니다.

 

따라서 이러한 여러 페이지테이블을 관리하기 위한 하나의 페이지 테이블이 또 존재합니다. 그것을 우리는 outer page table이라고 부릅니다. 

2계층 페이지 테이블

 

 

그렇다면 우리가 페이징에서 했던 Logical Address의 형식도 조금 변경될 필요가 있어보입니다.

이제는 어떠한 페이지가 

  1. outer page table의 어느 entry에 속하는 지
  2. page table의 어느 entry에 속하는지

 

이 두가지를 고려해야합니다. 또한 하나의 page table(outer page table, page table 모두)은 1024개의 entry를 저장하고 있으니 각 10비트가 필요하겠네요.

 

따라서 32비트 컴퓨터에서 12비트는 offset, 10비트는 outer page table number, 10비트는 real page table number를 저장하게 됩니다.

p1은 outer page taable, p2는 real page table의 entry 번호를 의미합니다.

 

 

자 그럼, 마지막으로 two level page table을 사용했을 때, logical address에서 physical  address로 찾아가는 과정을 확인해봅시다.

 

1. 가장 먼저 page table register base register에 outer page table의 index가 저장되어 있을 것입니다. 이것을 통해서 outer page table에 접근합니다.

 

2. logical address에서 outer page number가 2라고 되어있습니다. 따라서 outer page table의 엔트리 2번의 값인 29를 통해 우리는 29번 page table을 찾아갑니다.

 

3. logical address에서 real page number가 0입니다. 따라서 29번 page table에서 0번째 엔트리의 값인 3700을 메모리에 찾아가게 됩니다.

 

4. logical address에서 offset이 7입니다. 따라서, 메인 메모리의 3700번 frame에서 7만큼 떨어진 값인 7을 읽어옵니다. 그러면 해당 주소가 physical address가 될 것입니다.

 

 


지금까지 다계층 페이지 테이블에 대해서 알아봤습니다. 감사합니다.

'CS > OS' 카테고리의 다른 글

[운영체제] 페이지 교체  (0) 2023.12.09
[운영체제] TLB(Translation Lookaside Buffer)  (1) 2023.12.09
[운영체제] Demand Paging  (2) 2023.12.08
[운영체제] Virtual Memory  (1) 2023.12.08
[운영체제] Paging  (3) 2023.12.08