Documente Academic
Documente Profesional
Documente Cultură
o vreme.
Dacă aveți două procese simultan de scriere la imprimantă, veți avea dezastru. Având două
procese folosind
același sistem de fișiere va duce invariabil la un sistem de fișiere corupt. În consecință, toate
sistemele de operare au capacitatea (temporar) de a acorda unui proces acces exclusiv la
anumite resurse.
fiecare proces dinset așteaptă un eveniment care poate fi declanșat doar de un alt proces din
data datăseturi . Deoarece toate procesele așteaptă ceva, niciunul dintre ei nu poate iniția un
eveniment care ar trezi un alt membru.seturi și, prin urmare, toate procesele vor” dormi
împreună”.
În majoritatea cazurilor, evenimentul pe care îl așteaptă fiecare proces este eliberarea unora
1. Excludere reciprocă. Fiecare resursa este atribuita exact doar unui singur process.
2. Țineți și așteptați. Procesele tin la current resurse care anterior erau rezervate
pentru a cere alte resurse.
3. Fără condiție de preemțiune. NU este posibilitatea de a ocupa un loc din timp sau
de a elibera un loc.
4. Condiția circulară de așteptare (Așteptare circulară ). Există un lanț inelar de
procese în care fiecare proces așteaptă accesul la o resursă deținută de un alt
proces din lanț.
Orice sistem de operare care are un număr de matrice de dimensiuni fixe în nucleu poate
suferi fundaturi , chiar dacă nu sunt găsite.Deschideți tabelul de fișiere,tabel de proces ,
practic fiecaretabelul este limitatresurse . Completarea tuturor înregistrărilortabelul
procesului poate duce la faptul că următorulcerere pentrucrearea procesului poate fi
respinsă. Într-o combinație nefavorabilă de circumstanțe, mai multe procese pot produce
astfelsolicitați în același timp și fiți înfundăt . Ar trebui să renunț la apelul către
CreateProcess pentru a remedia această problemă?
Abordarea celor mai populare sisteme de operare (Unix, Windows și colab.) Este de a ignora
această problemă, presupunând că un accident puțin probabilblocajul este de preferat
regulilor ridicole care îi obligă pe utilizatori să limiteze numărul de procese, fișiere deschise
etc. Confruntat cu o alegere nedorită între strictețe și comoditate, este dificil să găsești o
soluție care să se potrivească tuturor.
Modalități de prevenire a fundurilor
Furnizarea sistemului o resursă la dispoziția procesului, trebuie să decidă dacă este sigură sau
nu. Se pune întrebarea: există așa cevaun algoritm care ajută la evitarea
întotdeaunaimpasuri și face alegerea corectă. Răspunsul este da, putem evitaimpasuri , dar
numai dacă este sigurinformațiile sunt cunoscute din timp.
Sistemul de operare acceptă o cerere din partea unui proces de utilizator dacă cererea
sa maximă nu depășește n.
Utilizatorul garantează că, dacă sistemul de operare este capabil să-și satisfacă
cererea, atunci toate dispozitivele vor fi returnate sistemului într-un timp finit.
O altă modalitate de a ataca condiția circulară de așteptare este de a acționa conform regulii
conform căreia fiecare proces poate avea doar unul resursă la un moment dat. Dacă ai nevoie
de o secundăresursă - eliberați mai întâi. Evident, acest lucru nu este acceptabil pentru multe
procese.
Astfel, tehnologia de prevenire a așteptării ciclice este de obicei ineficientă și poate închide
inutil accesul resurse .
Metodele de detectare utilizează pe scară largă graficele de distribuțieresurse .
Procesul P 1 așteaptăresursa R 1 .
Procesul P 2 se mențineresursa R 2 și așteaptăresursa R 1 .
Procesul P 3 se mențineresursa R 1 și se așteaptăresursa R 3 .
Procesul P 4 așteaptăresursa R 2 .
Procesul P 5 se mențineresursa R 3 și se așteaptăresursa R 2 .
Întrebarea este dacă această situație este impasul și, dacă da, ce procese sunt implicate în
acesta. Pentru a răspunde la această întrebare, puteți construi un graficresurse , așa cum se
arată în fig. 7.3 . Se poate vedea din figură că există un ciclu care simulează condiția circulară
de așteptare și că procesele P 2 , P 3 , P 5 și poate altele se află înimpas .
Figura: 7.3. Graficul resurselor
Este ușor vizual să detectezi prezența impas , dar avem nevoie și de algoritmi formali
implementați pe un computer.
Unul dintre astfel de algoritmi este descris în [ Tanenbaum, 2002 ]; referințe la alți algoritmi
pot fi găsite și acolo.
Chiar dacă astfel de mijloace sunt disponibile, utilizarea lor necesită cheltuiala și
atenția operatorului.
Recuperare după un impas poate necesita mult efort.
Cel mai simplu și cel mai comun mod de a elimina deadlock ul - terminați unul sau mai multe
procese pentru a avea access la resurse . Apoi, dacă are succes, se pot rula restul
proceselor. Dacă acest lucru nu funcționează, puteți ucide încă câteva procese. După fiecare
lichidare, trebuie rulat un algoritm de detectare a deadlock urilor .
Concluzie