中文名 | 自旋鎖 | 外文名 | Spin lock |
---|---|---|---|
概????念 | 保護共享資源 | 初????衷 | 在短期間內(nèi)進(jìn)行輕量級的鎖定 |
在單處理機環(huán)境中可以使用特定的原子級匯編指令swap和test_and_set實現(xiàn)進(jìn)程互斥,(Swap指令:交換兩個內(nèi)存單元的內(nèi)容;test_and_set指令取出內(nèi)存某一單元(位)的值,然后再給該單元(位)賦一個新值,關(guān)于為何這兩條指令能實現(xiàn)互斥我們不在贅述,讀者可以了解其算法) 這些指令涉及對同一存儲單元的兩次或兩次以上操作,這些操作將在幾個指令周期內(nèi)完成,但由于中斷只能發(fā)生在兩條機器指令之間,而同一指令內(nèi)的多個指令周期不可中斷,從而保證swap指令或test_and_set指令的執(zhí)行不會交叉進(jìn)行.
但在多處理機環(huán)境中情況有所不同,例如test_and_set指令包括“取”、“送”兩個指令周期,兩個CPU執(zhí)行test_and_set(lock)可能發(fā)生指令周期上的交叉,假如lock初始為0, CPU1和CPU2可能分別執(zhí)行完前一個指令周期并通過檢測(均為0),然后分別執(zhí)行后一個指令周期將lock設(shè)置為1,結(jié)果都取回0作為判斷臨界區(qū)空閑的依據(jù),從而不能實現(xiàn)互斥。
為在多CPU環(huán)境中利用test_and_set指令實現(xiàn)進(jìn)程互斥,硬件需要提供進(jìn)一步的支持,以保證test_and_set指令執(zhí)行的原子性. 這種支持多以“鎖總線”(bus locking)的形式提供的,由于test_and_set指令對內(nèi)存的兩次操作都需要經(jīng)過總線,在執(zhí)行test_and_set指令之前鎖住總線,在執(zhí)行test_and_set指令后開放總線,即可保證test_and_set指令執(zhí)行的原子性,用法如下:
算法4-6:多處理機互斥算法(自旋鎖算法)
do{
b=1;
while(b){
lock(bus);
b = test_and_set(&lock);
unlock(bus);
}
臨界區(qū)
lock = 0;
其余部分
}while(1)
總之,自旋鎖是一種對多處理器相當(dāng)有效的機制,而在單處理器非搶占式的系統(tǒng)中基本上沒有作用。自旋鎖在SMP系統(tǒng)中應(yīng)用得相當(dāng)普遍。在許多SMP系統(tǒng)中,允許多個處理機同時執(zhí)行目態(tài)程序,而一次只允許一個處理機執(zhí)行操作系統(tǒng)代碼,利用一個自旋鎖可以很容易實現(xiàn)這種控制.一次只允許一個CPU執(zhí)行核心代碼并發(fā)性不夠高,若期望核心程序在多CPU之間的并行執(zhí)行,將核心分為若干相對獨立的部分,不同的CPU可以同時進(jìn)入和執(zhí)行核心中的不同部分,實現(xiàn)時可以為每個相對獨立的區(qū)域設(shè)置一個自旋鎖.
事實上,自旋鎖的初衷就是:在短期間內(nèi)進(jìn)行輕量級的鎖定。一個被爭用的自旋鎖使得請求它的線程在等待鎖重新可用的期間進(jìn)行自旋(特別浪費處理器時間),所以自旋鎖不應(yīng)該被持有時間過長。如果需要長時間鎖定的話, 最好使用信號量。
1自旋鎖實際上是忙等鎖
當(dāng)鎖不可用時,CPU一直循環(huán)執(zhí)行“測試并設(shè)置”該鎖直到可用而取得該鎖,CPU在等待自旋鎖時不做任何有用的工作,僅僅是等待。因此,只有在占用鎖的時間極短的情況下,使用自旋鎖才是合理的。當(dāng)臨界區(qū)很大或有共享設(shè)備的時候,需要較長時間占用鎖,使用自旋鎖會降低系統(tǒng)的性能。
自旋鎖可能導(dǎo)致系統(tǒng)死鎖
引發(fā)這個問題最常見的情況是遞歸使用一個自旋鎖,即如果一個已經(jīng)擁有某個自旋鎖的CPU 想第二次獲得這個自旋鎖,則該CPU 將死鎖。此外,如果進(jìn)程獲得自旋鎖之后再阻塞,也有可能導(dǎo)致死鎖的發(fā)生。copy_from_user()、copy_to_user()和kmalloc()等函數(shù)都有可能引起阻塞,因此在自旋鎖的占用期間不能調(diào)用這些函數(shù)。代碼清單7.2 給出了自旋鎖的使用實例,它被用于實現(xiàn)使得設(shè)備只能被最多一個進(jìn)程打開。
何謂自旋鎖?它是為實現(xiàn)保護共享資源而提出一種鎖機制。其實,自旋鎖與互斥鎖比較類似,它們都是為了解決對某項資源的互斥使用。無論是互斥鎖,還是自旋鎖,在任何時刻,最多只能有一個保持者,也就說,在任何時刻最多只能有一個執(zhí)行單元獲得鎖。但是兩者在調(diào)度機制上略有不同。對于互斥鎖,如果資源已經(jīng)被占用,資源申請者只能進(jìn)入睡眠狀態(tài)。但是自旋鎖不會引起調(diào)用者睡眠,如果自旋鎖已經(jīng)被別的執(zhí)行單元保持,調(diào)用者就一直循環(huán)在那里看是否該自旋鎖的保持者已經(jīng)釋放了鎖,"自旋"一詞就是因此而得名。
你好,自旋轉(zhuǎn)噴頭的優(yōu)點是不用人在噴頭下面轉(zhuǎn)來轉(zhuǎn)去的,但是自動旋轉(zhuǎn)噴頭有個缺點就是很容易漏水,如果不洗頭的話就很不好用,但是要洗頭洗澡一起的話就很好用了,還是很有好處的。
a鎖b鎖c鎖外觀上不明顯。簡單來說下吧,A級是最原始也是最不安全的鎖芯,防盜時間2-5分鐘,是單排槽,B級是較安全的是雙排槽,防盜時間15-30分,超B級是目前來說最安全的一側(cè)為雙一側(cè)是曲線槽,防盜時...
電氣那塊的話1 所謂自鎖,即依靠接觸器自身的輔助觸點而使其線圈保持通電的現(xiàn)象。 2 電器控制或機械操作機構(gòu)用語。比如電器控制中同一個電機的“開”和“關(guān)”兩個點動按鈕應(yīng)實現(xiàn)互鎖控制,即按下其中一個按...
跟互斥鎖一樣,一個執(zhí)行單元要想訪問被自旋鎖保護的共享資源,必須先得到鎖,在訪問完共享資源后,必須釋放鎖。如果在獲取自旋鎖時,沒有任何執(zhí)行單元保持該鎖,那么將立即得到鎖;如果在獲取自旋鎖時鎖已經(jīng)有保持者,那么獲取鎖操作將自旋在那里,直到該自旋鎖的保持者釋放了鎖。由此我們可以看出,自旋鎖是一種比較低級的保護數(shù)據(jù)結(jié)構(gòu)或代碼片段的原始方式,這種鎖可能存在兩個問題:
死鎖。試圖遞歸地獲得自旋鎖必然會引起死鎖:遞歸程序的持有實例在第二個實例循環(huán),以試圖獲得相同自旋鎖時,不會釋放此自旋鎖。在遞歸程序中使用自旋鎖應(yīng)遵守下列策略:遞歸程序決不能在持有自旋鎖時調(diào)用它自己,也決不能在遞歸調(diào)用時試圖獲得相同的自旋鎖。此外如果一個進(jìn)程已經(jīng)將資源鎖定,那么,即使其它申請這個資源的進(jìn)程不停地瘋狂“自旋”,也無法獲得資源,從而進(jìn)入死循環(huán)。
過多占用cpu資源。如果不加限制,由于申請者一直在循環(huán)等待,因此自旋鎖在鎖定的時候,如果不成功,不會睡眠,會持續(xù)的嘗試,單cpu的時候自旋鎖會讓其它process動不了. 因此,一般自旋鎖實現(xiàn)會有一個參數(shù)限定最多持續(xù)嘗試次數(shù). 超出后, 自旋鎖放棄當(dāng)前time slice. 等下一次機會。
由此可見,自旋鎖比較適用于鎖使用者保持鎖時間比較短的情況。正是由于自旋鎖使用者一般保持鎖時間非常短,因此選擇自旋而不是睡眠是非常必要的,自旋鎖的效率遠(yuǎn)高于互斥鎖。信號量和讀寫信號量適合于保持時間較長的情況,它們會導(dǎo)致調(diào)用者睡眠,因此只能在進(jìn)程上下文使用,而自旋鎖適合于保持時間非常短的情況,它可以在任何上下文使用。如果被保護的共享資源只在進(jìn)程上下文訪問,使用信號量保護該共享資源非常合適,如果對共享資源的訪問時間非常短,自旋鎖也可以。但是如果被保護的共享資源需要在中斷上下文訪問(包括底半部即中斷處理句柄和頂半部即軟中斷),就必須使用自旋鎖。自旋鎖保持期間是搶占失效的,而信號量和讀寫信號量保持期間是可以被搶占的。自旋鎖只有在內(nèi)核可搶占或SMP(多處理器)的情況下才真正需要,在單CPU且不可搶占的內(nèi)核下,自旋鎖的所有操作都是空操作。
上面簡要介紹了自旋鎖的基本原理,以下將給出具體的例子,進(jìn)一步闡釋自旋鎖在實際系統(tǒng)中的應(yīng)用。上面我們已經(jīng)講過自旋鎖只有在內(nèi)核可搶占或SMP(多處理器)的情況下才真正需要,下面我們就以SMP為例,來說明為什么要使用自旋鎖,以及自旋鎖實現(xiàn)的基本算法。
自旋鎖的基本形式如下:
spin_lock(&mr_lock);
//臨界區(qū)
spin_unlock(&mr_lock);
因為自旋鎖在同一時刻只能被最多一個內(nèi)核任務(wù)持有,所以一個時刻只有一個線程允許存在于臨界區(qū)中。這點很好地滿足了對稱多處理機器需要的鎖定服務(wù)。在單處理器上,自旋鎖僅僅當(dāng)作一個設(shè)置內(nèi)核搶占的開關(guān)。如果內(nèi)核搶占也不存在,那么自旋鎖會在編譯時被完全剔除出內(nèi)核。
簡單的說,自旋鎖在內(nèi)核中主要用來防止多處理器中并發(fā)訪問臨界區(qū),防止內(nèi)核搶占造成的競爭。另外自旋鎖不允許任務(wù)睡眠(持有自旋鎖的任務(wù)睡眠會造成自死鎖——因為睡眠有可能造成持有鎖的內(nèi)核任務(wù)被重新調(diào)度,而再次申請自己已持有的鎖),它能夠在中斷上下文中使用。
死鎖:假設(shè)有一個或多個內(nèi)核任務(wù)和一個或多個資源,每個內(nèi)核都在等待其中的一個資源,但所有的資源都已經(jīng)被占用了。這便會發(fā)生所有內(nèi)核任務(wù)都在相互等待,但它們永遠(yuǎn)不會釋放已經(jīng)占有的資源,于是任何內(nèi)核任務(wù)都無法獲得所需要的資源,無法繼續(xù)運行,這便意味著死鎖發(fā)生了。自死瑣是說自己占有了某個資源,然后自己又申請自己已占有的資源,顯然不可能再獲得該資源,因此就自縛手腳了。
格式:pdf
大?。?span id="cg8gqe0" class="single-tag-height">1.3MB
頁數(shù): 5頁
評分: 4.6
在對砂土層螺旋錨桿進(jìn)行錨固機理分析的基礎(chǔ)上,把錨葉阻力和砂土摩擦阻力結(jié)合考慮,對原來螺旋錨桿的錨固段進(jìn)行改進(jìn)。采用高密度擠壓摩擦錨固的理念設(shè)計錨桿和自攻旋進(jìn)安裝工藝。通過在西安地區(qū)5個典型的砂土層進(jìn)行可行性試驗后設(shè)計出適合砂土層的自旋錨桿。在西安地鐵2#線TJSG-4標(biāo)段的基坑支護中經(jīng)過工業(yè)試驗,證明了理論與實踐的可靠性。
格式:pdf
大?。?span id="2oacmes" class="single-tag-height">1.3MB
頁數(shù): 2頁
評分: 3
基坑工程自旋式可回收土錨設(shè)計和應(yīng)用——作為一種新型的基坑支護措施,自旋式可回收土錨在西安地鐵基坑中使用,該種土錨采用等間距螺旋式錨葉,在安裝過程中進(jìn)行排土,對土層擾動較小。本文給出土錨的結(jié)構(gòu)設(shè)計、詳細(xì)的下錨方法和回收方法。通過對土錨的拉拔試驗...
1.如何將自旋電流從鐵磁電極S高效率地注入半導(dǎo)體?——這可利用“磁性半導(dǎo)體”來實現(xiàn),這種半導(dǎo)體可通過較低電壓來控制它在非磁狀態(tài)和鐵磁狀態(tài)這兩種狀態(tài)之間進(jìn)行轉(zhuǎn)換(自旋開關(guān)),并且可用作為自旋過濾器(讓一種自旋狀態(tài)通過, 阻止另一種自旋狀態(tài)通過)。但是磁性半導(dǎo)體的制備尚不成熟。
2.半導(dǎo)體自旋電子器件對磁性半導(dǎo)體的基本要求是:電子的自旋極化狀態(tài)在穿越半導(dǎo)體或進(jìn)入另一種材料時, 要能很好地保持不變, 即自旋極化喪失的速度要慢, 自旋電流的極化要能長時間維持——自旋相干時間要長。
自旋錨管是一種基于螺旋錨固技術(shù)基礎(chǔ)上新的全功能錨桿。
自旋錨管揚棄傳統(tǒng)螺旋錨桿的大錨葉阻力結(jié)構(gòu),采用連續(xù)小旋絲質(zhì)量分散中空結(jié)構(gòu)。在這種基本結(jié)構(gòu)的基礎(chǔ)上改變中空結(jié)構(gòu)或增加不同的鉆眼裝置就派生出一系列適應(yīng)于不同地質(zhì)和施工情況的全功能錨桿體系。自旋錨管能夠?qū)崿F(xiàn)樹脂錨桿、普通砂漿錨桿、中空注漿錨桿、自鉆錨桿、讓壓錨桿和噴漿錨桿的功能,特別適應(yīng)于松軟破碎巖土工程。
自旋錨管最大的優(yōu)點是在同等級抗拉能級錨桿的基礎(chǔ)上抗剪能力提高5倍以上。抗彎能力提高10倍以上,而且自旋錨管可以采用鉆錨一次完成的快速施工工藝。使得該品種錨桿能夠適應(yīng)于任何巖土地層。
自旋錨管現(xiàn)在已經(jīng)成為一個新的錨桿體系:Self-screwed Tube Bolting System(STBS"para" label-module="para">
1.1 工程范疇
自鉆、自旋、自錨固——任何地層都適應(yīng)
注漿、噴漿、旋噴漿——任何情況都有效
主要應(yīng)用到復(fù)雜邊坡、破碎圍巖隧道、煤礦巷道順槽、地鐵基坑工程或地下工程的明挖樁錨和暗挖超前支護領(lǐng)域,具有快速及時錨固和可回收的功能。
2 自旋錨管體系Self-screwed Tube Bolting System(STBS?)
(自旋錨管〓普通錨桿 自鉆錨桿 注漿錨桿)
2.1 自攻旋進(jìn)錨管Self-screwed Drilling Tube Bolt(SDTB?)
在巖體鉆孔中自攻旋進(jìn)安裝不使用錨固劑軟巖中錨固力50KN/m,在土層中無需鉆孔直接擠壓旋進(jìn)安裝錨固力20KN/m
創(chuàng)新點:土層中不鉆眼,不使用錨固劑的全長錨固錨桿
優(yōu)點:成本低,施工速度快,擠壓強化土體結(jié)構(gòu)使土體承載力大大提高。
缺點:各項參數(shù)配合恰當(dāng)。鉆機扭矩要求大,個別情況下單位錨固力小。
2.2 自旋注漿錨管Self-screwed Slip Casting Tube Bolt(SSCTB?)
在鉆孔中安裝結(jié)束后利用自旋錨管注漿就成為具有初錨力的自旋注漿錨桿
創(chuàng)新點:具有初錨力且是全長錨固的注漿錨桿
優(yōu)點:具有一定初錨力,適應(yīng)于各種松軟巖土體
缺點:注漿程序占用時間,施工環(huán)境差,速度受限制
2.3 自旋樹脂錨管Self-screwed Resin Tube Bolt(SRTB?)
在鉆孔中安裝的同時自旋錨管將樹脂藥卷攪拌具有初錨力的自旋樹脂錨桿
創(chuàng)新點:藥卷攪拌結(jié)束立即施加預(yù)應(yīng)力的樹脂錨桿
優(yōu)點:錨固可靠,適應(yīng)性廣
缺點:錨桿安裝需要專用鉆具
2.4 自鉆旋進(jìn)錨管Self-screwed Rod Drilling Tube Bolt(SRDTB?)
在自旋錨管中空內(nèi)放入鉆桿使鉆眼安裝一次完成是具有初錨力的自鉆錨桿
創(chuàng)新點:鉆眼安裝一次完成且具有初錨力的自鉆錨桿
優(yōu)點:有一定的初錨力,安裝快速,適應(yīng)于任何巖土層
缺點:施工需要專用鉆具
2.5 自旋噴漿錨管Self-screwed Full Injecting Tube Bolt(SFITB?)
在土層中邊噴漿邊鉆進(jìn)安裝錨注一次完成錨固力35KN/m
創(chuàng)新點:鉆眼安裝和注漿一次完成的土層錨桿
優(yōu)點:適應(yīng)于松散巖土體
缺點:不能用于巖體破碎帶松散體2100433B
自旋錨管揚棄傳統(tǒng)螺旋錨桿的大錨葉阻力結(jié)構(gòu),采用連續(xù)小旋絲質(zhì)量分散中空結(jié)構(gòu)。在這種基本結(jié)構(gòu)的基礎(chǔ)上改變中空結(jié)構(gòu)或增加不同的鉆眼裝置就派生出一系列適應(yīng)于不同地質(zhì)和施工情況的全功能錨桿體系。自旋錨管能夠?qū)崿F(xiàn)樹脂錨桿、普通砂漿錨桿、中空注漿錨桿、自鉆錨桿、讓壓錨桿和噴漿錨桿的功能,特別適應(yīng)于松軟破碎巖土工程。
自旋錨管最大的優(yōu)點是在同等級抗拉能級錨桿的基礎(chǔ)上抗剪能力提高5倍以上??箯澞芰μ岣?0倍以上,而且自旋錨管可以采用鉆錨一次完成的快速施工工藝。使得該品種錨桿能夠適應(yīng)于任何巖土地層。
自旋錨管現(xiàn)在已經(jīng)成為一個新的錨桿體系:Self-screwed Tube Bolting System(STBS?)
1.1 工程范疇
自鉆、自旋、自錨固--任何地層都適應(yīng)
注漿、噴漿、旋噴漿--任何情況都有效
主要應(yīng)用到復(fù)雜邊坡、破碎圍巖隧道、煤礦巷道順槽、地鐵基坑工程或地下工程的明挖樁錨和暗挖超前支護領(lǐng)域,具有快速及時錨固和可回收的功能。
2 自旋錨管體系Self-screwed Tube Bolting System(STBS©)
(自旋錨管〓普通錨桿+自鉆錨桿+注漿錨桿)
2.1 自攻旋進(jìn)錨管Self-screwed Drilling Tube Bolt(SDTB©)
在巖體鉆孔中自攻旋進(jìn)安裝不使用錨固劑軟巖中錨固力50KN/m,在土層中無需鉆孔直接擠壓旋進(jìn)安裝錨固力20KN/m
創(chuàng)新點:土層中不鉆眼,不使用錨固劑的全長錨固錨桿
優(yōu)點:成本低,施工速度快,擠壓強化土體結(jié)構(gòu)使土體承載力大大提高。
缺點:各項參數(shù)配合恰當(dāng)。鉆機扭矩要求大,個別情況下單位錨固力小。
2.2 自旋注漿錨管Self-screwed Slip Casting Tube Bolt(SSCTB©)
在鉆孔中安裝結(jié)束后利用自旋錨管注漿就成為具有初錨力的自旋注漿錨桿
創(chuàng)新點:具有初錨力且是全長錨固的注漿錨桿
優(yōu)點:具有一定初錨力,適應(yīng)于各種松軟巖土體
缺點:注漿程序占用時間,施工環(huán)境差,速度受限制
2.3 自旋樹脂錨管Self-screwed Resin Tube Bolt(SRTB©)
在鉆孔中安裝的同時自旋錨管將樹脂藥卷攪拌具有初錨力的自旋樹脂錨桿
創(chuàng)新點:藥卷攪拌結(jié)束立即施加預(yù)應(yīng)力的樹脂錨桿
優(yōu)點:錨固可靠,適應(yīng)性廣
缺點:錨桿安裝需要專用鉆具
2.4 自鉆旋進(jìn)錨管Self-screwed Rod Drilling Tube Bolt(SRDTB©)
在自旋錨管中空內(nèi)放入鉆桿使鉆眼安裝一次完成是具有初錨力的自鉆錨桿
創(chuàng)新點:鉆眼安裝一次完成且具有初錨力的自鉆錨桿
優(yōu)點:有一定的初錨力,安裝快速,適應(yīng)于任何巖土層
缺點:施工需要專用鉆具
2.5 自旋噴漿錨管Self-screwed Full Injecting Tube Bolt(SFITB©)
在土層中邊噴漿邊鉆進(jìn)安裝錨注一次完成錨固力35KN/m
創(chuàng)新點:鉆眼安裝和注漿一次完成的土層錨桿
優(yōu)點:適應(yīng)于松散巖土體
缺點:不能用于巖體破碎帶松散體