来自斯蒂芬的回复和评论https://unix.stackexchange.com/a/289446/674:
在某些情况下,已标记为调出但尚未调出的数据。
分页确实会涉及访问磁盘,但这是另一个与页面错误无关的操作:有一个标记操作,一个单独的分页操作(尚未发生),以及导致内存被检索的页面错误(因此页面调出可能根本不会发生)。即使在(3)中,处理页面错误不涉及接触磁盘 (数据还不存在),所以这是一个轻微的页面错误。
“导致内存被检索的页面错误(因此页面调出可能根本不会发生)”是什么意思?
为什么页面调出可能根本不会发生?
为什么“处理页面错误不涉及接触磁盘”?
“已标记调出但尚未调出的数据”中尚未调出的原因是磁盘上还没有需要的数据吗?
谢谢。
答案1
关于您的第一个问题,页面调出涉及一页内存,该内存页(无论出于何种原因)不需要保留在物理内存中;但页面的删除不一定是即时的。如果在页面被确定为不必要的时间和实际页面调出的时间之间,页面错误导致页面再次“拉入”,则可以立即处理页面错误,而无需页面调入(因此它是次要的),并且由于主内存中现在再次需要有问题的页面,因此不应将其调出。
图书馆中的归还车可能会有所帮助。当您归还一本书时,它会被放置在购物车上,并且在某个时刻,整个购物车都会被拿走,并且其中包含的书籍会被放置在书架上。在您还书和将书放回书架之间,其他人可能会请求该书并从购物车中检索它,这比从书架上检索它要快......
关于您的第二个问题,这只是次要页面错误的定义:如果页面错误不涉及接触磁盘,则为次要错误,否则为主要错误。在示例中,处理页面错误并不涉及接触磁盘,因为页面在从内存中丢弃之前就被“捕获”了——这仍然是事实即使该页实际上已被写出到磁盘(“接触磁盘”与页出相关,而不是页错误)。
希望这能澄清事情!