C Thread - je to kaj?

Kaj je skupnega s majico in računalniškim programom? Oba sta sestavljena iz številnih tokov! Medtem ko niti v majici držijo tkanino v obliki ene same tkanine, C Thread (dobesedno "niti" ali "niti") operacijskega sistema združuje vse programe za izvedbo zaporednih ali vzporednih dejanj hkrati. Vsak tok v programu identificira proces, ki se pojavi, ko sistem (sistemska nit C) to zahteva. Optimizira delo tako zapletene naprave kot osebni računalnik in pozitivno vpliva na njeno zmogljivost in učinkovitost.


Opredelitev

V Computer Science From Thread ali niti izvedbe je najmanjše zaporedje ukazov, ki jih upravlja neodvisni razporejevalnik, ki je običajno sestavni del operacijskega sistema.
Za tokove je običajno dana določena prednost, kar pomeni, da imajo nekateri tokovi prednost pred drugimi. Ko procesor konča obdelavo ene niti, lahko zažene naslednjo, čakajočo čakalno vrsto. Praviloma pričakovanje ne presega nekaj milisekund. Računalniški programi, ki izvajajo "večnitnost", lahko izvedejo več tokov hkrati. Večina sodobnih operacijskih sistemov podpira nit s sistemske ravni. To pomeni, da ko program poskuša odvzeti vse procesorske vire, sistem preklopi na druge programe prisilno in prisili program za podporo procesorjem, da si sredstva enakomerno deli.


Izraz "tok" (iz Thread) se lahko nanaša tudi na vrsto povezanihspletna sporočila za razprave. Spletne oglasne deske so sestavljene iz številnih tem ali vej. Odgovori, poslani kot odgovor na izvirno objavo, so del iste niti. V toku e-pošte se lahko nit nanaša na vrsto odgovorov v obliki ukazov "nazaj" in "naprej", ki se nanašata na določeno sporočilo, ter strukturira drevo pogovorov.

Multithreaded C Thread Windows

Pri računalniškem programiranju je ena obdelava navojev obdelava enega ukaza naenkrat. Nasproti enojnega rezanja - večnitnost. Oba izraza se pogosto uporabljata v skupnosti funkcionalnega programiranja. Večopravilnost je podobna večopravilnosti, vendar vam omogoča, da obdelujete več niti naenkrat, vendar ne nekaj procesov. Ker so tokovi manjši in nadzorovani s preprostejšimi navodili, se lahko v procesih pojavi tudi večnitnost.

Primeri delovanja orodja C Naloga navoja

Večnitni operacijski sistem lahko programira. Večopravilnost lahko prepreči okvaro programa in prepreči napako v računalniku. Ker se vsak tok obdeluje ločeno, napaka v eni od njih ne more ovirati računalnika. Tako lahko večnitnost povzroči manj nesreč pri delovanju operacijskega sistema kot celote.

Večopravilnost

Večopravilnost obravnava več nalog v vzporednem načinu in opisuje tudi načela računalnika. Procesor lahko obdeluje več procesov hkrati z absolutno natančnostjo. Vendar procesor izvaja določenooperacije. Glavne naloge operacijskega sistema, kot so kopiranje datotek, uporabniku niso omogočile izvajanja drugih nalog (na primer odpiranja ali zapiranja oken). Sodobni operacijski sistemi vključujejo polno podporo za večopravilnost - več programskih rešitev lahko deluje sočasno, ne da bi posegali v delovanje drugih. Večopravilnost povečuje tudi stabilnost računalnika. Tehnologija se razlikuje, odvisno od operacijskega sistema, najpogosteje pa je tok sestavni del procesa. Hkrati lahko v enem samem procesu obstaja več tokov, ki izvajajo in delijo vire. Predvsem procesni tokovi C Thread v vsakem trenutku uporabljajo skupne izvedljive kode in vrednosti spremenljivk.

lahko blockSettings3 = {blockId: "R-A-70350-3", renderTo: "yandex_rtb_R-A-70350-3", async:! 0};

if (document.cookie.indexOf ("abmatch ="))> = 0) {
blockSettings3 = {blockId: "RA-70350-3", renderTo: "yandex_rtb_R-A-70350- 3 ", statId: 70350async: 0};
}

Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya .Context.AdvManager.render (blockSettings3)}), e = b.getElementsByTagName ("script")se izvaja v vzporednem načinu, pri čemer vsak procesor ali jedro izvaja ločen tok v času.

Vrste tokov

Načrtovalci procesov v večini sodobnih operacijskih sistemov neposredno podpirajo tako začasno kot večprocesorsko pretakanje, jedro operacijskega sistema pa razvijalcem omogoča upravljanje tokov z zagotavljanjem potrebnih funkcij prek vmesnika sistemskega klica. Nekatere izvedbe z navoji se imenujejo teme jedra, medtem ko so svetlobni procesi (LWP) vrsta toka, ki ima isto stanje informacij. Tudi programske rešitvelahko imajo pretoke uporabniškega prostora, kadar se uporabljajo s časovnikom časovnika C, signali ali drugimi metodami za prekinitev lastne izvedbe z izvajanjem neke vrste začasnega ad hoc oglasa.

Tokovi in ​​procesi: razlike

Tokovi se razlikujejo od klasičnih procesov večopravilnega OS z naslednjimi značilnostmi:
  • procesi so običajno neodvisni, medtem ko tokovi obstajajo kot podmnožica procesa;
  • procesi imajo veliko več informacij kot tokovi;
  • procesi imajo namenski naslovni prostor;
  • procesi medsebojno delujejo samo s pomočjo sistemskih komunikacijskih mehanizmov;
  • preklapljanje konteksta med niti v postopku je hitrejše kot preklapljanje konteksta med procesi.
  • Preventivno in sodelovalno načrtovanje

    V operacijskih sistemih z več uporabniki preventivni večnitnost je bolj razširjen pristop za nadzor časa izvajanja s preklopnim kontekstom. Kljub temu lahko preventivno načrtovanje vodi do nenadzorovanih programerjev določanja prioritet in napak. Nasprotno, skupna večnitnost temelji na temah, ki zavračajo nadzor nad izvajanjem. To lahko povzroči težave, če je skupni večnitni tok blokiran s čakanjem na vir.

    Razvoj tehnologije

    Do začetka leta 2000 je večina namiznih računalnikov imela samo en jedrni procesor, ki ni podpiral tokov strojne opreme. Leta 2002 je Intel v procesorju implementiral hkratno večnitno podporoPentium 4, ki se imenuje Hyper-Threading. Leta 2005 so predstavili dvojedrni procesor Pentium D in dual-core procesor AMD Athlon 64 X2. Procesorji v integriranih sistemih z višjimi zahtevami za operacije v realnem času lahko podpirajo večnitnost, zmanjšujejo čas preklopa in uporabljajo namensko datoteko registra za vsako nit.

    Modeli

    Navedimo glavne modele realizacije. 1: 1 (tok jedra) - niti, ki jih je ustvaril uporabnik v jedru, so najpreprostejša možna izvedba niti. OS /2 in Win32 uporabljata ta pristop od začetka, medtem ko v knjižnici Linuxa C Thread združuje ta pristop prek NPTL ali starejših LinuxThreads. Ta pristop uporabljajo tudi Solaris, NetBSD, FreeBSD, MacOS in iOS. N: 1 (pretočni vmesnik) - ta model predpostavlja, da so vsi tokovi na ravni aplikacije preslikani v en ciljni objekt ravni jedra. S tem pristopom lahko stikalo konteksta izvedemo zelo hitro in ga lahko izvedemo tudi na tistih jedrih, ki ne podpirajo obdelave toka. Vendar pa je ena od glavnih pomanjkljivosti, da ne koristi od strojnega pospeševanja na večnitnih procesorjih ali računalnikih. Na primer: če je treba eno izmed niti izvajati, ko I /O zahteva, je celoten proces blokiran in pretakanje ni mogoče uporabiti. Izjema GNU Portable C Thread je uporabljena kot obdelava na ravni uporabniških ravni. M: N (hibridna izvedba) - model predstavlja določeno število aplikacijskih tokov za nekatere N-jevske celice ali "navidezne procesorje". To je kompromismed nitmi ravni jedra ("1: 1") in uporabnikom ("N: 1"). Sistemi pretakanja "M: N" so bolj zapleteni, ker morate spremeniti kodo jedra in uporabniško kodo. Pri izvedbi M: N je knjižnica za obdelavo niti odgovorna za razporejanje tokov v razpoložljivih načrtovanih enotah. Zaradi tega je kontekst najbolj optimalen, saj se izogiba sistemskim klicem. Vendar pa to povečuje kompleksnost in verjetnost inverzije, kot tudi suboptimalno načrtovanje brez velikega (in dragega) usklajevanja med načrtovalcem uporabniškega okolja in planerjem jedra.
    Primeri hibridne izvedbe so aktivacija razporejevalnika, ki jo uporablja vgrajena implementacija knjižnice POSIX NetBSD (za model M: N, za razliko od modela izvedbe jedra 1: 1 ali modela uporabniškega prostora). Lahki procesi, ki jih uporabljajo starejše različice operacijskega sistema Solaris (orodje Std Thread C).

    Podpora za programski jezik

    Veliko formalnih sistemov podpira funkcionalnost pretakanja. Implementacija C in C ++ izvajata to tehnologijo in zagotavljata dostop do lastnih vmesnikov API za operacijski sistem. Nekateri programski jeziki na visoki ravni, kot so Java, Python in .NET Framework, usmerjajo razvijalce z odvzemanjem specifičnih razlik pri izvajanju niti v okolju izvajanja. Druge jezikovne razširitve poskušajo tudi abstraktirati koncept paralelizma in pretakanja od razvijalca. Nekateri jeziki so namenjeni konsistentnemu paralelizmu z uporabo grafičnih procesorjev.
    Število interpretiranih jezikovima izvedbe, ki podpirajo pretakanje in vzporedno obdelavo, ne pa tudi vzporedno izvajanje niti zaradi globalnega blokiranja interpreta (GIL). GIL je medsebojno izključujoča blokada tolmača, ki lahko prepreči simultano tolmačenje programske kode za dve ali več niti istočasno, kar omejuje paralelnost v večjedrnih sistemih. Druge implementacije interpretiranih programskih jezikov, kot je Tcl, uporabljajo razširitev C spanja C. S tem se izognemo največji omejitvi GIL, pri čemer uporabimo model, pri katerem je treba vsebino in kodo izrecno "porazdeliti" med tokove. Dogodkovni programski jeziki, kot so Verilog in razširitve C spanja, imajo še en pretočni vzorec, ki podpira največjo možno količino simulacije strojne opreme.

    Praktična večopravilnost

    Večnitne knjižnice sprožijo funkcijski klic za generiranje novega toka, ki prevzame funkcionalno vrednost kot parameter. Nato se ustvari nov vzporedni tok in začne se obdelava sprožene funkcije z naknadnim vračanjem. Programski jeziki vsebujejo knjižnice niti, ki vsebujejo globalne sinhronizacijske funkcije, ki vam omogočajo ustvarjanje in uspešno izvajanje večnitnega programiranja brez stanja napake, z uporabo muteksov, spremenljivk, kritičnih particij, monitorjev in drugih vrst sinhronizacije.

    Sorodne publikacije