Procese și fire și sistem de mnogopotchnye multitasking, diferența față de fluxul de proces, beneficii și

Procese și fire

Procesele P - o copie a cererii executabil. De exemplu, atunci când deschideți aplicația MS Word, atunci va începe procesul de executare programului MS Word. Flow - sarcină executabil singur în cadrul procesului. Procedeul poate cuprinde o multitudine de fire executabile. După pornirea aplicației marchează fluxul principal, ceea ce poate da naștere la alte fire.







Fiecare proces are propria memorie. Fluxurile același care se execută într-o memorie parts proces unul cu celălalt. Interiorul sistemului de operare are propriul identificator. există fluxuri în cadrul unui proces și să aibă un identificator în cadrul aplicației de lucru. Fiecare fir are propria stiva (el nu-l împărtășească cu celelalte fluxuri și alte fluxuri pot să nu-l urca) și propriul set de registre (flux nu modifică valoarea unui alt registru fir în timpul funcționării). fluxuri sunt adesea denumite procese „ușoare“, deoarece acestea necesită mult mai puține resurse pentru a rula decât un nou proces. În funcție de punerea în aplicare, un calculator tipic desktop poate fi utilizat în mod eficient de la unități până la zeci de mii de fluxuri.

  • ID proces
  • împrejurimi
  • dosar de lucru
  • registre
  • grămadă
  • morman
  • descriptor fișier
  • biblioteci partajate (dll, astfel încât)
  • instrumente de comunicare interprocessor (pipe, cozi de mesaje, semafoare sau memorie generalizată)
  • Resurse specifice sistemului de operare
  • Stivă pointer (pointer la partea de sus a stivei este de fapt „proprii“ stiva, la fel ca în proces, nu au nici un flux)
  • registre
  • Proprietăți (necesar pentru programarea, cum ar fi prioritate sau politica)
  • flux de date specifice
  • Resurse specifice sistemului de operare

Multitasking și Simultaneitatea

Sistemele nogozadachnye M pot rula simultan mai multe sarcini. Multitasking nu înseamnă neapărat adevărat executarea simultană: există destul de mult timp, au apărut astfel de sisteme și când procesoarele sunt single-core. Toate sarcinile sunt programați din perioada de timp în care să facă munca. După aceea, sarcina intră în starea de așteptare. Toate sarcinile au o prioritate, respectiv, cea mai mare prioritate, mai mult timp sarcina poate rula.

Sistemul Multitasking pe un singur fir procesor creând iluzia executarea simultană a mai multor procese. Să presupunem că avem trei procese. Dacă fiecare dintre ei lucrează timp t1, t2 și t3, timpul total va fi egal cu T1 + T2 + T3.







punerea în aplicare consecventă a celor trei procese într-un singur fir procesor

Dacă acum vom împărți fiecare sarcină în părți N, timpul total de executie este DT1 * N + dt2 * N + DT3 * N + dts * N * N, în cazul în care dts - timpul necesar pentru a restabili contextul sarcinii (planificator de locuri de muncă ).

Funcționarea fiecărui proces în procesorul cu un singur fir este împărțit în intervale de timp

Pe de o parte, punerea în aplicare consecventă a celor trei sarcini, fără costurile de comutare între sarcini ar trebui să fie mult mai rapid. Cu toate acestea, în practică, este de multe ori în alt mod. Dacă procesul are o mulțime de operare IO sau de lucru cu resurse externe, atunci cele mai multe ori este inactiv, de așteptare pentru date. Această întrerupere are o altă sarcină. Astfel, timpul total devine mai mică.

Când procesul cel mai mult timp de așteptare pentru resurse prostaivat, executarea în paralel a mai multor sarcini poate fi mai rapid decât în ​​serie

Dacă avem o „chislodrobitelnaya“ problemă, că niciun avantaj va fi. Dar merită să ne amintim că, în unele cazuri, chiar și pe un procesor single-core, cum paralelizare artificială poate accelera în mod semnificativ punerea în aplicare.

mai clar pentru sisteme multi-core: în cazul în care sarcina este împărțită în mai multe fluxuri, fiecare dintre care poate rula într-adevăr paralel. Asta este, dacă vom rezolva problema în 4 fire, în loc de una, atunci potențial va funcționa de 4 ori mai repede. Este clar că undeva există o captură ...

În primul rând, accelerarea cu o creștere a numărului de procesoare și miezuri crește nonlinearly și are un fel de plafon pentru această sarcină (a se vedea. Legea lui Amdahl). Și în al doilea rând, problema devine mult mai complicată atunci când există resurse comune.

Resurse de distribuire

W găină mai multe fire de a face treaba fiecare, nu de partajare de memorie, ei pot accelera foarte mult în sus de lucru. Costurile suplimentare ar fi necesare numai pentru alocarea de resurse pentru aceste fluxuri și să le transmită datele solicitate. Atunci când mai multe fire trebuie să comunice între ele pentru a transmite date, procesarea unui singur obiect, care este acces în comun aceeași resursă (de obicei, un segment de memorie partajată), atunci există așa-numitele condițiile de rasă - condiție cursa - în cazul în care rezultatul muncii depinde de ordinea de acces la resurse .

De exemplu, trebuie să adăugați două matrice a și b de aceeași lungime și plasează rezultatul în matrice c. Fiecare valoare c [i] depinde de o [i] și b [i] și este independent de celelalte. Putem împărți matrice în mai multe secțiuni, iar fiecare dintre fluxurile vor fi angajate numai prin adăugarea acestor site-uri, fără a interfera cu alte fluxuri. Toate acestea vor avea variabile comune a, b și c, dar ele se vor aplica întotdeauna în mod independent, numai în zone separate de memorie.

fire POSIX

Și istoria jgheab sa întâmplat ca fiecare producător de fier puse în aplicare fluxurile sale de proprietate versiune. Aceste implementări sunt foarte diferite unele de altele, creând o mare problemă pentru programatori și de a face imposibilă pentru a scrie software-ul portabil.

În prezent, cei mai mulți producători, împreună cu propriile lor interfețe pentru transmiterea în flux oferta Pthreads. Pthreads este de obicei un set de tipuri și funcții în limbajul C, descris în fișierul pthread.h și pus în aplicare în .h. lib. dll, etc. fișiere furnizate împreună cu biblioteca. Uneori pthread este o parte dintr-o altă bibliotecă (de exemplu, libc).

ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 [email protected] studenți Stepan Sypachev

Încă nu este clar? - întrebări scrie pe cutie