공부하면서 정리하는 거라서 틀린 내용이 있을 수 있습니다.
댓글로 피드백 주시면 감사합니다!
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을 유발할 것임.
'시스템' 카테고리의 다른 글
[시스템 프로그래밍] exit / fork / wait / execve (1) | 2023.03.22 |
---|---|
[시스템 프로그래밍] error handling wrapper / pid / process states (0) | 2023.03.15 |
[시스템 프로그래밍] Process와 Context Switching (0) | 2023.03.14 |
[시스템 프로그래밍] Exceptional control flow의 종류 (0) | 2023.03.09 |
[pintos_project1&2] system call의 흐름 연결 (0) | 2022.10.28 |