2
现在我正在学习内存管理OS分层页表
在分层页表结构,如果有32位机,page-size
4KB
和page-entry
大小4B
。
为什么地址位分成10-10-12
我知道20 - 12
,12
位是offset
值由4K字节 - > 2^12
但为什么20个比特变成10-10
是它不可能11-9或12-8?
现在我正在学习内存管理OS分层页表
在分层页表结构,如果有32位机,page-size
4KB
和page-entry
大小4B
。
为什么地址位分成10-10-12
我知道20 - 12
,12
位是offset
值由4K字节 - > 2^12
但为什么20个比特变成10-10
是它不可能11-9或12-8?
因为他们正在使用两级页表。 20-12
将只使用1级页表并消耗内存。
前10位(0-9)
是PGDIR
中的对应条目。该条目将指向一个页表,在该页表中,您将访问对应于第二个10位的条目。 (10-19)
。
动机:
考虑开销来存储所有需要的页表以维护一个进程。
#pages * size_entry
= 2^20 * 4 = 4MB
这是很多!
但是,如果我们使用了第一级页表,它有1024个条目,每个指向额外的1024个页表?就像以前那样是1024 * 1024 = 1M条目。
现在的内存开销是多少? 1K * 4 + 1 * 4 = 4KB + 4B = 4KB