linux 中斷下半部自學筆記

來源:互聯網
上載者:User

中斷處理函數有自身的局限:

1,中斷可以打斷任何重要代碼(除去中斷屏蔽下的中斷處理函數和中斷優先順序高的中斷處理函數)。要求中斷處理函數速度越快越好。

2,中斷自身會屏蔽,一般是屏蔽同級的中斷,也可屏蔽所有的中斷。

3,涉及對硬體的操作。

4,中斷在進程上下文中進行。

因為以上局限,引入了中斷下半部。BH和任務隊列(task queue) 已經從2.5去掉。

還有以下三種類型,非強制中斷(softirq),tasklet和工作隊列(work queue):

非強制中斷:用數組實現,最大隻能有32個軟終端(最大值不能更改)。不能搶佔另一個軟終端,唯一可以搶佔軟終端的是中斷處理函數。

保留給系統中對時間要求最嚴格以及最重要的下半部使用。目前只有網路和scsi直接使用軟終端。不能休眠,在多處理器機器上可以對同一軟終端同時運行。

非強制中斷的調度:在中斷返回的時候,核心檢查所有掛起的非強制中斷,並處理他們,但是自行重新觸發的非強制中斷,將放到下一個非強制中斷執行時機去處理。一般是利用一個核心線程(ksoftirqd/n),區別在於n,對應的處理器的編號。

tasklet:利用軟終端實現。兩類軟終端代表,HI_SOFTIRQ和TASKLET_SOFTIRQ。唯一的區別是優先順序的不同。

工作隊列(work queue).進程上下文執行,可以睡眠,跟其他的核心線程一樣,叫做工作者線程(worker thread) events/n,n是處理器的編號。也可以通過create_workqueue建立一個新的workqueue核心線程來處理需要的函數。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.