Subiect C - ce este?

Ce au în comun tricourile și programele de calculator? Ambele sunt alcătuite din mai multe fire! În timp ce firul într-un tricou care deține materialul într-o singură lamă, C fir (literal - „toroane“ sau „fire“) sistemele de operare integrează toate programele pentru a efectua acțiuni în serie sau în paralel, simultan. Fiecare fir din program identifică procesul care este pornit atunci când sistemul (firul de sistem C) îl solicită. Acest lucru optimizează funcționarea unui astfel de dispozitiv complex ca un calculator personal și afectează pozitiv viteza și performanța sa.

definiție

În threadul C sau firul de execuție este cea mai mică secvență de comenzi gestionate de un programator independent, care este, de obicei, o parte integrantă a sistemului de operare.c thread

Firele au de obicei o anumită prioritate, ceea ce înseamnă că anumite fire au prioritate față de altele. Odată ce procesorul finalizează procesarea unui fir, acesta poate porni următoarea coadă de așteptare. De regulă, așteptarea nu depășește câteva milisecunde. Programele de calculator care implementează "multithreading" pot executa mai multe fire simultan. Cele mai moderne sisteme de operare suportă C Thread la nivel de sistem. Acest lucru înseamnă că, atunci când un program încearcă să preia toate resursele procesorului, sistemul trece cu forța la alte programe și forțează programul de suport al procesorului pentru a împărți resursele în mod egal.

Termenul "fir" se poate referi, de asemenea, la o serie de mesaje legate într-o discuție online. Buletinele Web constau dintr-o varietate de subiecte sau sucursale. Răspunsurile trimise ca răspuns la publicația inițială fac parte din același fir. În e-mail flux se poate referi la o serie de răspunsuri sub formă de comenzi „back“ și „înainte“, aparținând unui anumit post, și de a structura copac conversație.

Multithreading C Thread în Windows

În programarea computerelor, una cu filet este prelucrarea unei comenzi la un moment dat. Opusul unei filetări cu un singur fir este multistrat. Ambii termeni sunt folosiți pe scară largă în comunitatea de programare funcțională.

Multithreading este similar cu multitasking, dar vă permite să procesați mai multe fire la un moment dat, dar nu mai multe procese. Deoarece firele sunt mai mici și sunt controlate prin instrucțiuni mai simple, multithreading poate apărea și în cadrul proceselor.

Exemple ale sarcinii C Thread

Un sistem de operare cu mai multe fileturi poate executa simultan mai multe sarcini de fundal, cum ar fi modificarea fișierelor de logare, indexarea datelor și gestionarea ferestrelor. Browserele web care suportă multithreading pot deschide mai multe ferestre cu funcționarea simultană a jаvascript și Flash. Dacă programul este complet multi-threaded, diferite procese nu ar trebui să se afecteze reciproc, dacă procesorul are suficientă putere pentru a le procesa.

Ca multitasking, multithreading îmbunătățește, de asemenea, stabilitatea programelor. Multithreading poate împiedica crasarea programului și împiedicarea unui computer să se prăbușească. Deoarece fiecare thread este procesat separat, o eroare în una dintre ele nu poate perturba funcționarea PC-ului. Astfel, multithreading poate duce la mai puține defecțiuni în sistemul de operare în ansamblu.firul de somn c

multitasking

Multitasking procesează mai multe sarcini în modul paralel și caracterizează, de asemenea, funcționarea calculatorului. Procesorul poate procesa simultan mai multe procese cu precizie absolută. Cu toate acestea, procesează numai instrucțiunile trimise de software. Prin urmare, pentru a profita din plin de capacitățile procesorului, software-ul trebuie să poată procesa mai multe sarcini simultan și să fie și multitasking.

Istoric retrospectiv

Sistemele de operare timpurii ar putea derula mai multe programe simultan, dar nu au sprijinit pe deplin multi-tasking. Un program ar putea consuma toate resursele procesorului atunci când efectuează o operațiune specifică. Principalele sarcini ale sistemului de operare, cum ar fi copierea fișierelor, nu au permis utilizatorului să efectueze alte activități (de exemplu deschiderea sau închiderea ferestrelor).

Sistemele de operare moderne includ suport complet pentru multitasking - mai multe soluții software pot funcționa simultan, fără a interfera cu funcționalitatea celuilalt.

Multitasking-ul îmbunătățește, de asemenea, stabilitatea calculatorului. De exemplu, dacă unul dintre procese eșuează, acest lucru nu va afecta alte programe care rulează, deoarece computerul procesează fiecare proces separat. Acest lucru poate fi comparat cu procesul de scriere scrisoare: dacă vă aflați în mijlocul foii și au scris deja o parte din text, dar browser-ul web se închide în mod neașteptat, nu veți pierde munca prestată deja.c sarcină thread

Sisteme unice și multiprocesoare

Implementarea tehnologiilor de streaming și procesor diferă, în funcție de sistemul de operare, dar cel mai adesea debitul este o componentă a procesului. În același timp, mai multe fire pot exista într-un singur proces, executând și partajând resurse. În special, firele de proces C Thread utilizează în orice moment codul executabil și valorile variabilelor într-un co-mod.

Sistemele cu un singur procesor implementează multi-threading în timp: procesorul central (CPU) comută între diferite fluxuri de software. Într-un multiprocesor și un sistem multi-core, o anumită cantitate de fire este executată în paralel, fiecare nucleu de procesor sau de a folosi un flux separat, simultan.

Tipuri de fluxuri

Planificatorii procesele de cele mai multe sisteme de operare moderne suportă în mod direct atât calendarul și de procesare multi-stream, în timp ce nucleul sistemului de operare permite dezvoltatorilor să gestioneze fluxul de a furniza funcțiile necesare prin intermediul interfeței de apel de sistem. Unele implementări de fire sunt denumite fire de nucleu, în timp ce procesele de lumină (LWP) sunt un tip de fir care are aceeași stare de informare. Solutii software pot avea o fire utilizator-spațiu, atunci când sunt folosite cu cronometre (filet temporizator C), semnale sau alte metode pentru a întrerupe acțiunile lor, fac un fel de calendarul ad-hoc.

Fluxuri și procese: diferențe

Fluxurile diferă de procesele clasice de multitasking cu următoarele caracteristici:

  • procesele sunt de obicei independente, în timp ce firele există ca subseturi ale procesului;

  • procesele transporta mult mai multe informații decât firele;



  • procesele au spații de adresă dedicate;

  • procesele interacționează numai prin mecanisme de comunicare sistemică;

  • Conversia de context între firele din proces are loc mai repede decât schimbarea contextului între procese.

Planificare preventivă și comună

În sistemele de operare pentru mai mulți utilizatori, multithreadingul preventiv este o abordare mai folosită pentru controlul timpului de execuție prin comutarea contextului. Cu toate acestea, planificarea preventivă poate duce la prioritizarea și nereușita programatorilor necontrolați. În schimb, multithreadingul comun se bazează pe fire pentru a se abține de la monitorizarea executării. Acest lucru poate crea probleme dacă firul de multitasking partajat este blocat prin așteptarea resursei.Intrarea c-thread

Evoluția tehnologiei

Până la începutul anilor 2000. pe majoritatea desktop-urilor exista un singur procesor cu un singur nucleu care nu suporta fire hardware. În 2002, Intel a implementat suport pentru multithreading simultan pe un procesor Pentium 4, numit Hyper-Threading. În 2005, a fost introdus un procesor dual-core Pentium D și un procesor dual-core AMD Athlon 64 X2.

Procesoare în sisteme integrate cu cerințe mai mari pentru a opera în timp real, sunt capabile să suporte multi-threading, reducerea timpului de comutare curge, și un fișier registru dedicat este utilizat pentru fiecare flux.

model

Să enumerăm principalele modele de implementare.

1: 1 (fir la nivel de kernel) - temele create de utilizator în kernel sunt cea mai simplă implementare posibilă a firelor. OS / 2 și Win32 utilizează această abordare inițial, în timp ce în Linux bibliotecă C Intrarea în thread implementează această abordare prin NPTL sau LinuxThreads mai vechi. Această abordare este utilizată și de Solaris, NetBSD, FreeBSD, macOS și iOS.

N: 1 (fir de utilizator) - acest model prevede că toate firele la nivel de aplicație sunt mapate la un obiect planificat la nivel de kernel. Prin această abordare, comutarea contextului poate fi efectuată foarte rapid și, în plus, poate fi implementată și pe acele nuclee care nu suportă procesarea fluxului. Cu toate acestea, unul dintre principalele dezavantaje este că nu beneficiază de accelerare hardware pe procesoare sau calculatoare cu mai multe rânduri. De exemplu: dacă una dintre firele de execuție trebuie executată atunci când se face o solicitare I / O, întregul proces este blocat și streamingul nu poate fi utilizat. În aplicația GNU Portable, excepția Thread C este utilizată ca procesare de flux a nivelului de utilizator.

M: N (implementare hibridă) - modelul afișează un număr de fluxuri de aplicații pentru un număr de numere N de celule kernel sau "procesoare virtuale". Acesta este un compromis între firele la nivel de kernel ("1: 1") și utilizatorul ("N: 1"). Sistemele de streaming "M: N" sunt mai complexe, deoarece atât codul kernelului cât și codul de utilizator sunt necesare. În implementarea M: N, biblioteca de procesare a firului este responsabilă pentru programarea firelor în entitățile programate disponibile. Acest lucru face ca contextul să fie cel mai optim, deoarece evită apelurile de sistem. Cu toate acestea, acest lucru crește complexitatea și probabilitatea de inversiune, precum și planul de suboptimal, fără o coordonare extinsă (și costisitoare) între mediul utilizator planificator și planificator de nucleu.fișierul std c

Exemple de implementare hibrid - activarea planificator folosite implementare POSIX NetBSD construit biblioteca (modelul M: N, spre deosebire de modelul de nucleu implementare de 1: 1 sau modelele user-space).

Procesele de lumină utilizate de versiunile mai vechi ale sistemului de operare Solaris (set de instrumente Std Thread C).

Suport pentru limbile de programare

Multe sisteme formale suportă funcționalitatea firelor. Implementările C și C ++ implementează această tehnologie și oferă acces la propriile API pentru sistemul de operare. Unele limbi de programare de nivel superior, cum ar fi Java, Python și .NET Framework, expun firele dezvoltatorilor atunci când abstracționează diferențe specifice în implementarea firelor în timpul rulării. Alte extensii de limbă încearcă, de asemenea, să rezolve conceptul de concurrency și streaming de la dezvoltator. Unele limbi sunt proiectate pentru paralelism consecutiv folosind procesoare grafice.

windows c thread

Un număr de limbi interpretate au implementări care susțin procesarea în flux și paralel, dar nu execuția paralelă a firelor datorită blocării globale a interpreților (GIL). GIL este un bloc de excludere reciprocă care este executat de interpret, care poate împiedica interpretarea simultană a codului aplicației pe două sau mai multe fire simultan, ceea ce limitează paralelismul în sistemele multi-core.

Alte implementări ale limbajelor de programare interpretate, cum ar fi Tcl, utilizează Sleep-ul Thread C. Acest lucru evită limita maximă GIL, folosind un model în care conținutul și codul trebuie să fie explicit împărțite între fire.

Limbile de programare pentru aplicații, orientate spre evenimente, cum ar fi Verilog, și extensia Thread sleep C, au un model de fir diferit care suportă numărul maxim de modele pentru a modela echipamentul.c excepție thread

Mulțimea practică

Bibliotecile cu mai multe linii inițiază un apel de funcție pentru a genera un fir nou care ia o valoare a funcției ca parametru. Apoi se creează un nou fir paralel și se începe procesarea funcției de rulare, urmată de o întoarcere. Limbile de programare conțin biblioteci de fișiere care includ funcții globale de sincronizare care vă permit să creați și să implementați cu succes multithreading cu condiția de a nu exista erori folosind mutexuri, variabile ale condițiilor, secțiuni critice, monitoare și alte tipuri de sincronizare.

Distribuiți pe rețelele sociale:

înrudit
Un set de comenzi care specifică secvența acțiunilor procesorului. CPU comandă sistemUn set de comenzi care specifică secvența acțiunilor procesorului. CPU comandă sistem
Folosind fire de panglică în haine de tricotatFolosind fire de panglică în haine de tricotat
Ce este arhitectura calculatorului?Ce este arhitectura calculatorului?
Cum să dezactivați Windows 8 pe un laptop sau pe un computerCum să dezactivați Windows 8 pe un laptop sau pe un computer
Crearea și utilizarea de programe de calculator. Un program de calculator este ...Crearea și utilizarea de programe de calculator. Un program de calculator este ...
Cum să actualizați propriile ferestreCum să actualizați propriile ferestre
Clasificarea sistemelor de operareClasificarea sistemelor de operare
Ce este software-ul de sistem?Ce este software-ul de sistem?
Cum să activezi sugestiile și trucurileCum să activezi sugestiile și trucurile
Care este interfațaCare este interfața
» » Subiect C - ce este?