现在我正在学习操作系统中的内存管理
在分层页表结构中,如果有 32 位机器4KB
,page-size
则为4B
大小page-entry
。
为什么地址被划分为10-10-12
我知道20 - 12
,12
位是offset
4kbyte -> 2^12
但是为什么 20 位变成 10-10
11-9或12-8不可能吗?
现在我正在学习操作系统中的内存管理
在分层页表结构中,如果有 32 位机器4KB
,page-size
则为4B
大小page-entry
。
为什么地址被划分为10-10-12
我知道20 - 12
,12
位是offset
4kbyte -> 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