C Thread - što je to?
Što imaju zajedničke majice i računalne programe? Obojica se sastoje od mnogo niti! Dok niti u majici čuvaju tkaninu u obliku jedne krpe, C rešetka (doslovno "niti" ili "niti") operativnog sustava kombinira sve programe kako bi se izvršile sekvencijske ili paralelne akcije istodobno. Svaka nit u programu identificira proces koji se pokreće kada ga sustav (sustavna nit C) to zatraži. To optimizira rad tako složenog uređaja kao osobnog računala i pozitivno utječe na brzinu i performanse.
sadržaj
definicija
U C niti, ili izvršnoj niti, najmanji je niz naredbi kojima upravlja neovisni raspored, koji je obično sastavni dio operacijskog sustava.
Teme obično imaju određeni prioritet, što znači da neke niti imaju prednost nad drugima. Nakon što procesor dovrši obradu jedne niti, može započeti sljedeći red čekanja. Čekanje u pravilu ne prelazi nekoliko milisekundi. Računalni programi koji implementiraju "multithreading" mogu izvršiti nekoliko niti odjednom. Većina suvremenih operacijskih sustava podržavaju C Thread na razini sustava. To znači da kada jedan program pokuša preuzeti sve resurse procesora, sustav se prisilno prebacuje na druge programe i prisiljava program podrške procesora da ravnomjerno podijeli resurse.
Izraz "nit" također se može odnositi na niz povezanih poruka u online raspravama. Web oglasne ploče sastoje se od raznih tema ili grana. Odgovori koji su poslani kao odgovor na izvornu objavu dio su iste niti. U e-poruci nit se može odnositi na niz odgovora u obliku naredbi "unatrag" i "naprijed" koje se odnose na određenu poruku i strukturirati stablo razgovora.
Multithreading C Thread u sustavu Windows
U računalnom programiranju, jedan navoj je obrada jedne naredbe u isto vrijeme. Suprotno od jednostrukog navoja je multithreading. Oba izraza široko se koriste u funkcionalnoj programskoj zajednici.
Multithreading je sličan multitaskingu, ali vam omogućuje obradu nekoliko niti u isto vrijeme, ali ne i nekoliko procesa. Budući da su niti manje i kontrolirane jednostavnijim uputama, multithreading se također može dogoditi unutar procesa.
Primjeri zadatka C teme
Multi-navojni operacijski sustav može istovremeno izvršavati više pozadinskih zadataka, kao što su zapisivanje izmjena datoteka, indeksiranje podataka i upravljanje prozorima. Web preglednici koji podržavaju multithreading mogu otvoriti više prozora istodobnim radom jаvascript i Flash. Ako je program potpuno više navojni, različiti procesi ne bi trebali utjecati jedni na druge, ako procesor ima dovoljno snage da ih obradi.
Kao multitasking, multithreading također poboljšava stabilnost programa. Multithreading može spriječiti pad programa i spriječiti pad računala. Budući da se svaka nit obrađuje odvojeno, pogreška u jednoj od njih ne može ometati rad računala. Dakle, multithreading može dovesti do manje propusta u operacijskom sustavu u cjelini.
zadataka
Multitasking procesa nekoliko zadataka u paralelnom načinu rada i karakterizira rad računala. Procesor može obraditi nekoliko procesa odjednom s apsolutnom točnosti. Međutim, obradi samo upute koje mu je softver poslao. Stoga, kako bi se u potpunosti iskoristile mogućnosti CPU-a, softver mora biti u mogućnosti obraditi više od jednog zadatka odjednom i biti višezadaćno.
Povijesna retrospektiva
Rani operativni sustavi mogli bi pokrenuti nekoliko programa odjednom, ali nisu u potpunosti podržali višestruko zadatke. Jedan program može potrošiti sve resurse procesora prilikom izvođenja određene operacije. Glavne zadatke operacijskog sustava, kao što su kopiranje datoteka, nisu dopuštale korisniku da obavlja druge zadatke (npr. Otvaranje ili zatvaranje prozora).
Suvremeni operacijski sustavi uključuju punu podršku za više zadataka - nekoliko softverskih rješenja mogu istodobno funkcionirati, a da se ne ometaju međusobno funkcionalnost.
Višezadaćnost također poboljšava stabilnost računala. Na primjer, ako jedan od procesa ne uspije, to neće utjecati na ostale pokrenute programe jer računalo procesira svaki proces zasebno. To se može usporediti s procesom pisanja slova: ako ste u sredini lista i već su napisani dio teksta, ali vaš web preglednik neočekivano, nećete izgubiti posao već obavlja.
Pojedinačni i višeprocesorski sustavi
Implementacija strujnih i procesorskih tehnologija razlikuje se ovisno o operacijskom sustavu, ali najčešće je protok dio komponente procesa. Istodobno, može postojati nekoliko niti u jednom procesu, izvršavanje i dijeljenje resursa. Konkretno, teme procesa C Thread koriste izvršni kod i vrijednosti varijabli u ko-modu u bilo kojem trenutku.
Sustavi s jednim procesorom provode više navoja tijekom vremena: središnji procesor (CPU) prebacuje između različitih softverskih tokova. U višeprocesoru, kao iu višejezgrenom sustavu, niz niti se pokreću paralelno, svaki procesor ili jezgra izvode zasebnu nit istodobno.
Vrste tokova
Procesori rasporeda najsuvremenijih operacijskih sustava izravno podržavaju privremenu i višeprocesorsku obradu struje, a kernel operativnog sustava omogućuje razvojnim programerima da upravljaju temama pružajući potrebne funkcije putem sučelja sustava poziva. Neke implementacije niza nazivaju se kernel niti, dok su svjetlosni procesi (LWPs) vrsta nit koja ima isti status informacija. Isto tako, softverska rješenja mogu imati tokove korisničkih prostora kada se upotrebljavaju s Timerom temeljem C, signalima ili drugim metodama za prekidanje vlastite izvedbe, obavljajući neku vrstu ad hoc vremena.
Tijekovi i procesi: razlike
Tijekovi se razlikuju od klasičnih multitasking procesa sa sljedećim karakteristikama:
procesi su obično neovisni, a niti postoje kao podskupovi procesa;
procesi nose mnogo više informacija nego niti;
procesi posvećuju adresne prostore;
procesi međusobno djeluju jedino putem sustavnih mehanizama komunikacije;
Kontekst izmjene između niti u tom procesu događa se brže nego prebacivanje konteksta između procesa.
Preventivno i zajedničko planiranje
U višenamjenskim operacijskim sustavima, preventivno multitekstiranje je šire korišten pristup za upravljanje vremenom izvođenja kroz kontekstno prebacivanje. Unatoč tomu, preventivno planiranje može dovesti do nekontroliranog programera koji određuje prioritet i neuspjeh. Nasuprot tome, zajedničko multitekstiranje oslanja se na niti da se suzdrže od praćenja izvršenja. To može stvoriti probleme ako je zajednička višezadaćna nit blokirana čekajući resurs.
Razvoj tehnologije
Do ranih 2000-ih. na većini stolnih računala bilo je samo jednojezgrenog procesora koji nije podržavao hardverske niti. Godine 2002. Intel je implementirao podršku za simultano multiteking na Pentium 4 procesoru, koji se zove Hyper-Threading. 2005. godine predstavljen je dvojezgreni procesor Pentium D i dual-core AMD Athlon 64 X2 procesor.
Procesori u integriranim sustavima s većim zahtjevima za radnje u stvarnom vremenu mogu podržati multitesting, smanjujući vrijeme prebacivanja niti i primjenom posvećene datoteke registra za svaku nit.
model
Navedimo glavne modele implementacije.
1: 1 (nit na razini kernela) - teme koje je stvorio korisnik u kernelu najjednostavnija su implementacija niti. OS / 2 i Win32 u početku koriste ovaj pristup, dok u Linuxu knjižnica C Pridruživanje nitima provodi ovaj pristup kroz NPTL ili starije LinuxThreads. Ovaj pristup koristi i Solaris, NetBSD, FreeBSD, macOS i iOS.
N: 1 (korisnička nit) - ovaj model omogućuje da se sve teme na razini aplikacije preslikaju na jedan planirani objekt na razini kernela. Ovim se pristupom kontekstno prebacivanje može provesti vrlo brzo, a može se primijeniti i na jezgrama koja ne podržava obradu struje. Međutim, jedan od glavnih nedostataka je u tome što ne koristi hardversko ubrzanje na multithreaded procesorima ili računalima. Na primjer: ako se jedna od niti mora izvršiti prilikom podnošenja zahtjeva za I / O, cijeli je proces blokiran, a strujanje se ne može koristiti. U GNU Portable, iznimka C Izraz koristi se kao obrada struje razine korisnika.
M: N (hibridna implementacija) - model prikazuje broj tokova aplikacija za neke N broj kernel stanica ili "virtualne procesore". Ovo je razmak između jezika na razini kernela ("1: 1") i korisnika ("N: 1"). Streaming sustavi "M: N" složeni su, budući da su potrebni kernelski kodovi i korisnički kodovi. U provedbi M: N, knjižnica za obradu teksta odgovorna je za raspoređivanje niti u raspoloživim rasporedenim entitetima. To čini kontekst najoptimalniji jer izbjegava sustavne pozive. Međutim, to povećava složenost i vjerojatnost inverzije, kao i suboptimalnu plana bez opsežnog (i skupe) koordinacije između Planer korisnika okoliša i kernel planer.
Primjeri hibridne implementacije su aktivacija rasporeda koju koristi ugrađena implementacija POSIX NetBSD knjižnice (za model M: N, za razliku od modela implementacije kernela 1: 1 ili modela korisničkog prostora).
Lagani procesi koje koriste starije inačice operacijskog sustava Solaris (Std Thread C toolkit).
Podrška za programske jezike
Mnogi formalni sustavi podržavaju funkcionalnost niti. Implementacije C i C + + implementiraju ovu tehnologiju i omogućuju pristup vlastitim API-jima za operacijski sustav. Neki programski jezici više razine, kao što su Java, Python i .NET Framework, razotkrivaju teme razvojnim programerima kada apstrahiraju određene razlike u implementaciji niti u runtimu. Druga jezična proširenja također pokušavaju apstrahirati koncept konkurentnosti i strujanje od razvojnog programera. Neki jezici su dizajnirani za uzastopni paralelizam pomoću grafičkih procesora.
Nekoliko je provedba tumačiti jezika koji podržavaju paralelnu obradu i streaming, ali ne paralelna izvršenja potoci zbog globalnog ljuske zaključavanje (GIL). GIL - brava za međusobnog isključivanja, izvršava tumača, što može spriječiti i interpretirati kod primjene na dvije ili više niti istovremeno, što ograničava paralelizam u višejezgrenih sustava.
Druge implementacije tumačiti programskim jezicima, kao što su Tcl, koristite proširenje tema za spavanje C. Time se izbjegava maksimalno ograničenje Gil, koristeći model u kojem sadržaj i broj bi trebao biti izričito „dijeli” između niti.
Programski jezici, aplikacija orijentiranih događaji poput Verilog i proširenje Tema san C, imaju različite navoja model koji podržava najveći broj simulacija opreme.
Praktično multitestanje
Multithreaded knjižnice pokreću funkcijski poziv za generiranje nove niti koja uzima vrijednost funkcije kao parametar. Zatim se stvara nova paralelna nit i započinje obrada funkcije trčanja, a zatim povratak. Programski jezici uključuju nit knjižnica, uključujući globalne značajke sinkronizacije koje omogućuju vam da stvoriti i uspješno provesti višedretvenost uz uvjet da nema pogrešaka, koristite mutexes, stanje varijable, kritičnim dijelovima, monitora i drugih vrsta sinkronizacije.
Što je procesor?
Satin - kakva je to tkanina i koje su njegove značajke?
Koji dobar procesor mogu savjetovati danas?
Što je arhitektura računala?
Kako napraviti baubles od konca? Savjeti za početnike
Tapiserija - posebna tkanina
Usluge sustava Windows XP. Savjeti za onemogućavanje neiskorištenih usluga
Kako procesor radi? Načelo rada
Kako izraditi narukvice rukom od niti
Glumci serije `Teme ljubavi `i njegove osobine
Kako otvoriti registar i naučiti kako raditi s njim?
Pokretanje sustava Windows XP. Što je za to i zašto to radi?
DOS operativni sustav: opis i značajke
Što je uključeno u softver sustava?
Žarulja sa žarnom niti: sorte
Teme irisa izrađene su za pletenje
Središnji procesor - cijela glava
Višeslojni procesori: načela rada
Lanac lanca - tamburica
Kako tkati narukvice iz niti
Bikini iz temelja - nezaboravan dar za rođake