linux中斷 簡介

許佳佳233發表於2018-10-07

中斷 概念

中斷是一種可以使CPU和硬體裝置進行通訊的技術。
例如,當我們在敲擊鍵盤時,鍵盤控制器(控制鍵盤的硬體裝置)會傳送一箇中斷,通知作業系統有鍵按下。從本質上說,中斷是一種特殊的訊號,由硬體裝置向CPU傳送。當CPU接收到中斷訊號後,就會馬上通知作業系統此訊號的到來,然後由作業系統負責處理這些新到來的資料。
在這裡插入圖片描述
過程如上圖:
1、裝置產生中斷
2、電訊號傳送給中斷控制器
3、判斷中斷是否被遮蔽(沒有遮蔽就繼續)
4、把這個中斷髮送給中斷核心處理
5、處理器立即停止此刻正在做的事情,執行中斷處理程式。

“下半部” 概念

中斷分為兩個部分,上半部就是中斷處理程式,那麼什麼是下半部,或者說為什麼要分為兩個部分呢?

為什麼要有“下半部”?
1、中斷處理程式在執行的時候,當前的中短線在所有處理器上都會被遮蔽,也就是這一型別的中斷請求都被遮蔽。
2、如果處理程式是IRQF_DISABLED型別,中斷處理程式執行的時候會禁止所有本地中斷。
3、中斷面向的是硬體的,而有的硬體本身就是高速的,也就是說本身也是有時間的限制的,如果處理的慢的話就可能導致後面的資料被更加後面的資料給覆蓋了,比如網路卡。

因此,耗時的操作需要非同步執行。
上半部:簡單快速,執行的時候禁止一些或者全部中斷。
下半部:稍後執行,執行的時候可以響應所有中斷。

上下兩部分

上半部:中斷處理程式
下半部:軟中斷、tasklet、工作佇列。
在這裡插入圖片描述

系統定時器原理——中斷

系統定時器以某種頻率自行觸發時鐘中斷,當時鍾中斷髮生時,核心通過一種特殊的中斷處理程式對其進行處理。
比如,在x86體系結構中,系統定時器頻率預設值為100,因此,x86上時鐘中斷的頻率就為100HZ,也就是說每秒鐘會觸發時鐘中斷100次。

定時器原理——衰減測量器
設定一個初始值,該值以固定頻率遞減,當減到零時,觸發一箇中斷。

相關文章