关于小页面错误的问题

Tim*_*Tim 3 linux virtual-memory

来自斯蒂芬在https://unix.stackexchange.com/a/289446/674 上的回复和评论:

在某些情况下,已标记为要调出但尚未调出的数据。

调出确实涉及访问磁盘,但这是另一个与页面错误无关的操作:有一个标记操作,一个单独的调出操作(尚未发生),以及页面错误导致内存被检索(因此页面出可能根本不会发生)。即使在 (3) 中,处理页面错误也不涉及接触磁盘 (数据尚未存在),因此它是次要页面错误。

  1. “导致内存被检索的页面错误(因此页面输出可能根本不会发生)”是什么意思?

    为什么页面出可能根本不会发生?

  2. 为什么“处理页面错误不涉及接触磁盘”?

    “已标记为调出但尚未调出的数据”中尚未调出的原因是所需的数据尚未在磁盘上吗?

谢谢。

Ste*_*itt 6

关于您的第一个问题,页出涉及不需要保留在物理内存中的内存页(无论出于何种原因);但页面的删除不一定是即时的。如果在确定页面不必要的时间和实际调出页面的时间之间,缺页错误导致页面再次“拉入”,那么可以立即处理缺页错误而无需换页(因此它是次要),并且由于现在需要在主内存中再次使用有问题的页面,因此不应将其调出。

一个可能有帮助的类比是图书馆中的退货车。当您归还一本书时,它会被放置在手推车上,并且在某个时候整个手推车都会被拿走,它所装的书会被放置在书架上。在你归还书和书被归还到书架之间,其他人可能会请求书并从购物车中取书,这比从书架取书要快……

关于您的第二个问题,它只是次要页面错误的定义:如果页面错误不涉及触摸磁盘,则为次要错误,否则为主要错误。在这个例子中,处理页面错误不涉及接触磁盘,因为页面在从内存中被丢弃之前被“捕获”——即使页面实际上已经写出到磁盘(“接触磁盘”),这仍然是正确的" 然后与页出有关,而不是页错误)。

希望这能澄清事情!