日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

中断底半部:softirq、tasklet、workqueue

發布時間:2023/12/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中断底半部:softirq、tasklet、workqueue 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為了在中斷執行時間盡可能短和中斷處理需完成大量工作之間找到一個平衡點,Linux 將中斷處理程序分解為兩個半部:頂半部(top? half)和底半部(bottom half)。

頂半部完成盡可能少的比較緊急的功能,它往往只是簡單地讀取寄存器中的中斷狀態并清除中斷標志后就進行“登記中斷”的工作?!暗怯浿袛唷币馕吨鴮⒌装氩刻幚沓绦驋斓皆撛O備的底半部執行隊列中去。這樣,頂半部執行的速度就會很快,可以服務更多的中斷請求。

現在,中斷處理工作的重心就落在了底半部的頭上,它來完成中斷事件的絕大多數任務。底半部幾乎做了中斷處理程序所有的事情,而且可以被新的中斷打斷,這也是底半部和頂半部的最大不同,因為頂半部往往被設計成不可中斷。底半部則相對來說并不是非常緊急的,而且相對比較耗時,不在硬件中斷服務程序中執行。

a. 底半部可以被新的中斷事件打斷,這是和頂半部最大的不同,頂半部通常被設計成不可被打斷。

b. 底半部相對來說不是非常緊急的,而且相對比較耗時,不在硬件中斷服務程序中執行。

c. 如果中斷要處理的工作本身很少,所有的工作可在頂半部全部完成。

?

盡管頂半部、底半部的結合能夠改善系統的響應能力,但是,僵化地認為 Linux設備驅動中的中斷處理一定要分兩個半部則是不對的。如果中斷要處理的工作本身很少,則完全可以直接在頂半部全部完成。

?

?

1.?軟中斷(softirq)

軟中斷(softirq)也是一種傳統的底半部處理機制,它的執行時機通常是頂半部返回的時候,tasklet的基于軟中斷實現的,因此也運行于軟中斷上下文。

軟中斷支持SMP,同一個softirq可以在不同的CPU上同時運行,softirq必須是可重入的。軟中斷是在編譯期間靜態分配的,它不像tasklet那樣能被動態的注冊或去除。

軟中斷和tasklet都是運行在中斷上下文中,它們與任一進程無關,沒有支持的進程完成重新調度。所以軟中斷和tasklet不能睡眠、不能阻塞,它們的代碼中不能含有導致睡眠的動作,如減少信號量、從用戶空間拷貝數據或手工分配內存等。也正是由于它們運行在中斷上下文中,所以它們在同一個CPU上的執行是串行的,這樣就不利于實時多媒體任務的優先處理。

?

軟中斷的特性:

1).一個軟中斷不會搶占另外一個軟中斷。

2).唯一可以搶占軟中斷的是中斷處理程序。

3).其他軟中斷(包括相同類型的)可以在其他的處理其上同時執行。

4).一個注冊的軟中斷必須在被標記后才能執行。

5).軟中斷不可以自己休眠(即調用可阻塞的函數或sleep等)。

6).索引號小的軟中斷在索引號大的軟中斷之前執行

?

2.?tasklet

他的執行上下文是軟中斷,執行時機通常是頂半部返回的時候。?

tasklet是一種特殊的軟中斷,同一時刻一個tasklet只能在一個CPU 執行,不同的tasklet可以在不同的CPU上執行。這和軟中斷不同,軟中斷同一時刻可以在不同的CPU并行執行,因此軟中斷必須考慮重入的問題。

引入tasklet,最主要的是考慮支持SMP,提高SMP多個cpu的利用率;兩個相同的tasklet決不會同時執行。tasklet可以理解為softirq的派生,所以它的調度時機和軟中斷一樣。對于內核中需要延遲執行的多數任務都可以用tasklet來完成,由于同類tasklet本身已經進行了同步保護,所以使用tasklet比軟中斷要簡單的多,而且效率也不錯。tasklet把任務延遲到安全時間執行的一種方式,在中斷期間運行,即使被調度多次,tasklet也只運行一次,不過tasklet可以在SMP系統上和其他不同的tasklet并行運行。在SMP系統上,tasklet還被確保在第一個調度它的CPU上運行,因為這樣可以提供更好的高速緩存行為,從而提高性能。

tasklet的特性:.不允許兩個兩個相同類型的tasklet同時執行,即使在不同的處理器上。

?

3.?工作隊列(workqueue)

工作隊列的執行上下文是內核線程,因此可以調度和睡眠。

如果推后執行的任務需要睡眠,那么就選擇工作隊列。另外,如果需要用一個可以重新調度的實體來執行你的下半部處理,也應該使用工作隊列。它是唯一能在進程上下文運行的下半部實現的機制,也只有它才可以睡眠。這意味著在需要獲得大量的內存時、在需要獲取信號量時,在需要執行阻塞式的I/O操作時,它都會非常有用。

work queue造成的開銷最大,因為它要涉及到內核線程甚至是上下文切換。這并不是說work queue的低效,但每秒鐘有數千次中斷,就像網絡子系統時常經歷的那樣,那么采用其他的機制可能更合適一些。 盡管如此,針對大部分情況工作隊列都能提供足夠的支持。

?

工作隊列特性:

1).工作隊列會在進程上下文中執行

2).可以阻塞。(前兩種機制是不可以阻塞的)

3).可以被重新調度。(前兩種只可以被中斷處理程序打斷)

4).使用工作隊列的兩種形式:

?????1>缺省工作者線程(works threads)

?????2>自建的工作者線程

5).在工作隊列和內核其他部分之間使用鎖機制就像在其他的進程上下文一樣。

6).默認允許響應中斷。????????

?

4.?硬中斷、軟中斷的區別

硬中斷是外部設備低CPU的中斷,軟中斷是中斷底半部的一種處理機制。

中斷優先級>軟中斷>任何線程。

?

?

?

總結

以上是生活随笔為你收集整理的中断底半部:softirq、tasklet、workqueue的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 深夜视频一区二区三区 | 免费观看a视频 | av在线伊人| 一区二区不卡视频在线观看 | 天天综合射| 国产一级黄色av | 乱图区 | 欧美变态口味重另类 | 免费三级大片 | 国产精品自拍小视频 | 久久久wwww | 久久嫩草 | 好吊色视频在线观看 | av在线播放国产 | 丝袜美腿中文字幕 | 久久午夜鲁丝片 | 三级免费毛片 | 亚洲欧美自拍视频 | 九九热在线视频观看 | 浪潮av网站| 亚洲天堂午夜 | 欧美激情校园春色 | 女同性做爰全过程 | 青青网站 | 空姐毛片| 天天操夜夜爱 | 九九热色| 99精品视频在线观看 | 黄网页在线观看 | 91亚洲精选| 日本亚洲色大成网站www久久 | 亚洲一区二区精华 | 亚洲中文一区二区三区 | 日本天堂在线 | 日韩大片免费看 | 亚洲无码高清精品 | 国产第一色 | av动态| 日批网址 | 日本精品人妻无码免费大全 | 亚洲三级电影网站 | 亚洲品质自拍视频 | 午夜高清视频 | 国产高清黄色 | 久青草视频在线观看 | 日韩欧美电影一区二区三区 | 青青青青青草 | 三级电影网址 | 91插插插插插 | 国内精品视频一区 | 人人超碰人人 | 肥臀av | 91黄色小视频 | 成人在线国产精品 | 国产欧美一区二区三区精品酒店 | 理论片一级 | 免费在线观看一区二区三区 | 在线视频网站 | 人人射人人干 | 国产在线观看99 | av手机在线观看 | 午夜小视频在线观看 | 天天干,夜夜操 | 大战熟女丰满人妻av | 免费久久精品 | 亚洲精品乱码久久久久 | 亚洲精品粉嫩小泬20p | 夜色综合网 | 日韩精选| 91久久久久久久久久久久久 | 国产一卡二卡三卡 | 亚洲剧情在线 | 国产精品久久无码 | 青青综合网| 国产精品av一区 | 久久久久女人精品毛片九一 | 老司机福利av | 亚洲国产无线乱码在线观看 | 影院一区 | 亚洲欧美综合在线观看 | 尹人综合在线 | 插插影视 | 韩国性猛交╳xxx乱大交 | 91情侣视频| 亚洲视频手机在线观看 | 日本欧美在线 | 欧美日韩精品国产 | 成人特级片 | 91亚洲影院 | 国产日韩一区二区三免费高清 | 中文字幕1 | 欧美国产综合视频 | 国产精品毛片一区二区在线看舒淇 | 久久人人爽人人爽人人片av免费 | 中文字幕精品亚洲 | 粗大的内捧猛烈进出在线视频 | 高清av免费观看 | 精品人妻码一区二区三区红楼视频 | 丰满少妇在线观看bd |