10.2 linux中斷處理程式架構
裝置的中斷會打斷核心程序中的正常排程和執行,系統對更高吞吐率的追求要求中斷服務程式盡量短小精悍。但是,願望與現實並不吻合。在大多數真實的系統中,當中斷到來時,要完成的工作並不會是短小的,它可能要進行較大量的耗時處理。
圖10.3描述linux核心的中斷處理機制。為了在中斷執行時間盡量短和中斷處理需完成的工作盡量大之間找到乙個平衡點,linux將中斷處理程式分解為兩個半部:上半部(處理緊急的硬體操作)和下半部(延緩的耗時操作)。
圖10.3 linux中斷處理機制
上半部用於完成盡量少的比較緊急的操作,它往往只是簡單地讀取暫存器中的中斷狀態,並在清除中斷標誌後就進行「登記中斷」的工作。「登記中斷」將下半部處理程式掛到該裝置的下半部執行佇列中去。這樣,上半部執行的速度就會很快,從而,可以服務更多的中斷請求。
現在,中斷處理工作的重心就放在下半部,需用下半部來完成中斷事件的絕大多數任務。下半部幾乎做了中斷處理程式所有的事情,還可以被新的中斷打斷,這也是上半部和下半部的最大不同,因為上半部往往被設計成不可中斷。下半部相對來說並不是非常緊急的,而且相對比較耗時,不在硬體中斷服務程式中執行,而在軟體中斷服務程式中執行。
如果中斷要處理的工作本身很少,則完全可以直接在上半部全部完成。
備註:其他作業系統中對中斷的處理也採用了linux類似的方法,真正的硬體中斷服務程式都應該盡量短。因此,許多作業系統都提供了中斷上下文和非中斷上下文相結合的機制,將中斷的耗時工作保留到非中斷上下文去執行。
在linux中,檢視/proc/interrupts檔案可以獲得系統中中斷的統計資訊,並能統計出每乙個中斷號上的中斷在每個cpu上發生的次數。
Linux核心開發之中斷與時鐘 三
晚上7點10分.小濤哥,這章不是叫linux裝置驅動程式之中斷與時鐘,前邊你講了中斷,還給了我很多模版,我都看懂了,這次是不是要開始講時鐘了.真聰明,越來越喜歡你這聰明的樣子了,說的不錯,今天就要開始乙個新的模組 核心時鐘 我很少誇人,為啥今天誇她呢了,呵呵.定時器,意思大家都明白,我就不說了,要是...
第 10 章 日期與時間
學習要點 1.php 日期和時間庫 使用 php 程式設計時,與你遇到的大多數其他型別的資料相比,日期和時間有很大不同。因為日期和時間沒有明確的結構,並且日期的計算和表示也很麻煩。在 php 中,日期和時間函式庫是 php 語言的乙個核心部分。時間戳是自 1970 年 1 月 1 日 00 00 0...
《數學之美》讀書筆記(二) 第6章 第10章
第六章第七章 賈里尼克和現代語言處理 1.今天數字通訊中應用最廣的兩個演算法 bcjr演算法和維特比演算法。第八章 簡單之美 布林代數和搜尋引擎第十章 圖論和網路爬蟲頁面分析和url的提取 網際網路早期,url都是以文字的形式防在網頁中,前後都有明顯的標識,很容易提取出來。但是現在很多網頁是用一種指...