我发现了一个明显的问题,它也是ServerFault 的大哥。
但我的问题完全不同:如果页面错误是操作系统需要从 SWAP 文件加载某些内容的时刻,为什么即使我已经完全停用它,我也会收到页面错误?
或者我误解了什么是页面错误?
您缺少的一点是页面错误不一定涉及交换文件。您还可以内存映射任意文件;也就是说,告诉操作系统使用给定文件的(一部分)支持内存区域。这意味着当程序访问该区域中尚未加载的内存页面时,它会从文件中的相应位置读取;并且当一个内存页被写入时(假设该区域是可写的),数据最终会被写回原始文件,而不是交换区。
在现代操作系统中,此技术用于加载(可执行文件和库的)可执行代码,因此即使没有交换文件,您也应该预期会发生读取错误。
有点旧,但请查看这篇MSDN 文章。
它描述了两种类型的页面错误。
硬故障就是您所想到的 - 这些是数据不在 RAM 中并且必须从交换文件中提取的地方。它们削弱了性能(比机械硬盘驱动器的 RAM 访问慢 10 000 倍)。
然而,软错误是由程序请求为零的页面(要求零页面)触发的,当页面第一次写入时(如果它是写入页面上的副本)或页面已经在内存中其他地方(通常在多个进程之间共享时)。这些对性能来说并不是那么糟糕。
因此,即使没有页面文件,您也可能会不断出现软页面错误。
| 归档时间: |
|
| 查看次数: |
1130 次 |
| 最近记录: |