下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
精品文檔-下載后可編輯spinlock與linux內(nèi)核調(diào)度的關(guān)系-基礎(chǔ)電子作者:劉洪濤,華清遠(yuǎn)見嵌入式培訓(xùn)中心講師,ARM公司授權(quán)ATC講師。
關(guān)于自旋鎖用法介紹的文章,已經(jīng)有很多,但有些細(xì)節(jié)的地方點(diǎn)的還不夠透。我這里就把我個(gè)人認(rèn)為大家容易有疑問的地方拿出來討論一下。
一、自旋鎖(spinlock)簡(jiǎn)介
自旋鎖在同一時(shí)刻只能被多一個(gè)內(nèi)核任務(wù)持有,所以一個(gè)時(shí)刻只有一個(gè)線程允許存在于臨界區(qū)中。這點(diǎn)可以應(yīng)用在多處理機(jī)器、或運(yùn)行在單處理器上的搶占式內(nèi)核中需要的鎖定服務(wù)。
二、信號(hào)量簡(jiǎn)介
這里也介紹下信號(hào)量的概念,因?yàn)樗挠梅ê妥孕i有相似的地方。
Linux中的信號(hào)量是一種睡眠鎖。如果有一個(gè)任務(wù)試圖獲得一個(gè)已被持有的信號(hào)量時(shí),信號(hào)量會(huì)將其推入等待隊(duì)列,然后讓其睡眠。這時(shí)處理器獲得自由去執(zhí)行其它代碼。當(dāng)持有信號(hào)量的進(jìn)程將信號(hào)量釋放后,在等待隊(duì)列中的一個(gè)任務(wù)將被喚醒,從而便可以獲得這個(gè)信號(hào)量。
三、自旋鎖和信號(hào)量對(duì)比
在很多地方自旋鎖和信號(hào)量可以選擇任何一個(gè)使用,但也有一些地方只能選擇某一種。下面對(duì)比一些兩者的用法。
表1-1自旋鎖和信號(hào)量對(duì)比
四、自旋鎖與linux內(nèi)核進(jìn)程調(diào)度關(guān)系
我們討論下表1-1中的第3種情況(其它幾種情況比較好理解),如果臨界區(qū)可能包含引起睡眠的代碼則不能使用自旋鎖,否則可能引起死鎖。
那么為什么信號(hào)量保護(hù)的代碼可以睡眠而自旋鎖就不能呢?
先看下自旋鎖的實(shí)現(xiàn)方法吧,自旋鎖的基本形式如下:
spin_lock(mr_lock);
//臨界區(qū)
spin_unlock(mr_lock);
跟蹤一下spin_lock(mr_lock)的實(shí)現(xiàn)
#definespin_lock(lock)_spin_lock(lock)
#define_spin_lock(lock)__LOCK(lock)
#define__LOCK(lock)\
do{preempt_disable();__acquire(lock);(void)(lock);}while(0)
注意到“preempt_disable()”,這個(gè)調(diào)用的功能是“關(guān)搶占”(在spin_unlock中會(huì)重新開啟搶占功能)。從中可以看出,使用自旋鎖保護(hù)的區(qū)域是工作在非搶占的狀態(tài);即使獲取不到鎖,在“自旋”狀態(tài)也是禁止搶占的。了解到這,我想咱們應(yīng)該能夠理解為何自旋鎖保護(hù)的代碼不能睡眠了。試想一下,如果在自旋鎖保護(hù)的代碼中間睡眠,此時(shí)發(fā)生進(jìn)程調(diào)度,則可能另外一個(gè)進(jìn)程會(huì)再次調(diào)用spinlock保護(hù)的這段代碼。而我們現(xiàn)在知道了即使在獲取不到鎖的“自旋”狀態(tài),也是禁止搶占的,而“自旋”又是動(dòng)態(tài)的,不會(huì)再睡眠了,也就是說在這個(gè)處理器上不會(huì)再有進(jìn)程調(diào)度發(fā)生了,那么死鎖自然就發(fā)生了。
咱們可以總結(jié)下自旋鎖的特點(diǎn):
●單處理器非搶占內(nèi)核下:自旋鎖會(huì)在編譯時(shí)被忽略;
●單處理器搶占內(nèi)核下:自旋鎖僅僅當(dāng)作一個(gè)設(shè)置內(nèi)核搶占的開關(guān);
●多處理器下:此時(shí)才能完全發(fā)揮出自旋鎖的作用,自旋鎖在內(nèi)核中主要用來防止多處理器中并發(fā)訪問臨界區(qū),防止內(nèi)核搶占造成的競(jìng)爭(zhēng)。
五、linux搶占發(fā)生的時(shí)間
在了解下linux搶占發(fā)生的時(shí)間,搶占分為用戶搶占和內(nèi)核搶占。
用戶搶占在以下情況下產(chǎn)生:
●從系統(tǒng)調(diào)用返回用戶空間
●從中斷處理程序返回用戶空間
內(nèi)核搶占會(huì)發(fā)生在:
●當(dāng)從中斷處理程序返回內(nèi)核空間的時(shí)候,且當(dāng)時(shí)內(nèi)核具有可搶占性;
●當(dāng)內(nèi)核代碼再具有可搶占性的時(shí)候。(如:spin_unlock時(shí))
●如果內(nèi)核中的任務(wù)顯式的調(diào)用schedule()
●如果內(nèi)核中的任務(wù)阻塞。
基本的進(jìn)程調(diào)度就是發(fā)生在時(shí)鐘中斷后,并且發(fā)現(xiàn)進(jìn)程的時(shí)間片已經(jīng)使用完了,則發(fā)生進(jìn)程搶占。通常我們會(huì)利用中斷處理程序返回內(nèi)核空間的時(shí)候可以進(jìn)行內(nèi)核搶占這個(gè)特性來提高一些I/O操作的實(shí)時(shí)性,如:當(dāng)I/O事件發(fā)生的是時(shí)候,對(duì)應(yīng)的中斷處理程序被激活,當(dāng)它發(fā)現(xiàn)有進(jìn)程在等待這個(gè)I/O事件的時(shí)候,它會(huì)激活等待進(jìn)程,并且設(shè)置當(dāng)前正在執(zhí)行進(jìn)程的need_resched標(biāo)志,這樣在中斷處理程序返回的時(shí)候,調(diào)度程序被激活,原來在等待I/O事件的進(jìn)程(很可能)獲得執(zhí)行權(quán),
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)空氣凈化器能效等級(jí)制度對(duì)市場(chǎng)競(jìng)爭(zhēng)格局影響評(píng)估報(bào)告
- 綿陽(yáng)職業(yè)技術(shù)學(xué)院《明清小說研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國(guó)科技園節(jié)能環(huán)保產(chǎn)業(yè)發(fā)展模式與政策支持研究
- 2026浙江臺(tái)州椒江區(qū)社會(huì)事業(yè)發(fā)展集團(tuán)有限公司招聘工作人員的8人備考題庫(kù)參考答案詳解
- 中航集團(tuán)(國(guó)航股份)信息管理部2026屆高校畢業(yè)生校園招聘?jìng)淇碱}庫(kù)及答案詳解(易錯(cuò)題)
- 中國(guó)甲醇重整制氫設(shè)備能效提升與技術(shù)迭代趨勢(shì)報(bào)告
- 泰山護(hù)理職業(yè)學(xué)院《管理類專業(yè)導(dǎo)論》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國(guó)教育基金會(huì)資金使用效率與效益評(píng)估報(bào)告
- 2026浙江寧波市象山縣機(jī)關(guān)事業(yè)單位第一批招聘派遣制駕駛員和船員4人備考題庫(kù)有答案詳解
- 遼寧軌道交通職業(yè)學(xué)院《創(chuàng)業(yè)形象設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 果農(nóng)水果出售合同范本
- 2025年事業(yè)單位聯(lián)考A類職測(cè)真題及答案
- DB11-T 693-2024 施工現(xiàn)場(chǎng)臨建房屋應(yīng)用技術(shù)標(biāo)準(zhǔn)
- 起重機(jī)械安全風(fēng)險(xiǎn)辨識(shí)報(bào)告
- 2025年山東省村級(jí)后備干部選拔考試題(含答案)
- 村社長(zhǎng)考核管理辦法
- 兒童顱咽管瘤臨床特征與術(shù)后復(fù)發(fā)風(fēng)險(xiǎn)的深度剖析-基于151例病例研究
- 防潮墻面涂裝服務(wù)合同協(xié)議
- GB/T 15237-2025術(shù)語工作及術(shù)語科學(xué)詞匯
- 外賣跑腿管理制度
- 冷鏈物流配送合作協(xié)議
評(píng)論
0/150
提交評(píng)論