Q33:缺頁中斷

缺頁中斷

malloc()和mmap()等內存分配函數,在分配時只是建立了進程虛擬地址空間,並沒有分配虛擬內存對應的物理內存。當進程訪問這些沒有建立映射關係的虛擬內存時,處理器自動觸發一個缺頁異常。

缺頁中斷:
在請求分頁系統中,可以通過查詢頁表中的狀態位來確定所要訪問的頁面是否存在於內存中。每當所要訪問的頁面不在內存時,會產生一次缺頁中斷,此時操作系統會根據頁表中的外存地址在外存中找到所缺的一頁,將其調入內存。

缺頁中斷本身是一種中斷,與一般的中斷一樣,需要經過四個步驟進行處理:
1,保護CPU現場。
2,分析中斷原因。
3,轉入缺頁中斷程序進行處理。
4,恢復CPU現場,繼續執行。

但是缺頁中斷是由於所要訪問的頁面不存在於內存時,由硬件所產生的一種特殊的中斷,因此,與一般的中斷存在區別:
1,在指令執行期間產生和處理缺頁中斷信號。
2,一條指令在執行期間,可能產生多次缺頁中斷。
3,缺頁中斷返回的時,執行產生中斷的一條指令,而一般的中斷返回的是,執行下一條指令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章