출처: https://3months.tistory.com/307 [Deep Play]

3-2/운영체제

Advanced Page Tables

코딩하는 랄뚜기 2021. 10. 22. 08:30

Paging : Linear Tables

32-bit address를 space를 사용하고 4KB의 page table을 사용한다면 Page table의 크기는 2^32/2^12*32=4MByte의 크기를 차지하게 된다. 이 page table의 크기는 너무 크다.

Page size의 크기를 늘린다면 어떻게 될까? page table은 1MB로 줄어들게 되지만 page frame 안에서의 공간이 남아돌기 때문에 internel fragmentation이 발생한다.

또 각각의 page table이 linear하기 때문에, 언제 사용될지 모르는 낭비되는 공간이 발생하게 된다.


Hybrid Approach : Paging and Segment

Page Table에서 저렇게 남는 공간이 있는 걸 어떻게 해결 할 수 있을까,,

Segment는 code, heap, stack이 서로의 영역을 침범하지 않게 만든 것인데 왜 fragment를 해결하는 부분에서 나오는지 모르겠다.

Segment를 사용해도 결국 fragment를 해결 못하는건 당연하다.(physical memory에서 segment를 사용했을 때 발생하는 fragment를 해결하기 위해 나온것이 page 니까)


Multi-level Page Table : Page directory

page table에서 발생하는 fragment를 최소화하고자 만든 것이 page directory인데 그냥 간단하게 말해서

page directory는 page table의 page table이다.

'3-2 > 운영체제' 카테고리의 다른 글

Swapping Policies  (0) 2021.11.08
Swapping Mechanisms  (0) 2021.11.08
Translation Lookaside Buffer  (0) 2021.10.21
Introduction to Paging  (0) 2021.10.08
Segmentation  (0) 2021.10.08