Memory 是否每个页面错误都有磁盘访问?

Memory 是否每个页面错误都有磁盘访问?,memory,virtual-memory,fragmentation,page-fault,Memory,Virtual Memory,Fragmentation,Page Fault,我的问题是(如上所述),是否每次出现页面错误时都可以访问磁盘/虚拟内存 如果没有,在什么情况下没有磁盘访问 (这是关于分页的一般性问题,不依赖于实现) 谢谢在某些情况下,页面错误不会触发磁盘访问 页面错误是当进程请求MMU(内存管理单元)未映射到物理页面的虚拟地址时触发的异常。如果页面未驻留在物理内存(RAM)中的任何位置,虚拟地址有效,并且需要备份存储(即磁盘)中存在的页面数据,则页面错误处理程序将触发对磁盘的访问。这种情况通常被归类为硬页面错误或主要页面错误 在次要页面错误或软页面错误期间,

我的问题是(如上所述),是否每次出现页面错误时都可以访问磁盘/虚拟内存

如果没有,在什么情况下没有磁盘访问

(这是关于分页的一般性问题,不依赖于实现)


谢谢

在某些情况下,页面错误不会触发磁盘访问

页面错误是当进程请求MMU(内存管理单元)未映射到物理页面的虚拟地址时触发的异常。如果页面未驻留在物理内存(RAM)中的任何位置,虚拟地址有效,并且需要备份存储(即磁盘)中存在的页面数据,则页面错误处理程序将触发对磁盘的访问。这种情况通常被归类为硬页面错误主要页面错误

次要页面错误软页面错误期间,MMU不会将请求的物理页面映射到进程的虚拟地址空间中,但由于以下几个可能的原因,不需要访问磁盘:

  • 该页可以驻留在物理内存中,即使它没有被进程映射。该页可能是共享内存的一部分,并由另一个进程映射,或者该页当前无法由任何进程映射,但在物理内存中,尚未写入磁盘或擦除

    某些操作系统具有在给定时间为进程映射的页面数量的概念,并将对可作为工作集一部分的页面数量设置上限。当确定进程的工作集增长过大,但在空闲页列表中保持未修改的时间足以再次请求和映射时,可以从进程的工作集中删除页

  • 页面错误也可能是一个需求零错误-a可以通过在物理内存中分配一个空闲页面并将其内容设置为所有0来满足,因此无需访问磁盘

如果请求的地址不是虚拟地址空间的一部分,也可能触发页面错误,通常称为无效页面错误。例如,如果进程试图引用空指针,页面错误处理程序通常会触发分段错误。(无效页面错误不一定总是由于页面保护冲突而发生——这只是一个例子)

(我引用了这篇文章,并推荐它作为对页面错误的简明介绍!)