2013-05-02 73 views
-2

當物理內存被進程完全佔用並引入新進程(類似優先級)時會發生什麼情況。內存管理單元如何處理新舊進程所請求的頁面(資源)(相同的優先級任務)。與物理內存地址處理有關的MMU

所以我的意思是要問,如何爲類似的優先級進程和物理內存的交換完成另一邊。請用一個例子來解釋一下?

+0

MMU不處理這個 - 它不配置它自己。而是由操作系統來完成分配,並配置MMU來實現它們。如果配置了交換,頁面可能會從RAM移動到磁盤。否則,操作系統可能會錯誤地請求進程,或者一些可能被配置爲關閉某些不太關鍵的進程以獲得更多空閒內存。 – 2013-05-02 19:25:14

+3

我認爲你將CPU的MMU與Linux內核虛擬內存管理器混淆在一起。 – tadman 2013-05-02 19:28:51

回答

3

你不應該在乎這種情況,在當前的Linux桌面上這是一個不可能的情況(因爲通常內核從文件系統緩存中竊取頁面)。

當一個新的程序開始與execve(2)系統調用,新的內存映射設置了copy-on-write機制(好像幾乎被mmap(2)完成),可能。一旦程序訪問它們,內核就會發生頁面錯誤並最終將頁面加載到物理RAM中。它可能必須選擇應該竊取哪些頁面。如果它們很髒,則必須將它們寫入某個交換區域(或者如果映射爲MAP_SHARED,則將其寫入某個mmap -ed文件)。否則,它只是重用它們(並重新分配物理頁面)。

如果使用的內存資源,memory overcommit可能發生

MMUvirtual memory管理使用的linux kernel。應用程序在某些虛擬address space上進行查看(查看/proc/,例如使用cat /proc/self/maps來了解它)。

MMU正在執行虛擬到物理地址轉換,並導致頁面錯誤。內核負責配置MMU(即設置虛擬地址空間轉換機制)和處理頁面錯誤(這對應用程序來說通常是不可見的 - 例如,因爲內核會從磁盤,文件系統或交換中獲取頁面區域 - 除了當訪問「不存在」頁面時發生的SIGSEGV信號)。

請花些時間閱讀此處給出的所有鏈接。

+0

所以根據你MMU不執行的活動,它是由內核來解決內存問題..謝謝你的解決方案.. :) – 2013-05-02 19:39:18

+1

我不明白你認爲哪個「活動」MMU正在執行。 – 2013-05-02 20:01:30

相關問題