Поддерживать
www.wikidata.ru-ru.nina.az
Spin blokirovka ili spinlok angl spinlock ciklicheskaya blokirovka nizkourovnevyj primitiv primenyaemyj v mnogoprocessornyh sistemah dlya realizacii vzaimnogo isklyucheniya ispolneniya kriticheskih uchastkov koda s ispolzovaniem cikla aktivnogo ozhidaniya Primenyaetsya v sluchayah kogda ozhidanie zahvata blokirovki predpolagaetsya nedolgim libo esli kontekst vypolneniya ne pozvolyaet perehodit v zablokirovannoe sostoyanie Spin blokirovki yavlyayutsya analogami myuteksov pozvolyayushimi tratit menshe vremeni na proceduru blokirovki potoka poskolku ne trebuetsya perevodit potok v zablokirovannoe sostoyanie V sluchae myuteksov mozhet potrebovatsya zadejstvovanie planirovshika s perevodom potoka v drugoe sostoyanie i dobavleniem ego v spisok potokov ozhidayushih razblokirovki Spin blokirovki ne zadejstvuyut planirovshik i ispolzuyut cikl aktivnogo ozhidaniya bez izmeneniya sostoyaniya potoka chto privodit k trate processornogo vremeni na ozhidanie osvobozhdeniya blokirovki drugim potokom Tipovoj realizaciej spin blokirovki yavlyaetsya prostaya ciklicheskaya proverka peremennoj spin blokirovki na dostupnost Fizicheskaya realizaciyaFizicheski spinlok predstavlyaet soboj peremennuyu v pamyati i realizuetsya na atomarnyh operaciyah kotorye dolzhny prisutstvovat v sisteme komand processora Kazhdyj processor zhelayushij poluchit dostup k razdelyaemomu resursu atomarno zapisyvaet uslovnoe znachenie zanyato v etu peremennuyu ispolzuya analog operacii swap v arhitekture x86 xchg Esli predydushee znachenie peremennoj vozvrashaemoe komandoj bylo svobodno to schitaetsya chto dannyj processor poluchil dostup k resursu v protivnom sluchae processor vozvrashaetsya k operacii swap i v cikle proveryaet spinlok poka on ne budet osvobozhdyon Posle raboty s razdelyaemym resursom processor vladelec spinloka dolzhen zapisat v nego uslovnoe znachenie svobodno Primer realizacii spinloka na assemblere x86 mov eax spinlock address mov ebx SPINLOCK BUSY wait cycle xchg eax ebx xchg edinstvennaya instrukciya yavlyayushayasya atomarnoj bez prefiksa lock cmp ebx SPINLOCK FREE jnz wait cycle lt kriticheskaya sekciya zahvachena dannym potokom zdes idyot rabota s razdelyaemym resursom gt mov eax spinlock address mov ebx SPINLOCK FREE xchg eax ebx ispolzuetsya xchg dlya atomarnogo izmeneniya poslednie 3 instrukcii luchshe zamenit na mov spinlock address SPINLOCK FREE eto uvelichit skorost za schyot otsutstviya lishnej blokirovki shiny a mov i tak vypolnitsya atomarno no tolko esli adres spinlock address vyrovnen po granice dvojnogo slova Bolee intellektualnaya realizaciya budet ispolzovat obychnuyu a ne atomarnuyu operaciyu dlya oprosa v cikle a atomarnuyu operaciyu tolko dlya popytok zahvata Delo v tom chto realizaciya atomarnyh operacij s pamyatyu proishodit putyom apparatnogo blokirovaniya sistemnoj shiny processorom na vremya vypolneniya atomarnoj operacii kotoraya vklyuchaet chtenie modifikaciyu i zapis Vo vremya vypolneniya etih tryoh operacij vypolnenie kakih libo drugih operacij na shine nevozmozhno chto snizhaet proizvoditelnost drugih processorov v sisteme esli oni razdelyayut dazhe esli oni ne imeyut nikakogo otnosheniya k dannomu spinloku Takzhe ispolzuyutsya t n queued spinlocks spinloki s ocheredyu V nih vmesto prisvoeniya 0 ili 1 v atomarnuyu peremennuyu ispolzuetsya atomarnoe dobavlenie struktury na golovu spiska pri tom chto golova spiska est atomarnaya peremennaya tipa ukazatel Poleznye svojstva queued spinlockov garantiya poryadka predostavleniya v poryadke zaprosa garantiya ot golodanij v cikle oprosa kazhdyj processor oprashivaet svoyu lokalnuyu peremennuyu rovno 1 atomarnaya operaciya pri zahvate i rovno 1 pri osvobozhdenii Spinloki primenyayutsya dlya sinhronizacii nebolshih uchastkov koda kogda ispolzovanie bolee slozhnyh mehanizmov neopravdanno ili nevozmozhno Realizaciya primitivov sinhronizacii i obyazatelno trebuet blokirovok zashishayushih spiski potokov gotovyh k ispolneniyu i spiski potokov ozhidayushih na obektah Takaya blokirovka mozhet byt tolko spinlokom vvidu eyo ochen nizkogo urovnya Takim obrazom spinlok est nizshij primitiv sinhronizacii na kotorom osnovana realizaciya vseh ostalnyh Versii Windows ot Windows 7 vklyuchitelno ispolzuyut paradigmu lock free data structures dlya realizacii dispetchera planirovshika Tem samym oni izbavleny ot edinstvennogo globalnogo spinloka KiDispatcherLock odnogo iz samyh vysokonagruzhennyh v yadre OS Specifika mnogoprocessornyh i odnoprocessornyh konfiguracijBytuet rasprostranyonnoe mnenie o tom chto v polzovatelskih prilozheniyah rabotayushih pod upravleniem mnogozadachnyh OS ispolzovanie spinlokov nedopustimo tak kak ozhidanie osvobozhdeniya spinloka privodit k aktivnomu ozhidaniyu v cikle vpustuyu rashoduyushemu vychislitelnye resursy processora a dlya sinhronizacii polzovatelskih programm dolzhny primenyatsya vysokourovnevye primitivy kotorye predpolagayut passivnoe ozhidanie esli dannaya nit ne mozhet prodolzhit vypolnenie to ona otdayot upravlenie OS a ne krutitsya v cikle ozhidaniya spinloka kotoryj potencialno mozhet byt beskonechnym Na samom dele dannoe utverzhdenie yavlyaetsya spravedlivym na 100 tolko dlya odnoprocessornyh sistem Vo mnogih sluchayah primenenie spinlokov v SMP konfiguraciyah vedyot k povysheniyu effektivnosti v sluchae esli opros i zahvat spinloka okazyvayutsya bystree chem vyzov zahvata myuteksa v yadre Glavnym kriteriem zdes yavlyaetsya contention zhyostkost sorevnovaniya za resurs Slabonagruzhennyj resurs ne yavlyayushijsya populyarnym mestom ispolneniya vedyot sebya inache chem silno nagruzhennyj zahvatyvaemyj i osvobozhdaemyj ochen chasto Krome togo v toj zhe Windows est raznovidnosti myuteksov naprimer obsheizvestnaya CRITICAL SECTION EnterCriticalSection LeaveCriticalSection ili zhe eyo sinonim v yadre OS FAST MUTEX ExAcquireFastMutex ExReleaseFastMutex kotorye snachala rabotayut kak spinlock ispolzuya opros znacheniya v pamyati i tolko potom po istechenii bolshogo kolichestva oprosov perehodyat v yadro k blokiruyushemu ozhidaniyu Takie obekty sochetayut luchshie kachestva spinlokov minimalnaya cena zahvata i myuteksov otsutstvie rastraty resursa processora na opros Primenenie spinlokovSluchai kogda primenenie v prostranstve polzovatelya spinlokov dayot oshutimyj effekt Vnutri uchastka zashishaemogo koda nahoditsya neskolko svyazannyh peremennyh vremya modifikacii kotoryh mozhet byt v sotni i dazhe tysyachi raz menshe chem pereklyuchenie konteksta processorom chto yavlyaetsya osobenno dorogoj operaciej osobenno na sovremennyh sistemah Blokirovka ne uchastkov koda a dannyh s kazhdoj strukturoj dannyh kotoraya dolzhna atomarno izmenyatsya kak edinoe celoe svyazan spinlok eyo zashishayushij Optimizaciya koda kogda neobhodimo umenshit nagruzku voznikayushuyu za schyot slishkom chastogo pereklyucheniya konteksta Odnako ispolzovanie bystryh myuteksov takih kak CRITICAL SECTION v Win32 delaet vse vysheperechislennoe nenuzhnym v prostranstve polzovatelya Sluchai kogda primenenie spinlokov ne opravdano i yavlyaetsya pustoj tratoj processornyh resursov Dlitelnye vnutri zashishaemogo uchastka koda diskovyj i setevoj vvod vyvod mozhet vypolnyatsya ochen dolgo po processornym merkam Odnoprocessornye konfiguracii ves ostatok kvanta vremeni processor provodit v holostom cikle Problemy spinlokov i metody ih resheniyaNa sovremennyh processorah cikl ozhidaniya mozhet vypolnyatsya ochen bystro za schet osobennostej konvejernoj arhitektury chto pomimo namatyvaniya holostyh ciklov mozhet privodit k bolee intensivnomu nagrevu chem pri obychnoj rabote V Pentium 4 i posleduyushih modelyah processorov Intel vvedena specialnaya assemblernaya komanda dlya vstavki vnutr cikla pause opkod 0xf3 0x90 analogichnyj komande rep nop dlya sovmestimosti so starymi processorami prednaznachenie kotoroj proinstruktirovat processor chto dannyj cikl yavlyaetsya ciklom ozhidaniya i pozvolyaet processoru s podderzhkoj neskolkih potokov na odnom yadre perejti k sleduyushemu potoku Versii Windows ot Windows 7 optimizirovany na rabotu v kachestve gostya v virtualnoj mashine i v nih vmesto pause v sluchayah kogda OS ispolnyaetsya kak gost ispolzuetsya specialnyj vyzov uvedomit gipervizor o tom chto my v cikle ozhidaniya Alternativy spinlokovSpinloki sluzhat dlya obespecheniya monopolnogo dostupa potoka k zashishaemoj strukture dannyh Pri etom ne delaetsya razlichiya ni mezhdu samimi potokami ni mezhdu proizvodimymi operaciyami Odnako zachastuyu v realnyh prilozheniyah potoki mozhno razdelit na chitayushie i pishushie Dlya dannogo nesimmetrichnogo sluchaya bolee celesoobrazno primenyat blokirovki chteniya zapisi Struktura mozhet odnovremenno ispolzovatsya neogranichennym kolichestvom potokov v rezhime tolko chtenie vmeste s tem davaya zashitu celostnosti dannyh pri prihode pishushego potoka Sushestvuyut takzhe algoritmy bez blokirovok osnovannye na atomarnom detektirovanii kollizij Oni optimizirovany pod optimistichnyj sluchaj pri kotorom vsya proverka na kolliziyu svoditsya k odnoj atomarnoj assemblernoj operacii Compare And Swap na x86 arhitekture komanda Prochie modifikacii spinlokovSpinlok s avtomaticheskim narashivaniem do zahvata polnocennogo myuteksa posle istecheniya kakogo to kolichestva oborotov cikla primenyaetsya naprimer v kriticheskih sekciyah Windows dlya optimizacii zaklyuchayushejsya v otsutstvii obrashenij k myuteksu pri otsutstvii sorevnovaniya za resurs Sm takzheDispatch level DPC IRQLPrimechaniyaIEEE The Open Group Rationale for System Interfaces General Information angl The Open Group Base Specifications Issue 7 2018 edition The Open Group 2018 Data obrasheniya 20 iyunya 2020 18 iyunya 2020 goda Tanenbaum 2011 2 3 3 Vzaimnoe isklyuchenie s aktivnym ozhidaniem Strogoe cheredovanie p 156 Oleg Cilyurik www ibm com 2013 13 avgusta Data obrasheniya 12 06 2019 LiteraturaM Russinovich D Solomon 1 Vnutrennee ustrojstvo Microsoft Windows 6 e izd SPb Piter 2013 S 218 222 800 s Master klass ISBN 978 5 459 01730 4 Uolter Oni Ispolzovanie Microsoft Windows Driver Model 2 e izd SPb Piter 2007 S 173 178 764 s ISBN 978 5 91180 057 4 Endryu S Tanenbaum Sovremennye operacionnye sistemy Modern Operating Systems 3 e izdanie SPb Piter Izdatelskij dom Piter 2011 S 165 170 1117 s Klassika computer science ISBN 9785459007572 Dlya uluchsheniya etoj stati zhelatelno Oformit statyu po pravilam Najti i oformit v vide snosok ssylki na nezavisimye avtoritetnye istochniki podtverzhdayushie napisannoe Posle ispravleniya problemy isklyuchite eyo iz spiska Udalite shablon esli ustraneny vse nedostatki
Вершина