Procese și sarcini

Deși conceptul de multiprogramming și moduri de operare multitasking suficient de aproape, dar nu este încă la fel. Din păcate, există încă unele confuzii acolo. Principalele motive pentru acest lucru - nu numai faptul că terminologia este în flux și că multe companii-dezvoltatorii de diferite preferat pentru a apela același efect, dar, de asemenea, complexitatea, ambiguitatea situației.

Modul multiprogramming presupune că sistemul de operare organizează executarea în paralel a proceselor de calcul multiple pe un singur com computer. Și fiecare proces de calcul poate, în principiu, nu depinde de un alt proces de calcul de rețea. Cu excepția faptului că acestea pot întârzia executarea reciproc din cauza necesității de a partaja resursele sau alternativ puternic întârzie executarea reciproc, în resursa nonsharable de proprietate. Acestea pot fi nici fișierele partajate sau variabile partajate. Ele sunt în general sub-behoove diferiți utilizatori. Doar aceste procese din perspectiva unui observator extern, pe, rula pe același computer, în același timp. Cu toate că pot fi efectuate la momente diferite și pe diferite calculatoare. Principalul lucru - este faptul că modul multiprogramming prevede aceste procese de Nez-dependență. Fiecare proces este sistemul de operare alocă solicitat re-LAS, ruleaza ca în cazul în care pe o mașină virtuală separată. mijloace de protecție de sistem trebuie să asigure un proces de calcul fără interferențe în alte procese de calcul. Și dacă o astfel de protecție nu poate fi asigurată,

Conceptele procesului de calcul și de resurse _______________________________ 37

sistemul nu poate fi considerat de încredere. O mulțime de tehnici și metode specifice au fost inventate de către dezvoltatorii pentru a oferi încredere de calcul și de pre-dotvrascheniya posibilitate în mod intenționat sau din greșeală afectează rezultatele calculelor în celălalt proces.

Cu toate acestea, există un alt nu trebuie să împartă calcul de proces-SY unul de altul, ci mai degrabă să le combine, pentru a oferi posibilitatea de aproape Interac-interacțiune între Execută calcule. De exemplu, rezultatele calculelor pe care-un singur proces de calcul pot fi necesare pentru a începe sau de a continua lucrarea altuia. Există numeroase situații în care este necesar să se asigure o cooperare activă între executante-inflamator Compute-proceselor. Dacă nu puteți obține acces la variabilele de alt proces, deoarece sistemul de operare este construit în condiții de siguranță și de a proteja al-esting spațiu al procesului de calcul de a interfera cu alte procese de calcul, există obstacole serioase în transmiterea oricăror date a fost între procese.

Oțelul de operare multitasking termen folosit doar pentru acele cazuri în care este necesar să se asigure o interacțiune între calcule. Modul Multiza-de vacanță înseamnă că sistemul de operare vă permite să organizeze executarea para paralel a calculelor, și există aranjamente speciale pentru date, semnale de ceas, orice comunicare între calculele de formare care interacționează. Acest lucru se poate face din cauza faptului că aceste calcule nu au nevoie pentru a izola sistemul unul de altul. Sistemul de operare nu ar trebui să utilizeze în mod necesar toate mecanismele de protecție a calculului-TION neamestecului unul în celălalt. Atunci când modul multi-tasking, dezvoltator de software ar trebui să aibă grijă de repartizarea resurselor între obiectivele sale. Sistemele Opera-TION va avea în comun timp CPU între sarcini.

Conceptul de proces a fost introdus pentru a pune în aplicare ideile multiprogramming. Obiectivul pe termen este, de asemenea, din păcate, în cele mai multe cazuri, utilizate pentru același lucru. La acea vreme, distins termenii „multi-tasking“ și „multiprogrammi-TION“, dar apoi au început să înlocuiască reciproc, iar acest lucru face o încâlcită-Tsu semnificative. Astfel, pentru a pune în aplicare multitasking în interpretarea inițială a fost necesară introducerea entității corespunzătoare. Un astfel de oțel entitate lay-kovesnye procese (subțiri) sau, în mod avantajos, deoarece acestea sunt acum numite, fire de execuție, filamente sau fire sunt (fire).

„Executie de alimentare (fir) nu trebuie să fie confundat cu fluxul de date (stream).

38_____________________________________________ Capitolul 1. Concepte de bază

Cu alte cuvinte, în cazul sistemului de procese de operare le consideră total independent și independentă. În acest caz, acesta este sistemul de operare preia rolul de arbitru în disputele de procese concurente pentru resurse. De asemenea, ea a fost asigurată asigură protecție, pentru a efectua calcule.

Conceptele procesului de calcul și de resurse _______________________________ 39

Acesta poate fi folosit în special în mod eficient pentru a efectua multithreading aplicații Ras EFINIȚII. De exemplu, multi-threaded server poate executa interogări în paralel pe mai mulți clienți. După cum este bine cunoscut, de operare pentru SIS subiect OS / 2 a fost unul dintre primele sisteme utilizate în calculatoarele personale, Terah, care suporta multi-threading. La mijlocul anilor '90 pentru acest sistem de operare utilizat a fost creat de către un număr mare de aplicații în care prezența unor mecanisme multi-threading duce de fapt la un termen existent îmbunătăți viteza de calcul. Pentru sistemele de operare Windows, cu care ne confruntăm, multithreading au pronunțat produse, cum ar fi SQL Server, Oracle. Și, deși același Word, Excel, Internet Explorer ca munca lor cu un flux, paralelism explicit în aceste programe este aproape sub-refren. Prin urmare, prin creșterea numărului de procesoare din calculator, astfel de programe nu încep să ruleze mai repede.

Astfel, esența „firului de execuție“ a fost introdus pentru a-zoaie schyu aceste unități să aloce timp CPU între posibile de lucru-mi. Esența „procesul“ sugerează că necesitatea de a lua în considerare programarea TVA toate resursele alocate acestora. In timp ce manipulare se poate schimba numai contextul sarcinii de activitate-flux, dacă vom trece de la o sarcina la alta într-un singur proces. Toate celelalte resurse de calcul nu sunt afectate. Fiecare proces întotdeauna constă din cel puțin unul dintre primul fir de execuție și numai dacă există paralelism intern, cald-ceață poate „părți“ un flux în mai multe paralele. A apărut necesitatea fluxurilor în sistemele informatice uniprocesor, deoarece acestea permit să organizeze calculele mai eficient. Pentru a folosi avantajele sistemelor multiprocesor cu flux de memorie partajată este pur și simplu un eventual-go, deoarece acestea permit nu numai să accelereze într-adevăr până la executarea sarcinilor de co-torye permite paralelismul lor natural, dar, de asemenea, pentru a descărca elementele procesor-Nye ale lucrării, astfel încât acestea nu sunt inactive. Rețineți, totuși, că este de dorit să fie în măsură să minimizeze interacțiunea dintre fluxurile face este, pentru accelerarea atât a fluxurilor paralele pot fi minimizate din cauza întârzierilor de sincronizare și a schimbului de date.

Fiecare fir se execută strict secvențial și are propriul contor program și stivă. Curente ca procesele pot genera fluxuri descendente, deoarece orice proces este format din cel puțin un flux. Asemenea procedee tradiționale (adică, procese, constând dintr-unul pe curent), fiecare fir poate fi într-unul din statele activi. In timp ce un fir este blocat (sau este în coadă gata de prelucrare prin-vile), un alt fir al aceluiași proces poate fi realizată. Firele de executie impart pro-tsessornoe timp, precum și, la fel ca și procesele convenționale, în conformitate cu timp personal opțiunile de planificare.

40_____________________________________________ Capitolul 1. Concepte de bază

Conceptele procesului de calcul și de resurse _______________________________ 41

Acum, dacă te duci înapoi la fișierul CONFIG.SYS deja menționat, în care, pentru sistemele de operă-TION OS / 2 indică cei mai importanți parametri care definesc munca ei, este de remarcat faptul că, în această linie fișier FIRE = 1024 indică o nu co-lichestvo procese și anume sarcini. Și sub provocare în acest caz este înțeleasă ca un proces, iar fluxul procesului.

În cele din urmă, vă puteți da câteva sfaturi cu privire la utilizarea vă flux completează pentru a construi aplicații, împrumutate de la [28].

- În cazul unui sistem uniprocesor o multitudine de fluxuri paralele accelerează adesea de lucru de aplicare, deoarece timpul fiecare promo individ zhutok posibil să se efectueze un singur flux. În plus, mai mult flux, cu atat mai mare sarcina asupra sistemului, legate de re-Închisoare pe între ele. Multitasking de mai mult de două fluxuri permanente-ing de lucru în proiectul dumneavoastră nu face programul mai rapid, în cazul în care fiecare dintre fluxurile care nu vor necesita frecvente de intrare-ieșire.

- În primul rând, trebuie să înțelegeți ceea ce este necesar de debit. Subiect că tratamentul poate preveni ca sistemul să răspundă rapid la solicitările de intrare-te-apă. Fire permite programului să răspundă la solicitările utilizatorilor și gura-roystv, dar în același timp (inclusiv) este extrem de CPU intensive. Fluxurile-permit calculatorului pentru a servi simultan mai multe dispozitive, și ați creat un flux, responsabil pentru manipularea anumite dispozitive, cum ar fi mini-MUM poate necesita la fel de mult timp este necesar pentru sistem interogările on-rabotki de la toate dispozitivele.

- Fluxurile pot atribui priorități diferite la cele mai puțin importante mye-procesele care rulează în fundal. Acesta este modul de împărțire corectă a resurselor CPU. Cu toate acestea, trebuie să recunoaștem faptul că procesorul este unul, la toate, și multe fluxuri. În cazul în care dvs. de rutină principal al programului trimite ceva pentru procesare în firul de prioritate redusă, programul în sine devine Xia pur și simplu imposibil de gestionat.

- Curente funcționează bine atunci când acestea sunt independente. Dar ei încep să lucreze neproductivă atunci când forțat de multe ori pentru a sincroniza accesul la resursele de pe-conductive. Blocajele și secțiuni critice nu lyayut sistem ADD viteză, dar fără utilizarea acestor mecanisme de calcul care interacționează cu Interac nu poate rula.

42_____________________________________________ Capitolul 1. Concepte de bază

- Ori de câte ori oricare dintre thread încearcă să profite de procesul de calcul a resurselor partajate de care aparține, trebuie să legalizeze într-un fel și de a proteja afacerea. Un suport bun-stvom pentru aceasta sunt secțiunile critice și mutex coadă-TION raportate (vezi cap. 7). Dacă testați aplicația și nu a găsit erori de sincronizare, aceasta nu înseamnă că ele nu sunt acolo. Utilizatorul mo-Jette crea situațiile cele mai imprevizibile. Este foarte important mo-ment în dezvoltarea de aplicații multi-threaded.

- Se atașează la fluxul de mai multe funcții. funcționalități complicate otno-sheniya dificil de înțeles structura generală a cererii, algoritmul său. Mai simplu și lipsit de ambiguitate, fiecare dintre situațiile avute în vedere, cu atât mai probabil-yatnost că greșelile pot fi evitate.