Linux內核設計與實現 第八章

下半部和推後執行的工作

在第七章中我們討論了中斷處理程序的上半部,在操作系統響應中斷時,存在着一些限制,比如中斷處理可能打斷其他一些重要代碼,或者執行中斷時需要屏蔽其他中斷。這些限制決定上半部的執行過程需要越快越好。

下半部

在劃分上半部和下半部的工作時,儘管沒有嚴格的規則,但是往往我們可以借鑑一些提示:(1)對時間任務非常敏感的任務,放在中斷處理程序中執行(2)和硬件相關的任務,放在中斷處理程序中執行(3)不能被其他中斷打斷的任務,放在中斷處理程序中執行(4)剩下的任務考慮放在下半部執行。

下半部環境:第七章中我們瞭解到實現中斷處理程序的辦法只有一種,但是在本章中我們可以發現下半部有許多實現方法。

軟中斷

實現:

一組靜態定義的下半部接口(編譯期間靜態分配),可以在所有的處理器上同時執行。最多有32個軟中斷,但是目前只用到9個。軟中斷結構如下:

處理程序action

tasklet

是一種基於軟中斷的實現機制,兩個不同類型的可以在不同的處理器上執行,但是相同類型的tasklet不能同時執行。task相對軟中斷來說,性能較差,但是易用性高。

工作隊列

是任務隊列的替代品。將任務交由一個內核線程去執行。

內核定時器:用於把下半部推遲到指定時間的機制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章