现在我正在学习操作系统中的内存管理
在分层页表结构中,如果有32位机器,则4KB
大小为page-size
,4B
大小为page-entry
。
为什么要将地址位划分为10-10-12
我知道20 - 12
,12
位是4kbyte -> 2^12的offset
值
但是为什么20位变成了10-10呢
11-9或者12-8是不可能的吗?
发布于 2017-05-06 09:16:15
因为它们使用的是两级页面表。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
https://stackoverflow.com/questions/43796666
复制相似问题