您現在的位置是:首頁 >要聞 > 2024-01-22 04:30:40 來源:
缺頁中斷是內中斷還是外中斷(缺頁中斷)
大家好,我是小夏,我來為大家解答以上問題。缺頁中斷是內中斷還是外中斷,缺頁中斷很多人還不知道,現在讓我們一起來看看吧!
1、缺頁中斷發生時的事件順序如下:
2、1) 硬件陷入內核,在堆棧中保存程序計數器。大多數機器將當前指令的各種狀態信息保存在特殊的CPU寄存器中。
3、2) 啟動一個匯編代碼例程保存通用寄存器和其他易失的信息,以免被操作系統破壞。這個例程將操作系統作為一個函數來調用。
4、3) 當操作系統發現一個缺頁中斷時,嘗試發現需要哪個虛擬頁面。通常一個硬件寄存器包含了這一信息,如果沒有的話,操作系統必須檢索程序計數器,取出這條指令,用軟件分析這條指令,看看它在缺頁中斷時正在做什么。
5、4) 一旦知道了發生缺頁中斷的虛擬地址,操作系統檢查這個地址是否有效,并檢查存取與保護是否一致。如果不一致,向進程發出一個信號或殺掉該進程。如果地址有效且沒有保護錯誤發生,系統則檢查是否有空閑頁框。如果沒有空閑頁框,執行頁面置換算法尋找一個頁面來淘汰。
6、5) 如果選擇的頁框“臟”了,安排該頁寫回磁盤,并發生一次上下文切換,掛起產生缺頁中斷的進程,讓其他進程運行直至磁盤傳輸結束。無論如何,該頁框被標記為忙,以免因為其他原因而被其他進程占用。
7、6) 一旦頁框“干凈”后(無論是立刻還是在寫回磁盤后),操作系統查找所需頁面在磁盤上的地址,通過磁盤操作將其裝入。該頁面被裝入后,產生缺頁中斷的進程仍然被掛起,并且如果有其他可運行的用戶進程,則選擇另一個用戶進程運行。
8、7) 當磁盤中斷發生時,表明該頁已經被裝入,頁表已經更新可以反映它的位置,頁框也被標記為正常狀態。
9、8) 恢復發生缺頁中斷指令以前的狀態,程序計數器重新指向這條指令。
10、9) 調度引發缺頁中斷的進程,操作系統返回調用它的匯編語言例程。
11、10) 該例程恢復寄存器和其他狀態信息
本文到此講解完畢了,希望對大家有幫助。