天天看點

Q33:缺頁中斷

缺頁中斷

malloc()和mmap()等記憶體配置設定函數,在配置設定時隻是建立了程序虛拟位址空間,并沒有配置設定虛拟記憶體對應的實體記憶體。當程序通路這些沒有建立映射關系的虛拟記憶體時,處理器自動觸發一個缺頁異常。

缺頁中斷:

在請求分頁系統中,可以通過查詢頁表中的狀态位來确定所要通路的頁面是否存在于記憶體中。每當所要通路的頁面不在記憶體時,會産生一次缺頁中斷,此時作業系統會根據頁表中的外存位址在外存中找到所缺的一頁,将其調入記憶體。

缺頁中斷本身是一種中斷,與一般的中斷一樣,需要經過四個步驟進行處理:

1,保護CPU現場。

2,分析中斷原因。

3,轉入缺頁中斷程式進行處理。

4,恢複CPU現場,繼續執行。

但是缺頁中斷是由于所要通路的頁面不存在于記憶體時,由硬體所産生的一種特殊的中斷,是以,與一般的中斷存在差別:

1,在指令執行期間産生和處理缺頁中斷信号。

2,一條指令在執行期間,可能産生多次缺頁中斷。

3,缺頁中斷傳回的時,執行産生中斷的一條指令,而一般的中斷傳回的是,執行下一條指令。

繼續閱讀