1. 程式人生 > >硬中斷和軟中斷的區別

硬中斷和軟中斷的區別

①硬中斷是由外部事件引起的因此具有隨機性和突發性;軟中斷是執行中斷指令產生的,無面外部施加中斷請求訊號,因此中斷的發生不是隨機的而是由程式安排好的。
②硬中斷的中斷響應週期,CPU需要發中斷回合訊號(NMI不需要),軟中斷的中斷響應週期,CPU不需發中斷回合訊號。
③硬中斷的中斷號是由中斷控制器提供的(NMI硬中斷中斷號系統指定為02H);軟中斷的中斷號由指令直接給出,無需使用中斷控制器。
④硬中斷是可遮蔽的(NMI硬中斷不可遮蔽),軟中斷不可遮蔽。

軟中斷是一種推後執行的機制,定時器,網絡卡的資料的處理是很典型的軟中斷,這個和中斷向 量表裡的中斷是完全不一樣的,以網路資料的處理為例,當網絡卡接到一個數據包後,其中斷處理程式只是把資料複製到緩衝區,然後就告訴網絡卡,你可以再傳資料給 我了,也就是中斷返回,但在此之前,網絡卡的中斷處理程式要置一個標誌位,告訴作業系統有事要做,這個事就是軟中斷,但軟中斷只是很多中斷返回時要做的事情 之一,作業系統每次中斷返回時會檢查著個標誌位,看是否有事要做,如果有,就會去處理,象前面提到的網絡卡,這時候作業系統就回呼叫軟中斷的處理函式,網絡卡 的軟中斷程式就是做分析資料包啊,這個資料應該傳給誰啊等這些工作.沒有,就返回了,除了必須的部分

編寫兩個中斷服務函式的區別
1.軟中斷髮生的時間是由程式控制的,而硬中斷髮生的時間是隨機的
2.軟中斷是由程式呼叫發生的,而硬中斷是由外設引發的
3.硬體中斷處理程式要確保它能快速地完成它的任務,這樣程式執行時才不會等侍較長時間
編寫這兩類的中斷處理程式我感覺區別不太大