OqPoWah.com

C Thread - kaj je to?

Kaj imajo skupne majice in računalniški programi? Oba sta sestavljena iz številnih niti! Medtem ko niti v majici tkanino hranijo v obliki ene same krpe, C Thread (dobesedno "niti" ali "niti") operacijskega sistema združuje vse programe, da hkrati izvaja zaporedna ali vzporedna dejanja. Vsak nit v programu identificira proces, ki se začne, ko ga zahteva sistem (sistemska nit C). To optimizira delovanje tako zapletene naprave kot osebnega računalnika in pozitivno vpliva na njegovo hitrost in zmogljivost.

Opredelitev

V C-niti ali izvedbeni niti je najmanjše zaporedje ukazov, ki jih upravlja neodvisen scheduler, ki je običajno sestavni del operacijskega sistema.c nit

Temam ponavadi dajejo določeno prednost, kar pomeni, da imajo nekatere teme prednost pred drugimi. Ko procesor konča obdelavo ene niti, lahko začne naslednjo čakalno čakalno vrsto. Čakanje praviloma ne presega več milisekund. Računalniški programi, ki izvajajo "multithreading", lahko izvedejo več niti naenkrat. Večina sodobnih operacijskih sistemov podpira C nit na ravni sistema. To pomeni, da ko en program poskuša vzeti vse procesorske vire, sistem prisilno preklopi na druge programe in prisili program za podporo procesorja, da enakomerno deli vire.

Izraz "nit" se lahko sklicuje tudi na vrsto povezanih sporočil v spletni razpravi. Spletni oglasni deski so sestavljeni iz različnih tem ali podružnic. Odzivi, poslani kot odgovor na prvotno objavo, so del iste teme. V e-pošti se lahko nit sklicuje na vrsto odgovorov v obliki ukazov "nazaj" in "naprej", ki se nanašajo na določeno sporočilo, in strukturo drevesa pogovorov.

Večnitna tema C v operacijskem sistemu Windows

V računalniškem programiranju je enolični način obdelave enega ukaza hkrati. Nasprotno enojne navoja je večnitna. Oba izraza se pogosto uporabljata v funkcionalni programski skupnosti.

Multithreading je podoben multitaskingu, vendar vam omogoča obdelavo več niti hkrati, vendar ne več procesov. Ker so niti manjše in jih nadgrajujejo preprostejša navodila, se v procesih lahko pojavijo tudi mnogoterost.

Primeri naloge C Thread

Večosni operacijski sistem hkrati lahko izvaja več nalog v ozadju, na primer zapisovanje datotek, indeksiranje podatkov in upravljanje oken. Spletni brskalniki, ki podpirajo večnitnost, lahko odprejo več oken s hkratnim delovanjem jаvascripta in Flash. Če je program popolnoma večkanalni, različni procesi ne smejo vplivati ​​drug na drugega, če ima procesor dovolj moči za njihovo obdelavo.

Podobno kot večopravilnost tudi multithreading izboljšuje stabilnost programov. Večnitna tehnologija lahko preprečuje, da se program zlomi in preprečuje, da bi se računalnik zrušil. Ker je vsaka nit obdelana ločeno, napaka v enem od njih ne more prekiniti delovanja računalnika. Tako lahko multithreading povzroči manjše napake v operacijskem sistemu kot celoti.nitni spanec c

Večopravilnost

Večopravilnost obdeluje več nalog v vzporednem načinu in prav tako označuje delovanje računalnika. Procesor lahko obdeluje več procesov hkrati z absolutno natančnostjo. Vendar pa obdeluje le navodila, ki jih je poslala programska oprema. Programska oprema mora zato, da bi v celoti izkoristila zmogljivosti CPU-ja, sposobna obdelati več kot eno nalogo hkrati in tudi večopravilnost.

Zgodovinska retrospektiva

Zgodnji operacijski sistemi so lahko izvajali več programov hkrati, vendar niso v celoti podpirali več nalog. En program lahko porabi vsa sredstva procesorja pri izvajanju določenega postopka. Glavne naloge operacijskega sistema, kot je kopiranje datotek, uporabniku niso omogočile izvajanje drugih nalog (npr. Odpiranje ali zapiranje oken).

Sodobni operacijski sistemi vključujejo popolno podporo za večopravilnost - več programskih rešitev lahko deluje hkrati, ne da bi to vplivalo na funkcionalnost drug drugega.

Večopravilnost tudi izboljša stabilnost računalnika. Če na primer eden od procesov ne uspe, to ne bo vplivalo na druge teče programe, ker računalnik procesira vsak proces posebej. To lahko primerjate s postopkom pisanja pisma: če ste na sredini lista in ste že napisali del besedila, vendar vaš spletni brskalnik nepričakovano zapusti, potem ne boste izgubili že opravljenega dela.c nit nalogo

Enotni in večprocesorski sistemi

Izvajanje pretočnih in procesorskih tehnologij se razlikuje, odvisno od operacijskega sistema, vendar je najpogosteje tok sestavni del procesa. Istočasno lahko v eni sami procesi obstajajo niti, ki izvajajo in delijo vire. Z vrati procesa C Thread zlasti uporabljajo kadarkoli izvedljivo kodo in spremenljive vrednosti v co-mode.

Sistemi z enim samim procesorjem izvajajo večkratno navijanje: centralni procesor (CPU) preklopi med različnimi programskimi tokovi. V multiprocesorju in večslojnem sistemu se več vzporedno izvaja niti, pri čemer vsak procesor ali jedro hkrati izvaja ločen niz.

Vrste tokov

Načrtovalci procesov večine sodobnih operacijskih sistemov neposredno podpirajo tako začasno kot multiprocesorsko obdelavo tokov, medtem ko jedro operacijskega sistema omogoča razvijalcem, da upravljajo niti, tako da zagotavljajo potrebne funkcije prek vmesnika sistemskega klica. Nekatere izvedbe nit se imenujejo niti jedra, medtem ko so procesi svetlobe (LWP) vrsta niti, ki ima enako stanje informacij. Tudi programske rešitve lahko imajo tokove uporabniškega prostora, kadar se uporabljajo s Thread timer C, signali ali drugimi načini za prekinitev lastne izvedbe, ki opravljajo nekakšen ad hoc časovni razpored.

Tokovi in ​​procesi: razlike

Tokovi se razlikujejo od klasičnih večopravilnih postopkov z naslednjimi značilnostmi:

  • procesi so ponavadi neodvisni, medtem ko niti obstajajo kot podmnožice procesa;

  • procesi prinašajo veliko več informacij kot niti;




  • procesi imajo namenske naslovne prostore;

  • procesi komunicirajo le prek sistemskih komunikacijskih mehanizmov;

  • Pretakanje konteksta med niti v procesu se zgodi hitreje kot preklop med kontekstom.

Preventivno in skupno načrtovanje

V večuporabniških operacijskih sistemih je preventivni multithreading bolj pogosto uporabljen pristop za krmiljenje delovnega časa s preklapljanjem konteksta. Kljub temu preventivno načrtovanje lahko privede do nenadzorovanih programerjev, ki dajejo prednost in ne. V nasprotju s tem se skupna multithreading opira na niti, da se vzdrži spremljanja izvajanja. To lahko povzroči težave, če je skupna nit z več nalogami blokirana, tako da čakajo na vir.c-nit pridruži

Razvoj tehnologije

Do začetka leta 2000. na večini namiznih računalnikov je bil samo en jedro procesor, ki ni podpiral strojne niti. Leta 2002 je Intel implementiral podporo za simultano multithreading na procesorju Pentium 4, ki se imenuje Hyper-Threading. Leta 2005 je bil uveden dvojedrni procesor Pentium D in dvojedrni procesor AMD Athlon 64 X2.

Procesorji v integriranih sistemih z višjimi zahtevami za dejanja v realnem času lahko podpirajo večnitnost, zmanjšujejo čas preklopnih niti in uporabijo namensko registrsko datoteko za vsako nit.

Modeli

Oglejmo si glavne izvedbene modele.

1: 1 (nit na ravni jedra) - teme, ki jih ustvari uporabnik v jedru, so najpreprostejše izvajanje niti. OS / 2 in Win32 uporabljata ta pristop na začetku, medtem ko je v Linuxu knjižnica C Thread pristop izvaja ta pristop prek NPTL ali starejših LinuxThreads. Ta pristop uporabljajo tudi Solaris, NetBSD, FreeBSD, macOS in iOS.

N: 1 (uporabniška nit) - ta model določa, da so vse nize na ravni aplikacij razporejene v en načrtovani objekt na jedru. S tem pristopom lahko kontekstno preklapljanje izvedemo zelo hitro, poleg tega pa ga lahko izvajamo tudi na tistih jedrih, ki ne podpirajo obdelave tokov. Vendar pa je ena od glavnih pomanjkljivosti ta, da nima koristi od pospeševanja strojne opreme na večnitnih procesorjih ali računalnikih. Na primer: če je ena od niti treba izvesti, ko je zahtevana I / O zahteva, je celoten postopek blokiran in pretočnega prenosa ni mogoče uporabiti. V GNU Portable, izjema C Thread se uporablja kot pretočna obdelava uporabniškega nivoja.

M: N (hibridna izvedba) - model prikazuje številne tokovne tokove za določeno število N jedrskih celic ali "virtualnih procesorjev". To je kompromis med nitmi na ravni jedra (»1: 1«) in uporabnikom (»N: 1«). Pretočni sistemi "M: N" so bolj zapleteni, ker sta potrebni obe kernelski kodi in uporabniška koda. V izvedbi M: N je knjižnica za obdelavo nit odgovorna za razporejanje niti v razpoložljivih načrtovanih enotah. To naredi kontekst najbolj optimalen, saj se izogiba sistemskim klicem. Vendar to povečuje zapletenost in verjetnost inverzije ter nepomembno načrtovanje brez obsežne (in drage) usklajevanja med uporabnikom načrtovalca okolja in načrtovalnikom jedra.std nit c

Primeri hibridne implementacije 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).

Svetlobni procesi, ki jih uporabljajo starejše različice operacijskega sistema Solaris (orodje Std Thread C).

Podpora programskim jezikom

Veliko formalnih sistemov podpira funkcionalnost niti. Izvajanje C in C + + implementira to tehnologijo in zagotavlja dostop do lastnih API-jev za operacijski sistem. Nekateri jeziki so bolj visoki ravni programskih jezikov, kot so Java, Python, .NET Framework, razvijalci izpostavljajte tokovi v abstrahiranje posebne razlike v izvajanju tokov v času izvajanja. Druge razširitve jezikov poskušajo povzeti koncept vzporednosti in pretakanje od razvijalca. Nekateri jeziki so zasnovani za zaporedno vzporednost z grafičnimi procesorji.

okno c nit

Več izvedba je razlaga jezikov, ki podpirajo vzporedno obdelavo in pretakanje, ne pa vzporedno izvajanje tokov zaradi globalnega zaklepanje lupino (GIL). GIL - ključavnico za medsebojno izključitev, tolmač, ki lahko prepreči tako razlago kodo aplikacije za dve ali več niti hkrati, ki omejuje vzporednost v večjedrnih sistemih izvede.

Druge izvedbe razlagati programskih jezikov, kot so Tcl, uporabite podaljšek nit spanja C. S tem se izognemo zgornjo mejo GIL, z modelom, kjer bi vsebino in kodo biti izrecno "delijo" med nitmi.

Programski jeziki aplikacij, ki so usmerjeni na dogodke, kot sta Verilog in podaljšek Thread sleep C, imajo drug model niti, ki podpira največje število modelov za opremo.c izjema

Praktična večnitnost

Večnitne knjižnice začnejo klic funkcije, da ustvarijo novo nit, ki kot parameter uporablja funkcijsko vrednost. Nato se vzpostavi nova vzporedna nit in se zažene procesiranje teče funkcije, ki ji sledi vrnitev. Programskih jezikov vključujejo nit knjižnice, vključno z globalnimi funkcije za sinhronizacijo, ki vam omogočajo, da ustvarite in uspešno izvajanje večnitne s pogojem, da ni napak, s pomočjo muteksi, spremenljivk stanja, kritičnih odsekov, monitorjev in druge vrste sinhronizacijo.

Zdieľať na sociálnych sieťach:

Príbuzný