본문 바로가기

시스템

[OS_Memory] VPN&offset 계산 기초

공부하면서 정리하는 거라서 틀린 내용이 있을 수 있습니다.

댓글로 피드백 주시면 감사합니다!


1. Logical Address Format = VPN + Offset이다. logical addr는 32bit, page size가 4K일때, VPN은 몇 bit?

page size가 4KB란... 2^12Bytes다.

한 page, frame의 size가 2^12Bytes라는 것은

그 이유나 원리는 모르겠지만.... 왜 byte->bit??

그 page를 표현하기 위해서 12bit가 필요하다는 걸 의미한다.

즉 logical addr 상에서 offset이 12bit를 차지한다는 것.

따라서 VPN = 32 - 12 = 20bit다.

VPN이 20bit라는 것은 page가 2^20개 존재한다는 뜻이다.

즉 page가 1M개.

 

2. 32bits address space with 4KB pages and 4bytes page-table entry. 이때 page table size는?

logical addr가 32bit구나!!

page하나가 4KB = 2^12 Bytes 다. 즉 offset이 12bit, vpn이 20bit.

page table size = page table entry개수 * page table entry 크기 가 될 것이므로,

page table entry 개수를 구해보자.

vpn이 20bit라는 것은 page개수가 2^20개라는 것이다.

그럼 page table entry가 2^20개!!

따라서 page table size = 2^20 * 4bytes = 2^22bytes = 4MB다. 

-> page table이 너무 크다.

 

3. 32bits address space with 16KB pages and 4bytes page-table entry. 이때 page table size는?

2번보다 page 하나의 크기가 커졌다. 

page크기가 16KB = 2^14Bytes 라는 것은 표현하는데에 14자리가 필요하다는 것으로, offset은 14bits 가 된다.

vpn = 32 - 14 = 18bit를 차지하고, page개수가 2^18개라는 걸 알 수 있다.

따라서 page table size = 2^18 * 4bytes = 2^20bytes = 1MB

-> page 하나의 크기를 키움으로써 page table은 4배 작아졌다. 

하지만 page 하나가 커진 것은 internal fragmentation을 유발할 것임.