• 您現在的位置是:首頁 >要聞 > 2024-01-22 04:30:40 來源:

    缺頁中斷是內中斷還是外中斷(缺頁中斷)

    導讀 大家好,我是小夏,我來為大家解答以上問題。缺頁中斷是內中斷還是外中斷,缺頁中斷很多人還不知道,現在讓我們一起來看看吧!1、缺頁中斷...

    大家好,我是小夏,我來為大家解答以上問題。缺頁中斷是內中斷還是外中斷,缺頁中斷很多人還不知道,現在讓我們一起來看看吧!

    1、缺頁中斷發生時的事件順序如下:

    2、1) 硬件陷入內核,在堆棧中保存程序計數器。大多數機器將當前指令的各種狀態信息保存在特殊的CPU寄存器中。

    3、2) 啟動一個匯編代碼例程保存通用寄存器和其他易失的信息,以免被操作系統破壞。這個例程將操作系統作為一個函數來調用。

    4、3) 當操作系統發現一個缺頁中斷時,嘗試發現需要哪個虛擬頁面。通常一個硬件寄存器包含了這一信息,如果沒有的話,操作系統必須檢索程序計數器,取出這條指令,用軟件分析這條指令,看看它在缺頁中斷時正在做什么。

    5、4) 一旦知道了發生缺頁中斷的虛擬地址,操作系統檢查這個地址是否有效,并檢查存取與保護是否一致。如果不一致,向進程發出一個信號或殺掉該進程。如果地址有效且沒有保護錯誤發生,系統則檢查是否有空閑頁框。如果沒有空閑頁框,執行頁面置換算法尋找一個頁面來淘汰。

    6、5) 如果選擇的頁框“臟”了,安排該頁寫回磁盤,并發生一次上下文切換,掛起產生缺頁中斷的進程,讓其他進程運行直至磁盤傳輸結束。無論如何,該頁框被標記為忙,以免因為其他原因而被其他進程占用。

    7、6) 一旦頁框“干凈”后(無論是立刻還是在寫回磁盤后),操作系統查找所需頁面在磁盤上的地址,通過磁盤操作將其裝入。該頁面被裝入后,產生缺頁中斷的進程仍然被掛起,并且如果有其他可運行的用戶進程,則選擇另一個用戶進程運行。

    8、7) 當磁盤中斷發生時,表明該頁已經被裝入,頁表已經更新可以反映它的位置,頁框也被標記為正常狀態。

    9、8) 恢復發生缺頁中斷指令以前的狀態,程序計數器重新指向這條指令。

    10、9) 調度引發缺頁中斷的進程,操作系統返回調用它的匯編語言例程。

    11、10) 該例程恢復寄存器和其他狀態信息

    本文到此講解完畢了,希望對大家有幫助。

  • 成人app