linux中斷系統的一些研究

2021-06-29 09:14:52 字數 1080 閱讀 6164

關於linux的中斷系統網上有好多文章,基本的原理流程都能查的差不多。

這裡是我個人學習或使用中遇到的一些疑問,作為乙個記錄。

個人理解,可能會有錯漏,歡迎指出。

1,linux核心有沒有中斷優先順序?

linux中斷沒有引入優先順序的概念,並且現在linux核心會在執行中斷處理函式時禁止cpu中斷。

2,關於irqf_disabled

這個flag已經在新版本核心中不再使用,加與不加都沒有區別。 之前版本核心(2.6.35之前)加上該標誌表示該中斷為快速中斷,中斷處理全程禁止cpu中斷,如果不加則為慢速中斷,執行中斷處理函式時不會禁止cpu中斷。

現在,所有中斷都會禁止cpu中斷。

3,中斷執行緒化

linux引入了中斷執行緒化,是為了提高系統實時性,

intrequest_threaded_irq(unsigned 

intirq, irq_handler_t handler  

irq_handler_t thread_fn, unsigned long

irqflags,  

const

char

*devname, 

void

*dev_id)  

借用宋寶華老師的話:

申請乙個執行緒化的irq,kernel會為中斷的底版本建立乙個名字為irq/%d-%s的執行緒,%d對應著中斷號。其中頂半部(硬中斷)

handler

在做完必要的處理工作之後,會返回irq_wake_thread,之後kernel會喚醒irq/%d-%s執行緒,而該kernel執行緒會呼叫

thread_fn

函式,因此,該執行緒成為底半部。

還有網路上這張圖:

4,cpu收到中斷之後如何獲取中斷號?

cpu從中斷控制器獲取中斷號的**在各個平台的

entry-macro.s檔案,巨集:get_irqnr_preamble

中斷號會存在 r0

之後跳轉到asm_do_irq第乙個引數就是中斷號。

關於Linux中斷一些思考

目錄前言 關於中斷歷史與發展 linux中斷設計 linux中斷下半部實現 軟中斷 tasklet 工作佇列 關於可重入和不可重入函式 在我們學習中斷的時候,先要了解幾個概念。何為中斷?為什麼要使用中斷?中斷如何運作?弄明白這些再去使用中斷會顯得得心應手。何為中斷?cpu在執行的過程中,由於外部因素...

中斷筆記 一些常見的中斷問題

中斷簡述 所謂中斷就是指cpu在正常執行程式的時候,由於內部 外部事件的出發 或由程式預先設定而引起cpu暫時中止當前正在執行的程式,儲存被執行程式相關資訊到棧中,轉而去執行為內部 外部事件 或由程式預先設定的事件的中斷服務子程式,待執行完中斷服務子程式後,cpu再獲取被儲存在棧中被中斷的程式的資訊...

關於中斷的一些整理

中斷裝置和中斷處理程式統稱為中斷系統。中斷系統是計算機的重要組成部分。實時控制 故障自動處理 計算機與外圍裝置間的資料傳送往往採用中斷系統。中斷系統的應用大大提高了計算機效率。不同的計算機其硬體結構和軟體指令是不完全相同的,因此,中斷系統也是不相同的。計算機的中斷系統能夠加強cpu對多工事件的處理能...