Swap

在沒有交換的情況下如何管理分頁?

  • January 4, 2011

在沒有交換的情況下如何管理分頁。如果是這種情況,將如何管理頁面錯誤?

我的意思是,如果沒有可用的交換,那麼如何管理分頁。我知道會有兩個頁面列表——free_pages 列表和allocated_pa​​ges 列表。當 free_pages 列表中的頁面變低時,它會將 LRU 頁面從allocated_pa​​ges 列表移動到交換分區。我只想知道如果沒有交換分區會發生什麼。

據我了解您的問題通常以這種方式發生:

如果分配記憶體:

  • 將記憶體標記為已分配但不分配物理記憶體(因此在訪問時會出現頁面錯誤)。在 Linux 中它會在這個階段停止,但係統可能會立即分配物理空間 - 然後它在最後執行與頁面錯誤類似的算法,只是不會發生 OOM。

如果存在頁面錯誤(訪問未映射的頁面)

  1. 檢查是否分配了記憶體,如果沒有則返回錯誤。
  2. 檢查是否有空閒的物理頁面。如果有 goto 5
  3. 檢查是否有可以寫回磁碟的部分(如記憶體中的文件)或交換是否有可用空間(如果沒有交換,則將其視為大小為 0 的交換)。如果有將文件/塊寫回磁碟或將頁面寫入磁碟,則取消映射並轉到 5。如果兩者都可以,請選擇任何一個。
  4. 返回 OOM 條件。這取決於核心會發生什麼——它可能會向使用者顯示錯誤、核心恐慌/藍屏、找到一些要殺死的程序等。
  5. 將導致問題的頁面映射到已釋放頁面。如果頁面被交換,則從交換中讀取頁面並將其放入頁面中。如果頁面由文件讀取文件支持並將內容放在那裡。

一般來說,您可能會說沒有交換等同於完全交換。

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