当一个页面错误异常升高,因为内容CPU试图访问还没有在存储器被加载,如何在OS定位在辅助存储器中的缺少的内容(例如硬盘)?

感谢提前你的解释。

-ivan

有帮助吗?

解决方案

短版本: 无效PTE的地址位将映射到辅助存储器(交换文件)中的偏移量。

更长的版本: 为了了解发生了什么那里,让我们对虚拟到物理地址的转换的工作非常快速回顾一下。我将讨论在x86平台上的答案。

在CR3处理器寄存器具有分配给点到页面目录的开始20位。 页目录项(PDE)的地址被用于将虚拟地址编码,这是页面表条目(PTE),其中PTE是指实际的物理页中的地址编码的下一个10个比特的阵列的顶部10比特题。最后12个比特的页面内的偏移。

当操作系统逐出从存储器的页中,PTE被标记为无效,并且PTE的地址位成为偏移到页面文件(回答您的原来的问题)。

它得到具有存储器映射文件稍微复杂,因为它们使用原型的PTE。

如果您有兴趣了解更多的信息,我强烈建议马克Russinovich的“Windows内部”的书。

其他提示

OS将定位与页错误,这除其它外,将有一个手柄到相关联的文件相关联的存储器映射结构。这将需要手柄,做数学题,找出偏移到该文件,然后发出读取。当读返回时,存储器管理器将其复制到RAM和标记,作为支持通过一个物理帧(实际RAM)页。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top