缺頁中斷處理過程

2021-08-31 23:33:30 字數 1455 閱讀 3457

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!

缺頁中斷就是要訪問的頁不在主存,需要作業系統將其調入主存後再進行訪問。當程序執行過程中發生缺頁中斷時,需要進行頁面換入,步驟如下:

<1> 首先硬體會陷入核心,在堆疊中儲存程式計數器。大多數機器將當前指令的各種狀態資訊儲存在cpu中特殊的暫存器中。

<2>啟動乙個彙編**例程儲存通用暫存器及其它易失性資訊,以免被作業系統破壞。這個例程將作業系統作為乙個函式來呼叫。

(在頁面換入換出的過程中可能會發生上下文換行,導致破壞當前程式計數器及通用暫存器中本程序的資訊)

<3>當作業系統發現是乙個頁面中斷時,查詢出來發生頁面中斷的虛擬頁面(程序位址空間中的頁面)。這個虛擬頁面的資訊通常會儲存在乙個硬體暫存器中,如果沒有的話,作業系統必須檢索程式計數器,取出這條指令,用軟體分析該指令,通過分析找出發生頁面中斷的虛擬頁面。

<4>檢查虛擬位址的有效性及安全保護位。如果發生保護錯誤,則殺死該程序。

<5>作業系統查詢乙個空閒的頁框(物理記憶體中的頁面),如果沒有空閒頁框則需要通過頁面置換演算法找到乙個需要換出的頁框。

<6>如果找的頁框中的內容被修改了,則需要將修改的內容儲存到磁碟上,此時會引起乙個寫磁碟呼叫,發生上下文切換(在等待磁碟寫的過程中讓其它程序執行)。

(注:此時需要將頁框置為忙狀態,以防頁框被其它程序搶占掉)

<7>頁框乾淨後,作業系統根據虛擬位址對應磁碟上的位置,將保持在磁碟上的頁面內容複製到「乾淨」的頁框中,此時會引起乙個讀磁碟呼叫,發生上下文切換。

<8>當磁碟中的頁面內容全部裝入頁框後,向作業系統傳送乙個中斷。作業系統更新記憶體中的頁表項,將虛擬頁面對映的頁框號更新為寫入的頁框,並將頁框標記為正常狀態。

<9>恢復缺頁中斷發生前的狀態,將程式指令器重新指向引起缺頁中斷的指令。

<10>排程引起頁面中斷的程序,作業系統返回彙編**例程。

<11>彙編**例程恢復現場,將之前儲存在通用暫存器中的資訊恢復。

其實缺頁中斷的過程涉及了使用者態和核心態之間的切換,虛擬位址和物理之間的轉換(這個轉換過程需要使用mmu和tlb),同時涉及了核心態到使用者態的轉換。

給我老師的人工智慧教程打call!

中斷處理過程

部分摘自 中斷 所謂中斷就是指cpu在正常執行程式的時候,由於內部 外部事件的出發 或由程式預先設定而引起cpu暫時中止當前正在執行的程式,儲存被執行程式相關資訊到棧中,轉而去執行為內部 外部事件 或由程式預先設定的事件的中斷服務子程式,待執行完中斷服務子程式後,cpu再獲取被儲存在棧中被中斷的程式...

中斷及中斷處理過程

1.中斷和異常的概念區別 intel的官方文件裡將中斷和異常理解為兩種中斷當前程式執行的不同機制。這是中斷和異常的共同點。不同點在於 中斷 interrupt 是非同步的事件,典型的比如由i o裝置觸發 異常 exception 是同步的事件,典型的比如處理器執行某條指令時發現出錯了等等。中斷又可以...

中斷及中斷處理過程

from 中斷及中斷處理過程 1.中斷和異常的概念區別 intel的官方文件裡將中斷和異常理解為兩種中斷當前程式執行的不同機制。這是中斷和異常的共同點。不同點在於 中斷 interrupt 是非同步的事件,典型的比如由i o裝置觸發 異常 exception 是同步的事件,典型的比如處理器執行某條指...