軟件中斷和硬件中斷


硬中斷

  • 由與系統相連的外設(比如網卡、硬盤)自動產生的。主要是用來通知操作系統系統外設狀態的變化。

  • 比如當網卡收到數據包的時候,就會發出一個中斷。我們通常所說的中斷指的是硬中斷(hardirq)。

 

軟中斷

  • 為了滿足實時系統的要求,中斷處理應該是越快越好。

  • linux為了實現這個特點,當中斷發生的時候,硬中斷處理那些短時間就可以完成的工作,而將那些處理事件比較長的工作,放到軟件中斷之后來完成,也就是軟中斷(softirq)來完成。

 

中斷嵌套

  • Linux下硬中斷是可以嵌套的,但是沒有優先級的概念,也就是說任何一個新的中斷都可以打斷正在執行的中斷,但同種中斷除外。

  • 軟中斷不能嵌套,但相同類型的軟中斷可以在不同CPU上並行執行。

 

軟中斷指令

  • int是軟中斷指令。

  • 中斷向量表是中斷號和中斷處理函數地址的對應表。

  • int n

觸發軟中斷n。相應的中斷處理函數的地址為:中斷向量表基地址 + 4 * n。(每個地址偏移量為0x4位,每位儲存1字節數據)

 

硬中斷和軟中斷的區別

  • 軟中斷是執行中斷指令產生的,而硬中斷是由外設引發的。

  • 硬中斷的中斷號是由中斷控制器提供的,軟中斷的中斷號由指令直接指出,無需使用中斷控制器。

  • 硬中斷是可屏蔽的,軟中斷不可屏蔽。

  • 硬中斷處理程序要確保它能快速地完成任務,這樣程序執行時才不會等待較長時間,稱為上半部。

  • 軟中斷處理硬中斷未完成的工作,是一種推后執行的機制,屬於下半部。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM