軟中斷和硬中斷的區別
硬中斷:是由與系統相連的外設(比如:網絡卡、硬碟)自動產生的。主要是用來通知作業系統外設狀態的變化。比如當網絡卡收到資料包的時候,就會發出一箇中斷。
軟中斷:我們知道,為了滿足實時系統的要求,中斷處理應該是越快越好。linux為了實現這個特點,當中斷髮生的時候,硬中斷處理那些短時間就可以完成的工作,而將那些處理時間比較長的工作,放到中斷之後來完成,也就是軟中斷中來完成。
2.不同的硬中斷是否可以巢狀?相同的硬中斷是否可以巢狀,以及是否按優先順序巢狀?硬中斷最多可能巢狀幾級?
Linux下硬中斷是可以巢狀的,但是沒有優先順序的概念,也就是說任何一個新的中斷都可以打斷正在執行的中斷,但是同種中斷不會打斷同種中斷的執行。
①硬中斷是由外部事件引起的因此具有隨機性和突發性;軟中斷是執行中斷指令產生的,無面外部施加中斷請求訊號,因此中斷的發生不是隨機的而是由程式安排好的。
②硬中斷的中斷響應週期,CPU需要發中斷回合訊號(NMI不需要),軟中斷的中斷響應週期,CPU不需發中斷回合訊號。
③硬中斷的中斷號是由中斷控制器提供的(NMI硬中斷中斷號系統指定為02H);軟中斷的中斷號由指令直接給出,無需使用中斷控制器。
④硬中斷是可遮蔽的(NMI硬中斷不可遮蔽),軟中斷不可遮蔽。
軟中斷是一種推後執行的機制,定時器,網絡卡的資料的處理是很典型的軟中斷,這個和中斷向 量表裡的中斷是完全不一樣的,以網路資料的處理為例,當網絡卡接到一個數據包後,其中斷處理程式只是把資料複製到緩衝區,然後就告訴網絡卡,你可以再傳資料給 我了,也就是中斷返回,但在此之前,網絡卡的中斷處理程式要置一個標誌位,告訴作業系統有事要做,這個事就是軟中斷,但軟中斷只是很多中斷返回時要做的事情 之一,作業系統每次中斷返回時會檢查著個標誌位,看是否有事要做,如果有,就會去處理,象前面提到的網絡卡,這時候作業系統就回呼叫軟中斷的處理函式,網絡卡
的軟中斷程式就是做分析資料包啊,這個資料應該傳給誰啊等這些工作.沒有,就返回了,除了必須的部分
編寫兩個中斷服務函式的區別
1.軟中斷髮生的時間是由程式控制的,而硬中斷髮生的時間是隨機的
2.軟中斷是由程式呼叫發生的,而硬中斷是由外設引發的
3.硬體中斷處理程式要確保它能快速地完成它的任務,這樣程式執行時才不會等侍較長時間
編寫這兩類的中斷處理程式我感覺區別不太大