[Edit] Concepte
procese paralele - procese, implementarea care cel puțin se suprapune parțial în timp
procese independente - procese care utilizează seturi independente de resurse. Pe un astfel de proces nu afectează rezultatul activității procesului de lucru independent de el.
procesele care utilizează resursele în comun - procese interacționând.
partajarea resurselor - utilizarea în comun a proceselor de resurse multiple BC, în cazul în care fiecare proces în timp ce deține resursa.
Separarea se supune atât resursele hardware și software.
resurse partajate, care ar trebui să fie disponibile la ora actuală doar un singur proces - așa-numitele resurse critice. Aceste resurse pot fi, fie un dispozitiv extern, precum și o anumită variabilă, din care valoare poate varia în diferite procese.
Trebuie să fie în măsură să rezolve două probleme majore:
Multiprogramming cerință esențială în ceea ce privește alocarea resurselor este după cum urmează: rezultatul procesului nu ar trebui să depindă de ordinea de comutare între procesele de execuție, adică din raportul vitezei unui proces de alte procese care rulează.
Luați în considerare exemplul unei situații în care încalcă cerințele multiprogramming. Să fie o anumită funcție simplă care citește caracterul introdus de la tastatură, și afișează pe ecran:
În acest exemplu, vom folosi unele funcții de intrare condiționată () și de ieșire (), deoarece în acest moment pentru noi contează așa cum este implementat în mod specific I / O în sistem. Deoarece această bucată de cod va fi utilizat în aproape orice aplicație, este convenabil să se facă partajata, atunci când se încarcă sistemul de operare într-o anumită regiune de memorie care este disponibilă pentru toate procesele, o copie unică a programului, iar toate procesele folosesc această copie împreună. Rețineți că, în acest caz, în variabila este partajată.
- Un proces solicită ecoul funcției (), dar în momentul în care simbolul de intrare a fost citit în variabila, dar înainte de a fi afișat, executarea proces este întreruptă și pentru a efectua procesul de încărcare B.
- Procesul produce de asemenea funcția echo (). După ecoul funcției () într-o variabilă conține mult mai nouă valoare citită de pe tastatură.
- Un proces se reia de la punctul în care a fost întreruptă, și afișează caracterul în variabile.
În acest exemplu, caracterul citit procesul A, a fost pierdut, iar caracterul citit în proces a fost derivat de două ori. Rezultatul proceselor aici depinde de la care punctul de a comuta proces, și ce fel de proces va fi ales în mod specific pentru a efectua următoarele.
Astfel de situații sunt numite curse (condițiile de rasă) între procese și procese - concurente.
O parte a programului (de fapt, un set de operațiuni), în care lucrarea este o resursă critică, numit-o secțiune critică. sau intervalul critic.
Singura modalitate de a evita curse atunci când se utilizează resurse partajate - pentru a controla accesul la resurse partajate pe sistem. Este necesară organizarea de excludere reciprocă - acest mod de a lucra cu o resursă partajată, în care, la momentul în care unul dintre procesele de lucru cu o resursă partajată, toate celelalte procese nu pot accesa.
Rețineți că problema organizării de excludere reciprocă este relevantă nu numai pentru procesele interdependente care au în comun anumite resurse pentru schimbul de informații. Situația în cazul în care procesele nu sunt conștiente de existența celuilalt, utilizează resursele de sistem la nivel mondial, cum ar fi dispozitive de intrare / ieșire, imprimante, etc. În acest caz, deoarece există o competiție pentru resurse, accesul la care trebuie să fie, de asemenea, organizate pe principiul excluderii reciproce.
[Edit] Probleme de organizare a excluderii reciproce
- Deadlocks (deadlocks)
- Blocarea (discriminarea)
[Regula] Deadlocks (deadlocks)
impasuri (Deadlocks) pot apărea atunci când organizarea de excludere reciprocă, o situație în care concurează pentru resursa critică procesele de vin în țintui - blocat permanent.
Există două procese A și B, fiecare dintre ele, la un moment dat trebuie să aibă acces la două resurse, R1 și R2. Un proces pentru a accesa resursa R1, și, prin urmare, nici un alt proces nu poate avea acces la el până când procesul A este terminat cu ea. Procesul de șters simultan resurse R2. În această situație, fiecare proces este în așteptare pentru o resursă lipsă, dar atât resursa nu va fi eliberat, iar procesul nu va fi niciodată în măsură să efectueze acțiunile necesare.
[Rule] Blocking (discriminare)
Blocarea - o situație în care accesul la unul dintre procesele resurselor partajate nu sunt furnizate din cauza activității altor procese, cu prioritate mai mare.