linux中斷分層技術分析

2021-07-14 18:50:53 字數 1193 閱讀 2279

linux中斷巢狀處理:

概念:當一種型別的中斷發生時又產生另外一種中斷

慢速中斷:當處理中斷函式時,中斷總開關是不關閉的,允許別的中斷產生。

1.不同中斷裝置:處理中斷開始。。。。。。發生另外中斷,執行發生的中斷,執行完成,返回之前的中斷處理函式繼續執行。。。。

2.相同型別裝置:處理中斷開始。。。。。。發生另外中斷,忽略發生的中斷,繼續執行之前的中斷函式,造成中斷丟失。。。。

快速中斷:當處理中斷函式時,中斷總開關(if關閉),不接受外部中斷。

1.不同中斷裝置:處理中斷開始。。。。。。發生另外中斷,忽略發生的中斷,繼續執行之前的中斷函式,造成中斷丟失。。。。

2.相同型別裝置:處理中斷開始。。。。。。發生另外中斷,忽略發生的中斷,繼續執行之前的中斷函式,造成中斷丟失。。。。

linux中斷分層:

作用:減少中斷處理函式執行時間,減少中斷丟失的概率

中斷處理函式中相關**:

1.與硬體相關**

2.與硬體不相關**

使用中斷分層技術:中斷處理函式中第一部分在中斷函式中執行,第二部使用中斷分層技術隔離出來。

中斷分層方式:軟中斷、tasklet、工作佇列(主流)

工作佇列是一種將任務推後執行的形式,他把推後的任務交由乙個核心執行緒去執行。這樣如果在中斷函式中使用中斷分層(工作佇列方式),中斷函式的第二部分會在程序上下文執行,它允許重新排程甚至睡眠。每個被推後的任務叫做「工作」,由這些工作組成的佇列稱為工作佇列。

當工作佇列中的工作被執行後就會把被執行的工作在工作佇列鍊錶中刪除此工作

核心使用struct workqueue_struct來描述乙個工作佇列;

核心使用struct work_struct來描述乙個工作項;

使用工作佇列:

1.建立工作佇列:create_workqueue;

2.建立工作:init_work;

3.提交工作:queue_work,提交工作後並不是馬上執行,由核心空閒時核心執行緒會執行建立的工作佇列

建立工作佇列首先要遵守「gpl」協議,不然會報錯

在大多數情況下,驅動並不需要自己建立工作佇列,只需要定義工作,然後將工作提交到核心已經定義好的工作佇列keventd_wq中。

提交工作到預設佇列:schedule_work

Linux驅動開發 8 中斷分層機制 軟中斷

1 概念 軟中斷是模擬硬體中斷的概念,實現巨集觀上的非同步執行效果。其實tasklet 也是基於軟中斷實現的。2 軟中斷和硬中斷的區別 a 硬中斷是外部裝置對cpu 的中斷,軟中斷時程式對核心的中斷 b 訊號是由核心 或者其他程序 對某個程序的軟中斷 3 結構表示 struct softirq ac...

分層CAR技術

文 尹建華 流量監管是差分服務qos體系的五種技術之一,主要用於流量限速,qos體系中的業務識別和佇列排程技術,受到業界普遍關注和研究,而流量整形和擁塞避免則相對關注得比較少。如今,隨著h3c對廣域網鏈路資源通道化思想的提出,綜合權衡鏈路資源與業務質量,實現 預先避免業務擁塞,提公升頻寬效率和服務質...

linux中斷處理原理分析

1 中斷概念 為什麼需要中斷?1 外設的處理速度一般慢於cpu 2 cpu不能一直等待外部事件 所以裝置必須有一種方法來通知cpu它的工作進度,這種方法就是中斷。2 中斷實現 在linux驅動程式中,為裝置實現乙個中斷包含兩個步驟 1 向核心註冊中斷 2 實現中斷處理函式 3 中斷註冊 reques...