www.wikidata.uk-ua.nina.az
Dokladnishe Potik ta BagatopotokovistPotik u Windows realizaciya potokiv v rodini operacijnih sistem Windows strukturi vseredini procesu yaki mistyat vikonuvanij kod ta otrimuyut procesornij chas dlya jogo vikonannya z metoyu odnochasnogo chi psevdo odnochasnogo vikonannya kilkoh zadach 1 Novostvorenij proces maye odin potik vikonannya i pid chas roboti mozhe porodzhuvati inshi potoki i zupinyati yih 2 Algoritmi yaki realizuyetsya u kilkoh potokah nazivayut bagatopotokovimi Zmist 1 Perevagi bagatopotokovosti 2 Zagalna harakteristika potokiv 2 1 Kontekst potoku 2 2 Rivni prioritetu potokiv 2 3 Stani potokiv 3 Planuvannya potokiv u Windows 4 Stvorennya potoku 5 Konkurenciya konflikt potokiv 6 Volokna 7 DzherelaPerevagi bagatopotokovosti RedaguvatiBagatopotokovist programi stvoryuye pidgruntya dlya realizaciyi realnoyi bagatozadachnosti vikonannya kilkoh zavdan odnochasno yaksho obchislyuvalna sistema ye bagatoprocesornoyu abo psevdoodnochasno majzhe odnochasno na odnoprocesornih sistemah Nayavnist kilkoh potokiv dozvolyaye Optimizuvati organizaciyu povedinki programi Chasto povedinka programi mozhe buti organizovana u kilka nezalezhnih paralelnih algoritmiv todi yih mozhna vinesti v okremi potoku Pri comu yim mozhna zadavati riznij prioritet vikonannya Obhoditi kritichni do chasu operaciyi Yaksho programa maye lishe odin potik to vona povinna zupiniti vse vikonannya pri ochikuvanni povilnih operacij takih yak zapis u fajl chi vidobrazhennya zasobami multimedia Pri comu procesor perebuvaye u prostoyi poki cya operaciya ne zavershitsya Yaksho zastosunok skladayetsya z kilkoh potokiv vin mozhe prodovzhuvati vikonannya v okremih potokah koli odin potik ochikuvatime na zavershennya povilnoyi operaciyi Realizuvati bagatoprocesornu obrobku Yaksho sistema u yakij pracyuye programa ye multiprocesornoyu to mozhna spovna skoristatis nayavnimi obchislyuvalnimi resursami i pidvishiti yiyi efektivnist shlyahom vikoristannyam kilkoh potokiv Pri comu rizni potoki mozhut vikonuvatis odnochasno na riznih procesorah Takim chinom docilne vikoristannya potokiv mozhe znachno polipshiti produktivnist i zruchnist vikoristannya program Na odnomu procesori bagatopotokovist vidbuvayetsya shlyahom timchasovoyi aktivizaciyi riznih potokiv Take peremikannya vidbuvayetsya dosit chasto shob koristuvach sprijmav vikonannya potokiv yak odnochasne U bagatoprocesornih i bagatoyadernih sistemah potoki mozhut realno vikonuvatis odnochasno Pri comu kozhen procesor abo yadro obroblyaye okremij potik abo kilka potokiv Zagalna harakteristika potokiv RedaguvatiHocha v kozhnogo potoku ye svij kontekst vikonannya Kozhnij potik useredini odnogo procesu vikoristovuye jogo virtualnij adresnij prostir a takozh inshi resursi yaki nalezhat procesu Ce oznachaye sho vsi potoki v procesi mozhut zapisuvati j zchituvati vmist pam yati inshih potokiv cogo procesu Ale potoki ne mozhut posilatisya na adresnij prostir inshogo procesu Vinyatok mozhe buti v situaciyi koli proces nadaye chastinu svogo adresnogo prostoru yak rozdil zagalnoyi pam yati cherez ob yekt proektovanij fajl file mapping object abo koli odin iz procesiv maye pravo na vidkrittya inshogo procesu j vikoristovuye funkciyi dostupu do pam yati mizh procesami Za zamovchuvannyam u potokiv nemaye vlasnogo markera dostupu ale vin mozhe otrimati jogo i ce dozvolit jomu pidminyati kontekst zahistu inshogo procesu Potik mistit taki vazhlivi elementi zavantazhenij dlya vikonannya kod vmist naboru registriv procesora sho vidobrazhayut stan procesora dva steki odin iz yakih vikoristovuyetsya potokom pri vikonanni v rezhimi yadra a inshij u koristuvackomu rezhimi zakritu oblast pam yati yaku nazivayut lokalnoyu pam yattyu potoku thread local storage TLS vona vikoristovuyetsya pidsistemami bibliotekami vikonuvanih sistem run time libraries i DLL unikalnij identifikator potoku inodi potoki mayut svij kontekst zahistu yakij vikoristovuyetsya bagatopotokovimi servernimi programami sho pidminyayut kontekst zahistu kliyentiv Kontekst potoku Redaguvati Vmist zminnih registriv steku j lokalnih oblastej pam yati nazivayut kontekstom potoku Oskilki cya informaciya vidminna dlya kozhnoyi aparatnoyi platformi na yakij mozhe pracyuvati Windows vidpovidna struktura danih takozh ye platformo zalezhnoyu Funkciya GetThreadContext nadaye dostup do ciyeyi aparatno zalezhnoyi informaciyi yaku nazivayut blokom CONTEXT Rivni prioritetu potokiv Redaguvati nbsp Rivni prioritetu potokivWindows maye 32 rivnya prioritetu vid 0 do 31 Voni grupuyutsya yak 3 shistnadcyat rivniv realnogo chasu 16 31 p yatnadcyat dinamichnih rivniv 1 15 odin sistemnij riven 0 zarezervovanij dlya potoku obnulinnya storinok pam yati zero page thread U mezhah kozhnogo klasu prioritetu mozhut buti nastupni rivni prioritetu potokiv 1 THREAD PRIORITY IDLE THREAD PRIORITY LOWEST THREAD PRIORITY BELOW NORMAL THREAD PRIORITY NORMAL THREAD PRIORITY ABOVE NORMAL THREAD PRIORITY HIGHEST THREAD PRIORITY TIME CRITICAL Za zamovchuvannyam potoki stvoryuyutsya iz znachennyam prioritetu THREAD PRIORITY NORMAL Znachennya rivniv prioritetu potokiv THREAD PRIORITY ABOVE NORMAL ta THREAD PRIORITY HIGHEST najchastishe vikoristovuyutsya u potokah sho priznacheni dlya vzayemozv yazku z koristuvachami Fonovi potoki yaki ne potrebuyut znachnih procesornih resursiv mozhut mati prioritet THREAD PRIORITY BELOW NORMAL abo THREAD PRIORITY LOWEST Rivni prioritetu potoku priznachayutsya z urahuvannyam dvoh riznih tochok zoru Windows API i yadra Windows 4 Windows API spochatku vporyadkovuye procesi za klasami prioritetu priznachenimi pri yihnomu stvorenni Realtime realnogo chasu High visokij Above Normal vishe zvichajnogo Normal zvichajnij Below Normal nizhche zvichajnogo i Idle prostoyuyuchij a potim za vidnosnim prioritetom individualnih potokiv u mezhah cih procesiv Time critical kritichnij za chasom Highest najvishij Above Normal vishe zvichajnogo Normal zvichajnij Below Normal nizhche zvichajnogo Lowest najmenshij i Idle prostoyuyuchij Bazovij prioritet kozhnogo potoku u Windows API vstanovlyuyetsya vihodyachi iz klasu prioritetu yiyi procesu j vidnosnogo prioritetu samogo potoku Stani potokiv Redaguvati nbsp Stani potokiv u Windows ta mozhlivi perehodi mizh stanamiStani potokiv 1 Initialized inicializovanij Ready gotovij Standby prostoyuye Running vikonuyetsya Waiting ochikuye Transition perehidnij stan Terminated zavershenij Planuvannya potokiv u Windows RedaguvatiDetalnishe Planuvannya potokivSistemnij algoritm keruvannya poslidovnistyu vikonannya potokiv ta rozpodilu procesornogo chasu mizh nimi nazivayut planuvannyam potokiv U Windows realizovano pidsistemu vitiskuyuchogo planuvannya potokiv na osnovi rivniv prioritetu u yakij zavzhdi vikonuyetsya gotovij do vikonannya potik z najbilshim prioritetom 4 Ale vibir potoku dlya vikonannya mozhe buti obmezhenij naborom procesoriv na yakih vona mozhe pracyuvati Ce yavishe nazivayut priv yazkoyu do procesoriv processor affinity Za zamovchuvannyam potik vikonuyetsya na bud yakomu dostupnomu procesori ale mozhna zminiti priv yazku do procesoriv cherez funkciyi planuvannya Stvorennya potoku RedaguvatiZhittyevij cikl potoku pochinayetsya pri jogo stvorenni programoyu Zapit na stvorennya potoku nadhodit vikonavchij sistemi Windows dispetcher procesiv vidilyaye pam yat dlya ob yekta potik i viklikaye yadro dlya inicializaciyi bloku potoku Nizhche pererahovani osnovni etapi stvorennya potoku funkciyeyu API CreateThread vona mistitsya v Kernel32 dll 5 Stvorennya steku koristuvackogo rezhimu v adresnomu prostori procesu Inicializaciya aparatnogo kontekstu potoku specifichnogo dlya konkretnoyi arhitekturi procesora Dlya stvorennya ob yekta potik vikonavchoyi sistemi viklikayetsya NtCreateThread CreateThread povidomlyaye pidsistemu Windows pro stvorennya novogo potoku i ta vikonuye pidgotovchi operaciyi Viklikayuchomu kodu povertayutsya deskriptor i identifikator potoku zgenerovanij na poperednomu etapi Vikonannya potoku vidnovlyuyetsya i jomu mozhe buti vidileno procesornij chas yaksho vin ne buv stvorenij iz praporcem CREATE SUSPENDED Funkciya CreateThread ogoloshena tak viznachennya za dopomogoyu movi Delphi 1 function CreateThread lpThreadAttributes Pointer Atributi bezpeki potoku dwStackSize DWORD Rozmir steku dlya potoku lpStartAddress TFNThreadStartRoutine Funkciya potoku lpParameter Pointer Argument dlya novogo potoku dwCreationFlags DWORD Praporci stvorennya var lpThreadId DWORD Identifikator potoku THandle Deskriptor potoku Klyuchovim parametrom ciyeyi funkciyi ye vkazivnik lpStartAddress yakij vkazuye na funkciyu potoku Same u nij mistitsya vikonuvanij kod potoku Yak pravilo ce adresa funkciyi yaka prijmaye yedinij 32 bitnij vkazivnik u roli argumentu ta povertaye 32 bitnij vihidnij kod Konkurenciya konflikt potokiv RedaguvatiDetalnishe Konkurenciya potokivU zv yazku z tim sho Windows vikoristovuye vitiskuyuchu bagatozadachnist pri yakij vikonannya bud yakoyi potoku mozhe buti perervane v bud yakij moment chasu dostup kilkoh potokiv do odniyeyi dilyanki pam yati procesu mozhe sprichiniti suttyevi problemi Sprava u tomu sho bagato operacij pri vikonanni programi povinni buti atomarnimi tobto nepodilnimi koli potik vikonuye taku diyu inshi potoku bachat yiyi abo she nepochatoyu abo vzhe zavershenoyu Yaksho potoku ne sinhronizovani to vsi operaciyi azh do rivnya procesornih instrukcij ye neatomarni Situaciya pri yakij rizni potoki vikonuyuchi dostup do spilnogo dlya nih resursu porushuyut logiku algoritmu programi nazivayut konkurenciyeyu konfliktom potokiv Dlya zapobigannya pomilkam yaki mozhut vinikati pri uzgodzhenni roboti kilkoh potokiv u Windows vikoristovuyut zasobi sinhronizaciyi kritichni sekciyi m yuteksi semafori ta podiyi Ob yekti sinhronizaciyi zabezpechuyut dostup do sistemnih resursiv yaki mozhut perebuvati pid keruvannyam odnogo chi kilkoh procesiv Ob yekt sinhronizaciyi mozhe perebuvati u dvoh stanah signalnomu ta nesignalnomu Koli ob yekt perebuvaye u stani zajnyatosti abo nesignalnomu stani ochikuyucha potik ne mozhe pracyuvati Signalnij stan ob yekta sinhronizaciyi dozvolyaye prodovzhiti robotu potoku Volokna RedaguvatiDokladnishe Volokno programuvannya Sistema Windows zabezpechuye takozh funkcionuvannya mehanizmu volokon fibers Volokna dozvolyayut programam stvoryuvati vlasni potoku vikonannya ne vikoristovuyuchi sistemnij mehanizm planuvannya potokiv na osnovi prioritetiv Volokna chasto nazivayut polegshenimi potokami Voni nevidimi yadru oskilki realizuyutsya u koristuvackomu rezhimi Dlya stvorennya volokna potribno viklikati funkciyu ConvertThreadToFiber sho peretvorit potik u volokno Otrimane volokno mozhe stvoryuvati dodatkovi volokna u kozhnogo volokna mozhe buti svij nabir volokon Vikonannya volokna na vidminu vid potoku ne pochinayetsya doti poki vono ne bude inicijovane vruchnu Volokno pracyuye do zavershennya abo do peremikannya na inshe volokno Dzherela Redaguvati a b v g Konovalenko I V Fedoriv P S Sistemne programuvannya u Windows z prikladami na Delphi T TNTU 2012 Arhivovano 8 grudnya 2012 u Wayback Machine MSDN Processes and Threads Arhivovano 30 serpnya 2017 u Wayback Machine angl Russinovich M i Solomon D 2008 Vnutrennee ustrojstvo Microsoft Windows Windows Server 2003 Windows XP i Windows 2000 Master klass Moskva Izdatelzstvo Russkaya Redakciya s 346 ISBN 978 5 459 01730 4 a b Russinovich M Vnutrennee ustrojstvo Microsoft Windows Windows Server 2003 Windows XP i Windows 2000 Master klass M Russinovich D Solomon per s angl 4 e izd M Izdatelsko torgovyj dom Russkaya redakciya SPb Piter 2005 Rihter Dzh Windows dlya professionalov sozdanie effektivnyh Win32 prilozhenij s uchetom specifiki 64 razryadnoj versii Windows Dzh Rihter per s angl 4 e izd SPb Piter M Izdatelsko torgovyj dom Russkaya redakciya 2001 Otrimano z https uk wikipedia org w index php title Potoki u Windows amp oldid 34956441