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 |