阅读:1789回复:2
关于“共享页表”(Prototype Page Tables)的一些疑惑。
NT上采用单段式分页存储机制,线性地址到物理地址的转换是通过
二级页表的查找来实现的,共享代码和数据是通过不同的页表项 (Page Table Entry,即PTE)指向相同的物理地址来实现的。比如 Kernel32.dll的一个代码页可能会有很多个PTE指向它。如果这一页 被换到Pagefile中,系统将同时维护所有的这些PTE,为了较小系统 开销,NT引入Prototype Page Table(记PPT),一个共享页由PPT中的 一个Entry指向,而PTE的Entry则指向PPT。这样,如有换页,系统 只需维护PPT就够了。 问题是,这样一来,线性地址到物理地址的转换就需要了三级查找, 而CPU支持的只是二级查找,这样只能找到PPT的物理地址,而非需要 的共享页的物理地址。 谁能帮我解释清楚这个问题。谢谢! |
|
沙发#
发布于:2001-07-23 08:23
我没有研究过这个问题,不过我想,中间过程应该是软件实现的,硬件上段地址的高端描述符内容还是应该是三级页表对应的内容吧
|
|
板凳#
发布于:2001-07-19 15:57
这个问题我已经解决,参见Inside Windows 2000 chapter 7
Page Fault Handling |
|