页缺失

✍ dations ◷ 2025-11-21 12:55:15 #计算机错误,虚拟内存

页缺失(英语:Page fault,又名硬错误、硬中断、分页错误、寻页缺失、缺页中断、页故障等)指的是当软件试图访问已映射在虚拟地址空间中,但是目前并未被加载在物理内存中的一个分页时,由中央处理器的内存管理单元所发出的中断。

通常情况下,用于处理此中断的程序是操作系统的一部分。如果操作系统判断此次访问是有效的,那么操作系统会尝试将相关的分页从硬盘上的虚拟内存文件中调入内存。而如果访问是不被允许的,那么操作系统通常会结束相关的进程。

虽然其名为“页缺失”错误,但实际上这并不一定是一种错误。而且这一机制对于利用虚拟内存来增加程序可用内存空间的操作系统(比如Microsoft Windows和各种类Unix系统)中都是常见且有必要的。

微软在较新版Windows的资源监视器中使用“硬错误”(Windows Vista及以上)、“硬中断”(Windows 8及以上)这一术语来指代“页缺失”。

软性页缺失指页缺失发生时,相关的页已经被加载进内存,但是没有向MMU注册的情况。操作系统只需要在MMU中注册相关页对应的物理地址即可。

发生这种情况的可能性之一,是一块物理内存被两个或多个程序共享,操作系统已经为其中的一个装载并注册了相应的页,但是没有为另一个程序注册。

可能性之二,是该页已被从CPU的工作集中移除,但是尚未被交换到磁盘上。比如OpenVMS这样的使用次级页缓存的系统,就有可能会在工作集过大的情况下,将某页从工作集中去除,但是不写入硬盘也不擦除(比如说这一页被读出硬盘后没被修改过),只是放入空闲页表。除非有其他程序需要,导致这一页被分配出去了,不然这一页的内容不会被修改。当原程序再次需要该页内的数据时,如果这一页确实没有被分配出去,那么系统只需要重新为该页在MMU内注册映射即可。

与软性页缺失相反,硬性页缺失是指相关的页在页缺失发生时未被加载进内存的情况。这时操作系统需要:

硬性页缺失导致的性能损失是很大的。以一块7200rpm的主流机械硬盘为例,其平均寻道时间为8.5毫秒,读入内存需要0.05毫秒。相对的,DDR3内存的访问延迟通常在数十到100纳秒之间,性能差距可能会达到8万到22万倍。

另外,有些操作系统会将程序的一部分延迟到需要使用的时候再加载入内存执行,以此来提升性能。这一特性也是通过捕获硬性页缺失达到的。

当硬性页缺失过于频繁的发生时,称发生系统颠簸。

当程序访问的虚拟地址是不存在于虚拟地址空间内的时候,则发生无效页缺失。一般来说这是个软件问题,但是也不排除硬件可能,比如因为内存故障而损坏了一个正确的指针。

具体动作与所使用的操作系统有关,比如Windows会使用异常机制向程序报告,而类Unix系统则会使用信号机制。如果程序未处理相关问题,那么操作系统会执行默认处理方式,通常是转储内存、终止相关的程序,然后向用户报告。

相关

  • 奥斯卡·闵考斯基奥斯卡·闵可夫斯基(Oskar Minkowski 1858年1月13日-1931年7月18日)德国生物化学家、布雷斯劳大学教授,胰岛素的发现者。数学家赫尔曼·闵可夫斯基的哥哥、天天物理学家鲁道夫·
  • 信德信德省(信德语:سنڌ;乌尔都语:سندھ‎‎;Sindh)位于南亚次大陆的西南角、巴基斯坦东南部,印度河下游,是巴基斯坦四个省份之一,以面积计排行第三。东邻印度,南邻阿拉伯海,西边与伊
  • 台39线台39线 高铁桥下台南段道路,为中华民国(台湾)沿台湾高铁高架桥下两侧用地辟建之省道。北起台南市新化区台20线,南至高雄市阿莲区台28线。
  • 拜尔斯道夫拜尔斯道夫股份公司(德语:Beiersdorf AG)是一家公开上市的从事国际化经营的制成品康采恩,总部设于德国汉堡。其多数股份由赫茨家族(德语:Herz (Familie))所控股的马克西恩维斯特股
  • 吉咖字节吉字节(英语:Gigabyte,缩写为GB),又称吉咖字节、京字节或戟,是一种十进制的信息计量单位。吉字节(Gigabyte)常容易和二进制的信息计量单位Gibibyte混淆。常使用在标示硬盘、存储器等
  • 480i480i是一种影片格式的缩写。字母i表示隔行扫描,数字480表示垂直方向有480条扫描线。通常水平分辨率为640 像素,纵横比为4:3,即标准清晰度电视(SDTV)。频率通常为60fps,常表示为480
  • 坎伯兰河坎伯兰河(英语:Cumberland River)是美国南部的一条重要河流,长约688-英里(1,107-千米),流域面积约18,000平方英里(47,000平方千米),源头位于阿巴拉契亚山脉,自西向东流过肯塔基州南部和
  • 1947年国家安全法1947年国家安全法案(英语:National Security Act of 1947)是第二次世界大战后美国政府在军事和情报体系做出的重大战略调整。该法案由第80届国会制定,1947年3月3日,时任参议院军
  • 上第尔县上第尔县是巴基斯坦西北边境省所辖的一个县。该县面积3,699平方公里,人口575,858(1998年)。县治所在地为第尔。该县成立于1996年,由原第尔县析置。上第尔县分为6个乡,包含31个
  • 奥斯卡·鲍曼奥斯卡·鲍曼(Oscar Baumann;1864年6月25日-1899年10月12日)出生于维也纳,是奥地利的一位地图制作者,对人种学感兴趣。1885年的参加奥地利探险队到刚果盆地的远征,但因身体原因提前