Linux的中斷和異常掃盲筆記

2021-09-23 19:19:30 字數 1877 閱讀 7075

所謂中斷是指cpu對系統發生的某個事件作出的一種反應,讓cpu暫時停止當前程式的執行轉而執行處理新情況的程式和執行過程:cpu在遇到某個事件時,暫停正在執行的程式,保留現場後自動地轉去執行相應的處理程式,處理完該事件後再返回斷點繼續執行被「打斷」的程式。事實上cpu對於中斷和異常的具體處理機制本質上是完全一致的

即在程式執行過程中,系統出現了乙個必須由cpu立即處理的情況,此時,cpu暫時中止程式的執行轉而處理這個新的情況的過程就叫做中斷。

廣義的中斷包含非同步中斷同步中斷。同步中斷又稱為異常(exception),非同步中斷則被稱為中斷(interrupt)。我們通常講的中斷指的都是非同步中斷。

外部中斷,就是通常所講的「中斷」(interrupt),狹義中斷。對於執行程式來說,這種「中斷」的發生完全是非同步的,因為不知道什麼時候會發生。cpu對其的響應也完全是被動的,但是可以遮蔽掉

非同步中斷是指由其他硬體裝置依照 cpu 時鐘訊號隨機產生,即意味著中斷能夠在指令之間發生,例如鍵盤中斷。

非同步中斷可分為可遮蔽中斷(maskable interrupt)和非遮蔽中斷(nomaskable interrupt)。

型別原因非同步/同步返回行為

中斷來自i/o裝置的訊號

非同步總是返回到下一條指令

在intel的手冊中,非同步中斷被稱之為異常。

異常可分為故障(fault)、陷阱(trap)、終止(abort)三類。

型別原因非同步/同步返回行為

陷阱有意的異常

同步總是返回到下一條指令

故障潛在可恢復的錯誤

同步返回到當前指令

終止不可恢復的錯誤

同步不會返回

軟中斷是通訊程序之間用來模擬硬中斷的一種訊號通訊方式。是屬於一種程式設計手段,也有稱之為軟中斷通訊機制。

硬中斷一般就是指的硬體中斷,也就是常說的中斷,由硬體觸發。

資料到達網絡卡;

網絡卡產生乙個中斷給核心;

核心使用i/o指令,從網絡卡i/o區域中去讀取資料;

當系統返現除零時,會丟擲異常,如果程式不處理這個異常,那麼作業系統將發出乙個非同步訊號終止當前執行的程式。

當作業系統發現乙個缺頁中斷時,嘗試發現需要哪個虛擬頁面。通常乙個硬體暫存器包含了這一資訊,如果沒有的話,作業系統必須檢索程式計數器,取出這條指令,用軟體分析這條指令,看看它在缺頁中斷時正在做什麼。

一旦知道了發生缺頁中斷的虛擬位址,作業系統檢查這個位址是否有效,並檢查訪問與保護是否一致。如果不一致,向程序發出乙個訊號或殺掉該程序。如果位址有效且沒有保護錯誤發生,系統則檢查是否有空閒頁框。如果沒有空閒頁框,執行頁面置換演算法尋找乙個頁面來淘汰。

一旦頁框「乾淨」後(無論是立刻還是在寫回磁碟後),作業系統查詢所需頁面在磁碟上的位址,通過磁碟操作將其裝入。該頁面被裝入後,產生缺頁中斷的程序仍然被掛起,並且如果有其他可執行的使用者程序,則選擇另乙個使用者程序執行。

當磁碟中斷發生時,表明該頁已經被裝入,頁表已經更新可以反映它的位置,頁框也被標記為正常狀態。此時,cpu恢**生缺頁中斷指令以前的狀態,程式計數器重新指向這條指令。

產生的位置發生的時刻時序

中斷cpu外部

隨機非同步

異常cpu內部

一條指令終止後同步

Linux核心 異常和中斷的區別

相信大家都知道非常著名的兩個名詞 異常和中斷,不過,你真的理解這兩個名詞在說什麼嗎?它們之間有什麼區別呢?1.中斷 大家都知道,當我們在敲擊鍵盤的同時就會產生中斷,當硬碟讀寫完資料之後也會產生中斷,所以,我們需要知道,中斷是由硬體裝置產生的,而它們從物理上說就是電訊號,之後,它們通過中斷控制器傳送給...

中斷和異常

中斷和異常 中斷訊號的處理方式 分緊急部分和不緊急部分 中斷處理 必須能夠重入,以便能夠中斷巢狀 中斷和異常的產生 乙個irq interrupt request 代表中斷控制器上的一根中斷線,和乙個中斷向量 單cpu 可程式設計中斷控制器 pic 多cpu 改進的可程式設計中斷控制器 apic 乙...

中斷和異常

中斷通常定義為乙個事件,該事件改變處理器執行的指令順序。中斷通常分為同步中斷與非同步中斷。異常是同步的,i o中斷是非同步的。中斷可以分為 i o裝置發出的中斷請求 irq 都可以被遮蔽,乙個中斷被遮蔽以後,控制單元就忽略他。只有硬體故障等幾個危急事件才是非遮蔽中斷。異常可以分為 可以糾正的異常,例...