第6章 中斷和中斷處理程式 學習筆記

2021-05-05 00:06:14 字數 751 閱讀 3783

1 硬體傳送乙個中斷碼給cpu,該中斷碼被稱為中斷請求線

2 中斷服務例程(isr):他是裝置驅動程式的一部分,裝置驅動程式是用於管理裝置的核心**,isr是被核心呼叫來響應中斷的,它執行於中斷上下文

3 中斷上下文:如網絡卡接收到資料告訴核心包到了,網絡卡在等核心的回答(同時網絡卡還有優化吞吐量等工作要做),核心執行網絡卡的isr,應答網絡卡,拷貝資料報到記憶體,這些是緊迫而且與硬體相關的事情,所以放在上文做,至於資料報的處理則放到隨後的下文去做。從此例可看出中斷分成上下文是為了讓isr執行的快(快速應答硬體),同時又想完成的工作量大。總結上文完成緊迫、立即要做的事情,下文處理不那麼緊迫的事情。

4 reg isr:request_irq(中斷號,isr,.., dev_id),該函式可能會睡眠,不要在中斷上下文和阻塞**中呼叫它;free isr:free_irq(...)

5 中斷線共享:即不同裝置傳送同乙個中斷碼,那如何知道用哪個isr?通過dev_id來區分(註冊的時候)。核心在接收到該中斷碼後會一次呼叫該中斷線上註冊的所有isr,isr通過dev_id知道他是否該為這個中斷負責

6 isr使用:險些isr函式,在用request_irq註冊,使用完後free_irq【問題:isr都是核心動態載入的嗎?isr使用完都會free嗎?為什麼這樣做?】

7 中斷處理機制的實現:和彙編中類似,核心根據中斷碼找到isr,然後設定if位

8 中斷控制:此小結沒看懂,知道它在講if位的判斷和設定有效性,而且考慮在多cpu下的情況,覺得核心的中斷更複雜了,所以對這個if使用饒,沒看懂。

第6章 豐富中斷處理程式

前面的中斷處理程式 過於簡單了,只有一句iretd,而且這個時鐘中斷處理程式也只能發生一次,因為沒有通知8259a本次中斷處理程式已結束。就算處理程式能反覆執行,我們也不能看到結果,所以還要在中斷處理程式中新增一點顯示資訊來使我們知道中斷程式在執行,下面就來修改 hw int 00 push 0 c...

Linux學習 中斷和中斷處理

2 中斷處理程式 3 上半部和下半部的對比 處理器的速度和外圍裝置的速度相差太遠,為了解決讓核心不做過多的無用功 使用輪詢 這是就需要一種機制在硬體需要時再向核心發出訊號 中斷機制 中斷機制可以更好的協同處理器和外部裝置,並且提高機器的效能 中斷 指的是可以使得硬體得以發出通知給處理器,中斷可以隨時...

第6章 MSI和MSI X中斷機制

在 pci匯流排中,所有需要提交中斷請求的裝置,必須能夠通過 intx 引腳提交中斷請求,而 msi機制是乙個可選機制。而在 pcie 匯流排中,pcie 裝置必須支援 msi或者 msi x 中斷請求機制,而可以不支援 intx 中斷訊息。在 pcie 匯流排中,msi和 msi x 中斷機制使用...