www.wikidata.uk-ua.nina.az
Ne plutati z Potik programuvannya Potik angl thread abo povnishe potik vikonannya angl thread of execution chasto zastosovuyutsya nazvi nitka nitka vikonannya ta anglicizm tred v informatici tak nazivayetsya sposib programi rozdiliti sebe na dvi chi bilshe paralelni zadachi Realizaciya potokiv ta procesiv vidriznyayutsya v riznih operacijnih sistemah ale zagalom potik mistitsya vseredini procesu i rizni potoki odnogo procesu spilno rozpodilyayut deyaki resursi u toj chas yak rizni procesi resursi ne rozpodilyayut Proces z dvoma potokami vikonannyaU sistemah z odnim procesorom bagatopotokovist realizuyetsya zagalom podilom chasu vikonannya kvanti chasu duzhe podibno do paralelnogo vikonannya bagatoh zadach procesor poslidovno pereklyuchayetsya mizh riznimi potokami Ce pereklyuchennya kontekstu vidbuvayetsya nastilki shvidko sho v kincevogo koristuvacha stvoryuyetsya ilyuziya odnochasnogo vikonannya Na bagatoprocesornih chi na bagatoyadernih sistemah robota potokiv zdijsnyuyetsya spravdi odnochasno oskilki rizni potoki i procesi vikonuyutsya bukvalno odnochasno riznimi procesorami abo yadrami procesora Osoblivosti kvantuvannya v operacijnij sistemi Windows rozglyanuto v statti Kvant Windows Bagato suchasnih operacijnih sistem pryamo pidtrimuyut kvantuvannya chasu i bagatoprocesornu robotu potokiv cherez planuvalnik procesiv Yadro operacijnoyi sistemi dozvolyaye programistu manipulyuvati potokami cherez interfejs sistemnih viklikiv Deyaki realizaciyi viklikayut potoki yadra oskilki legkovagovi procesi en angl lightweight process LWP ye specialnim tipom potokiv yadra sho rozpodilyayut deyaki stani ta informaciyu Poza tim programa mozhe emulyuvati robotu potokiv vikoristovuyuchi tajmer signali abo inshi metodi shob perervati vlasne vikonannya i poslidovno vikonuvati rizni zadachi vlasnim kvantuvannyam chasu Takij sposib inodi zvetsya potokami koristuvackogo prostoru angl user space threads abo voloknami Zmist 1 Zauvazhennya shodo terminologiyi 2 Porivnyannya potokiv z procesami 3 Potoki vimagayut bilshoyi kvalifikaciyi programistiv 4 Procesi nitki i volokna 5 Problemi nitej ta volokon 5 1 Paralelizm ta strukturi danih 5 2 Vvedennya vivedennya i planuvannya 6 Modeli 6 1 1 1 6 2 N M 6 3 N 1 7 Realizaciyi 7 1 Prikladi realizacij rivnya yadra 7 2 Prikladi realizaciyi rivnya koristuvacha 7 3 Prikladi gibridnih realizacij 7 4 Realizaciya v Windows 8 Vinoski 9 Div takozh 10 PosilannyaZauvazhennya shodo terminologiyi Redaguvati Anglo ukrayinskij tlumachnij slovnik z obchislyuvalnoyi tehniki internetu i programuvannya Kiyiv vidavnictvo SoftPres 2005 vidanij za pidtrimki kompaniyi Microsoft podaye pereklad originalnogo terminu thread ukrayinskoyu movoyu yak potik nitka tred st 494 Porivnyannya potokiv z procesami RedaguvatiPotoki vidriznyayutsya vid tradicijnih procesiv bagatozadachnih operacijnih sistem v tomu sho procesi na zagal nezalezhni dublyuyut znachnu chastinu informaciyi pro stan mayut okremij adresnij prostir vzayemodiyut tilki cherez sistemni mizhprocesorni mehanizmi komunikacij Potoki vseredini procesu z inshoyi storoni rozpodilyayut informaciyu pro stan procesu i pryamo dostupayutsya do spilnoyi pam yati ta inshih resursiv Pereklyuchennya kontekstu mizh potokami procesu na zagal shvidshe nizh pereklyuchennya kontekstu mizh procesami Opisuyuchi situaciyu taki sistemi yak Windows NT ta OS 2 kazhut sho mayut deshevi potoki ta dorogi procesi v inshih operacijnih sistemah situaciya ne duzhe vidminna Potoki vimagayut bilshoyi kvalifikaciyi programistiv RedaguvatiBagatopotokovist ye populyarnoyu modellyu programuvannya i vikonannya bo dozvolyaye bagatom potokam isnuvati vseredini kontekstu odnogo procesu rozpodilyayuchi resursi procesu ale vikonuyuchis nezalezhno Potokova model programuvannya zabezpechuye rozrobnikam korisni abstrakciyi dlya paralelnogo vikonannya Prote mozhlivo najcikavishe zastosuvannya tehnologiyi u vipadku koli odin proces vikonuyetsya na bagatoprocesornij sistemi Cya perevaga bagatopotokovih program dozvolyaye yim skorishe vikonuvatisya na komp yuterah z kilkoma procesorami procesorami z kilkoma yadrami abo na klasteri mashin bo potoki programi prirodno nadayut sobi mozhlivist spravdi paralelnogo vikonannya U takomu vipadku programist maye buti osoblivo oberezhnim shob uniknuti stanu gonitvi ta inshih neperedbachenih povedinok Dlya zabezpechennya korektnoyi roboti z danimi potoki chasto potrebuyut proceduri dostupu do danih v pevnomu poryadku Potoki takozh vimagayut atomarnih operacij chasto realizovanih z vikoristannyam semaforiv shob uniknuti odnochasnoyi neuzgodzhenoyi modifikaciyi danih abo yihnogo chitannya u toj chas yak proces modifikuye dani Nedbale povodzhennya z takimi primitivami mozhe prizvesti do vzayemnogo blokuvannya Planuvalniki operacijnih sistem pereklyuchayut potoki odnim z dvoh mozhlivih sposobiv Zapobizhna abo vitisnyayucha bagatopotokovist zagalom rozglyadayetsya yak krashij pidhid bo vona dozvolyaye operacijnij sistemi viznachiti koli mozhe statisya peremikannya kontekstu Na protivagu kooperativna bagatopotokovist pokladayetsya na sami potoki shob voni peredali kontrol vikonannya na tochkah zupinu Ce mozhe stvoriti problemi yaksho nit chekaye na resurs yakij stav nedostupnim Nedolik zapobizhnoyi bagatopotokovosti v tomu sho peremikannya kontekstu mozhe statisya v nedorechnu mit sprichinyayuchi prioritetnu inversiyu abo inshi pogani efekti yakih mozhna uniknuti v kooperativnij bagatopotokovosti Tradicijno bazove komp yuterne aparatne zabezpechennya ne nadavalo bagato pidtrimki bagatonitevosti oskilki pereklyuchennya mizh nityami zagalom ye vzhe skorishoyu proceduroyu porivnyano z pereklyuchennyam kontekstu procesiv Procesori vbudovanih sistem sho mayut bilshi vimogi do povedinki v realnomu chasi mozhut mati aparatnu pidtrimku bagatonitevosti zmenshennyam chasu peremikannya mozhlivo rozmishuyuchi vidilenij blok registriv dlya kozhnoyi niti zamist togo shob zberigati chitati zagalni registri Na kinci 1990 h stala vidoma ideya vikonannya instrukcij z riznih nitej odnochasno ce zvetsya odnochasnoyu bagatonitevostyu Cya mozhlivist bula vvedena v procesori Intel Pentium 4 pid im yam Hyper threading Procesi nitki i volokna RedaguvatiProces ye najvazhchim ob yektom dlya planuvalnika yadra operacijnoyi sistemi Vlasni resursi procesu rozmisheni operacijnoyu sistemoyu Resursi vklyuchayut pam yat vidkriti fajli ta pristroyi soketi ta vikna Procesi ne rozdilyayut z kimos adresnij prostir chi zalucheni fajli za vinyatkom yavnih metodiv takih yak uspadkuvannya fajliv chi segmentiv spilnoyi pam yati abo robota z fajlami v rezhimi spilnogo dostupu Tipovo procesi zapobizhno bagatozadachni Ale Windows 3 1 i stari versiyi Mac OS vikoristovuvali kooperativnu bagatozadachnist Nitka ye najlegshim ob yektom dlya planuvalnika yadra Shonajmenshe odna nitka isnuye vseredini kozhnogo procesu Yaksho v procesi spivisnuyut bagato nitok voni rozpodilyayut odnu pam yat i fajlovi resursi Nitki mayut zapobizhnu bagatozadachnist yaksho planuvalnik procesiv operacijnoyi sistemi zapobizhnij Nitki ne mayut svoyih vlasnih resursiv za vinyatkom steku kopiyi registriv vklyuchno z lichilnikom zadach i vlasne nitkovim zberigannyam danih yaksho taka mozhlivist zabezpechuyetsya V deyakih situaciyah ye riznicya mizh nitkami yadra ta nitkami koristuvacha pershi upravlyayutsya i planuyutsya yadrom drugi upravlyayutsya i planuyutsya v prostori koristuvacha V cij statti termin nitka vikoristovuyetsya dlya poznachennya ponyattya nitka yadra a ponyattya volokno angl fiber oznachaye nitka koristuvacha Volokna mayut kooperativne planuvannya pracyuyuche volokno maye yavno zupinitisya i peredati upravlinnya inshomu voloknu Volokno mozhe buti zapusheno bud yakoyu nitkoyu v odnomu procesi Problemi nitej ta volokon RedaguvatiParalelizm ta strukturi danih Redaguvati Dokladnishe Paralelizm informatika ta Strukturi danihNitki odnogo procesu rozpodilyayut odin adresnij prostir Ce dozvolyaye paralelno pracyuyuchomu kodu buti tisno vzayemopov yazanim i zruchno obminyuvatisya danimi bez zaluchennya skladnih metodiv mizhprocesornogo obminu Ale dostupni vsim nitkam navit prosti strukturi danih stayut vrazlivi do pomilok tipu stanu gonitvi yaksho voni potrebuyut bilshe odniyeyi mashinnoyi komandi pid chas prisvoyennya novih znachen dvi nitki mozhut odnochasno sprobuvati zminiti znachennya strukturi danih i vnaslidok otrimati zovsim ne te sho bazhalosya Taki pomilki buvaye duzhe vazhko vipraviti i izolyuvati Shob zapobigti comu programnij interfejs nitok proponuye metodi sinhronizaciyi taki yak m yuteks mutex dlya blokuvannya struktur danih pid chas dostupu pri paralelnomu vikonanni Na odnoprocesornih sistemah nitka sho zapitala zakritij m yuteks maye perejti v pasivnij sonnij rezhim i planuvalnik pereklyuchaye kontekst inshoyi nitki V bagatoprocesornih sistemah nitka za vidsutnosti inshih konkuruyuchih nitok vikonannya na procesori stane zapituvati m yuteks doki toj ne zvilnitsya Obidva ci sposobi zle vplivayut na produktivnist a v vipadku multiprocesornosti vinikaye navantazhennya na shinu pam yati osoblivo yaksho detalizaciya blokuvannya visoka Vvedennya vivedennya i planuvannya Redaguvati Bagato realizacij volokon lezhat povnistyu v oblasti koristuvacha Yak naslidok pereklyuchennya kontekstu mizh voloknami vseredini procesu ye maksimalno efektivnim bo vono ne vimagaye niyakoyi vzayemodiyi z yadrom pereklyuchennya kontekstu mozhe buti zroblene lokalnim zberezhennyam registriv procesora sho vikoristani u volokni i zavantazhennyam registriv nastupnogo volokna sho vikonuvatimetsya Oskilki planuvannya vidbuvayetsya v oblasti koristuvacha politika planuvannya mozhe buti prostishe skroyena najefektivnishim chinom dlya shvidkodiyi programi zagalom Prote vikoristannya sistemnih viklikiv blokuvannya u voloknah mozhe buti problematichnim Yaksho volokno vikonuye sistemnij viklik blokuvannya inshi volokna procesu ne mozhut vikonuvatisya doki sistemnij viklik ne vidpracyuye Tipovim prikladom ciyeyi problemi ye vikonannya vvedennya vivedennya bilshist program pishe u vivid sinhronno Koli operaciya vvodu vivodu rozpochalasya sistemnij viklik zrobleno i vin ne poverne keruvannya doki operaciya vvodu vivodu ne bude zavershena Na ves cej chas robota vsogo procesu blokovana yadrom proces stoyit bo inshi volokna procesu ne mozhut otrimati keruvannya Zagalnim rishennyam ciyeyi problemi ye zabezpechennya programnogo sinhronnogo interfejsu z vikoristannyam vnutrishnogo neblokuyuchogo vvedennya vivedennya tak shob pid chas vikonannya zapisu chitannya inshi volokna mogli vikonuvatisya Take rishennya mozhe buti zaprovadzhene dlya inshih blokuyuchih viklikiv Inshij sposib pisati programu bez vikoristannya sinhronnogo vvedennya vivedennya ta inshih blokuyuchih sistemnih viklikiv Win32 zabezpechuye programnij interfejs volokon 1 SunOS 4 x realizuye volokna pid nazvoyu legkovagovi procesi angl light weight processes LWP vidomi takozh yak zeleni nitki NetBSD 2 x i DragonFly BSD takozh realizayut LWP yak nitki model 1 1 SunOS vid versij 5 2 do 5 8 NetBSD versij vid 2 do 4 realizuye dvorivnevu model dozvolyayuchi odnomu chi bilshe koristuvackih volokon na kozhnu nitku yadra model M N SunOS 5 9 i piznishi a takozh NetBSD 5 pozbavleni pidtrimki volokon povernulisya do modeli 1 1 2 Vikoristannya nitok yadra sproshuye kod programi hovayuchi deyaki najskladnishi aspekti nitok v yadro Programist vzhe ne pikluyetsya pro planuvannya nitok ta yavnu peredachu procesora kod mozhe buti napisanij u zvichnomu procedurnomu stili vklyuchayuchi viklik funkcij blokuvannya Prote nitki yadra na odnoprocesornih sistemah mozhut buti zmusheni pereklyuchiti kontekst bud yakoyi miti sho mozhe prizvesti do stanu gonitvi i pomilok paralelizmu yaki mozhut buti prihovanimi Na multiprocesornih sistemah ce mozhe buti she gostrishe oskilki nitki yadra mozhut v dijsnosti vikonuvatisya na riznih procesorah Modeli Redaguvati1 1 Redaguvati Koristuvacki nitki modeli 1 1 vidpovidayut odna do odnogo planuvalnomu ob yektovi yadra Ce najprostisha mozhliva realizaciya nitok V Linux cej pidhid realizuye zvichna biblioteka C NPTL N M Redaguvati N M rozkladaye N nitok zastosunku na M ob yektiv yadra abo virtualnih procesoriv Taka realizaciya ye kompromisom mizh realizaciyeyu nitok rivnya yadra 1 1 i rivnem koristuvacha N 1 Zagalom nitkova sistema N M skladnisha v realizaciyi i za yadernu i za koristuvacku sistemi bo potribni zmini i v yadri i z boku koristuvacha V realizaciyi m n biblioteka nitok vidpovidalna za planuvannya nitok koristuvacha na mozhlivi ob yekti planuvannya ce robit pereklyuchennya kontekstu nitok duzhe shvidkim bo ne potribni sistemni vikliki Prote ce zbilshuye skladnist i jmovirnist inversiyi prioritetiv a takozh vimagaye ekstensivnoyi i dorogoyi koordinaciyi mizh planuvalnikami yadra ta koristuvacha N 1 Redaguvati Model N 1 oznachaye vidobraziti vsi nitki zastosunku na yedinij planuvalnij ob yekt yadra oskilki yadro nichogo ne znaye pro koristuvacki nitki faktichno ce ye realizaciya volokon Pri takomu pidhodi pereklyuchennya kontekstu mozhe buti zroblene duzhe shvidko i na dodatok vono mozhe buti realizovane na prostomu yadri bez pidtrimki nitok Odin z najbilshih nedolikiv ce te sho nemozhlivo otrimati korist vid aparatnogo prishvidshennya na bagatoyadernih procesorah abo bagatoprocesornih komp yuterah u cij modeli nemozhlivo zapustiti bilshe odniyeyi nitki odnochasno Realizaciyi RedaguvatiIsnuye bagato riznih i nesumisnih realizacij nitok vklyuchayuchi realizaciyi na rivni yadra i na rivni koristuvacha Zvisno volokna mozhut buti realizovani poza pidtrimkoyu z boku operacijnoyi sistemi hocha deyaki operacijni sistemi abo biblioteki zabezpechuyut yihnyu yavnu pidtrimku Napriklad Microsoft Windows Windows NT 3 51 SP3 i piznishi pidtrimuyut programnij interfejs volokon dlya zastosunkiv tozh za bazhannya mozhna sprobuvati pidvishiti produktivnist programi samomu zamist pokladatisya na planuvalnik yadra yakij mozhe buti ne nalashtovanij dlya zastosunku Prikladom mozhe buti planuvalnik koristuvackogo rezhimu v Microsoft SQL Server 2000 yakij pracyuye v prostori volokon Prikladi realizacij rivnya yadra Redaguvati Light Weight Kernel Threads v BSD sistemah MxN threading v BSD Native POSIX Thread Library dlya Linux yak realizaciya nitok standartu POSIX pthread Isnuye port biblioteki na Windows Apple Multiprocessing Services versiyi 2 0 i piznishi vikoristovuyut vbudovani nanokernel v Mac OS 8 6 i piznishih modifikovanih pid nih Prikladi realizaciyi rivnya koristuvacha Redaguvati GNU Portable Threads FSU Pthreads Apple Inc Thread Manager REALbasic vklyuchaye API dlya kooperativnoyi bagatonitkovosti Netscape Portable Runtime vklyuchaye vtilennya koristuvackih volokon Prikladi gibridnih realizacij Redaguvati Scheduler activations vikoristovuyetsya bibliotekoyu ridnih POSIX nitok NetBSD model N M na protivagu modeli yadra 1 1 ta modeli koristuvackogo prostoru Marcel z proektu PM2 Realizaciya v Windows Redaguvati Dokladnishe Nitki u WindowsVisual C C realizuye interfejs nitok dvoma sposobami cherez funkciya CreateThread i sporidneni variant AfxBeginThread i sporidneni cherez funkciyi beginthread beginthreadex i sporidneniPersha realizaciya ye defektnoyu i prizvodit do vitoku pam yati pri vikoristanni v obrobnikah nitok starih funkcij standartnoyi biblioteki 3 Isnuyut realizaciyi standartu POSIX pthread dlya Windows 4 yak nadbudova nad interfejsom beginthread Vinoski Redaguvati CreateFiber MSDN Solaris whitepapers CreateThread Function sources redhat com Arhiv originalu za 26 serpnya 2008 Procitovano 16 zhovtnya 2008 Div takozh RedaguvatiProces informatika M yuteks Semafor programuvannya Vzayemodiya mizh procesami Lokalna pam yat nitok Volokno programuvannya Posilannya RedaguvatiVvedenie v mnogopotochnost Ispolzovanie vzaimnyh isklyuchenij i signalov Article Query by Slice Parallel Execute and Join A Thread Pool Pattern in Java by Binildas C A Ars Technica article about multithreading etc Answers to frequently asked questions for comp programming threads The C10K problem Article The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software by Herb Sutter Article The Problem with Threads by Edward Lee POSIX threads explained by Daniel Robbins Multithreading in the Solaris Operating Environment nbsp Ce nezavershena stattya pro operacijni sistemi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi Otrimano z https uk wikipedia org w index php title Potik informatika amp oldid 40147920