下半部和推後執行的工作
在第七章中我們討論了中斷處理程序的上半部,在操作系統響應中斷時,存在着一些限制,比如中斷處理可能打斷其他一些重要代碼,或者執行中斷時需要屏蔽其他中斷。這些限制決定上半部的執行過程需要越快越好。
下半部
在劃分上半部和下半部的工作時,儘管沒有嚴格的規則,但是往往我們可以借鑑一些提示:(1)對時間任務非常敏感的任務,放在中斷處理程序中執行(2)和硬件相關的任務,放在中斷處理程序中執行(3)不能被其他中斷打斷的任務,放在中斷處理程序中執行(4)剩下的任務考慮放在下半部執行。
下半部環境:第七章中我們瞭解到實現中斷處理程序的辦法只有一種,但是在本章中我們可以發現下半部有許多實現方法。
軟中斷
實現:
一組靜態定義的下半部接口(編譯期間靜態分配),可以在所有的處理器上同時執行。最多有32個軟中斷,但是目前只用到9個。軟中斷結構如下:
處理程序action
tasklet
是一種基於軟中斷的實現機制,兩個不同類型的可以在不同的處理器上執行,但是相同類型的tasklet不能同時執行。task相對軟中斷來說,性能較差,但是易用性高。
工作隊列
是任務隊列的替代品。將任務交由一個內核線程去執行。
內核定時器:用於把下半部推遲到指定時間的機制。