article thumbnail image
Published 2020. 6. 20. 22:03

 

53 bit Address space

8 KB Page

PTE는 8 byte 짜리

 

8 KB니까 뒤의 13 bit는 Offset 으로 사용한다.

 

8 KB = 13 bit

2^53 / 2^13 = 2^40

Linear Page Table을 만드려면 2^40 개의 PTE가 필요하다.

 

하나의 Page에 PTE가 몇 개까지 올 수 있냐에 따라서 비트가 쪼개진다.

Page 하나의 크기 = 8 KB

PTE 하나의 크기 = 8 byte

Page 하나에 PTE가 몇개가 들어갈 수 있나?

8 KB / 8 byte = 1K 개 = 2^10개의 PTE = 10bit

 

2^40개의 PTE를 페이지로 나누려면

하나의 페이지에는 2^10개의 PTE를 가질 수 있으므로

2^40 / 2^10 = 2^30 개 아직 남음

계속 나눠주면

 

10 + 10 + 10 + 10 + 13 = 53 bit address

 


 

4KB page니까 뒤의 12bit는 Offset 으로 사용한다. 2^12 = Offset 크기

2^48 / 2^12 = 2^36

36 bit가 남는다.

 

하나의 페이지에 PTE가 몇 byte가 들어가는가는 그림을 보고 알 수 있다.

그림을 보면 9bit를 사용함

 

Page / PTE = 4KB / □ byte = 9 bit 

2^12 / 2^9 = 8 byte

□ = 8

 

9 + 9 + 9 + 9 + 12 = 48 bit address

 

위의 Hierarchical Page Table 에서는

하나의  VPN을 trasnlate 하기 위해

CR3 부터 동그라미

각 level당 한 번의 memory access가 필요하다.

그래서 4번 access 해야 한다.


 


장점

하드웨어 구현이 간단하다. MMU 만들기가 쉽다.

단점 

Linear page table 보다는 복잡하다.


 

Virtual address 에 대한 Hash값을 찾아가는 것


프로세스가 달라지면 

 


 

Hierachical Address Translation 하려면

3-level : 3번 메모리 access

3배나 많은 값을 메모리 접근하는데 쓰인다.

너무 많다 !

 


Translate 한번 하면 결과값을 한번 적어보자

p를 translate 해서 f 가 나왔으면 TLB에다가 적어 놓는다.

무턱대고 Page Table 뒤지지 말고 TLB를 먼저 보고

내가 최근에 했으면 굳이 안 뒤져봐도 된다.

일일이 Translate 하지 않아도 된다.


프로세스가 동작하면서 TLB가 채워지는데

Context switch 돼서 프로세스가 바뀌면 Page Table도 바뀌고 TLB가 무효화된다.

TLB를 flush한다고도 한다.

그렇지 않으면 잘못된 매핑이 된다.

 

기껏 채워놨는데 다 비워야된다.

따라서 Context switch 할 때 overhead가 크다.


 

 


 

 


Virtual Address space는 Page로 쪼갠다.

Physical Address space는 Frame으로 쪼갠다.

Page Table을 통해서 Page를 Frame으로 매핑한다. Externel fragmantation이 사라지는 장점이 있다.

Page Table의 구성 : Linear, Hierachical

여러개 거치면 오래걸리니 TLB를 넣자.

Context switch하면 Page Table이 바뀌니 거기에 맞춰서 TLB를 flush를 해야 한다.

그것을 막아주기 위해 Process ID나 Address space ID를 TLB에 적어주면 전체를 flush 하지 않아도 된다.

'🚦 Server > Operating System' 카테고리의 다른 글

22. VM Features  (0) 2020.06.23
21. Demand Paging and VM Features  (0) 2020.06.21
19. Paging and Page Tables  (0) 2020.06.14
18. Address Spaces  (0) 2020.06.14
17. Deadlock  (0) 2020.06.11
복사했습니다!