2017-05-05 95 views
2

现在我正在学习内存管理OS分层页表

在分层页表结构,如果有32位机,page-size4KBpage-entry大小4B

为什么地址位分成10-10-12

我知道20 - 1212位是offset值由4K字节 - > 2^12

但为什么20个比特变成10-10

是它不可能11-9或12-8?

回答

1

因为他们正在使用两级页表。 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