Memory

驅逐記憶體中的磁碟記憶體

  • March 4, 2016

假設 RAM 被 100% 使用,一些被磁碟記憶體使用,一些被應用程序使用。有大量的交換(在可用的硬碟上)。如果 Linux 決定驅逐包含應用程序數據的頁面,它將被移動到交換空間。

但是,如果 Linux 決定逐出 RAM 中包含記憶體磁碟數據的頁面,它是將該頁面移動到交換位置,還是簡單地刪除它?

TL;DR 如果頁面是用於磁碟讀取的記憶體,則它永遠不會進行交換。

您的問題表明您已經知道交換是如何工作的(或者更確切地說 - 虛擬記憶體是如何工作的)。現在了解磁碟記憶體的簡單關鍵步驟是注意它的處理方式完全相同。沒有“應用程序數據”和“磁碟記憶體”,它只是一個單一的虛擬記憶體機制。

每個頁面都由永久儲存支持:除了將頁面聲明為“磁碟記憶體”之外,還可以聲明“此頁面受 /var/spool/mail/root 支持”。除了將頁面聲明為“應用程序記憶體”之外,您還可以聲明“此頁面受交換空間支持”(也稱為“它是匿名的”=任何命名文件都不支持它)。

如果頁面是臟的,則需要將其保存到自己的永久儲存中 - 如果它是命名文件或交換空間,則獨立。如果頁面不是臟的,根據定義,這意味著完全相同的字節已經在頁面的永久儲存中。無需做任何事情——作業系統可以在它認為合適的任何時候重新使用這個頁面。

我在這裡所說的“被支持”屬性人們大多稱之為記憶體映射,而我在這裡描述的實際上是如何mmap工作的。

引用自:https://unix.stackexchange.com/questions/267552