Sunteți pe pagina 1din 5

Sistemele informatice sunt pline de resurse care pot fi utilizate doar de un singur proces la

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.

În prelegerile anterioare, am analizat modalități de sincronizare a proceselor care permit


proceselor să coopereze cu succes. Cu toate acestea, în unele cazuri, pot apărea dificultăți
neprevăzute. Să presupunem că mai multe procese concurează pentru un număr
finitresurse .Dacă este solicitat de proces resursa nu este disponibilă, sistemul de operare
pune acest proces într-o stare de așteptare. În cazul în care este necesarresursa este deținută
de un alt proces în așteptare, primul proces nu își poate schimba starea.Această situatie se
numeste deadlock. Se spune că într-un sistem multiprogramare, un proces se află într-o
stare deadlock dacă se așteaptă la un eveniment care nu se va întâmpla niciodată.

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ă”.

Blocajele pot fi cauzate și de erori de programare. De exemplu, un proces poate aștepta


degeaba deschiderea unui semafor, deoarece o aplicație scrisă incorect a uitat să prevadă
această operațiune.

În majoritatea cazurilor, evenimentul pe care îl așteaptă fiecare proces este eliberarea unora

resursă deținută în prezent de un alt membru al setului. Cu alte cuvinte, fiecare


membru al setului de procese blocate așteaptă o resursă care este deținută
printr-un proces blocat. Niciunul dintre procese nu poate rula, niciunul nu poate elibera
orice resurse și niciuna dintre ele nu poate fi trezită. Numărul de procese și
numărul și tipul de resurse deținute și solicitate nu sunt importante. Acest
rezultatul este valabil pentru orice tip de resursă, inclusiv hardware și software. Acest
un fel de blocaj se numește blocaj al resurselor.

De obicei, luptafundăturile sunt foarte costisitoare. Cu toate acestea, pentru o serie de


sisteme, de exemplu, pentru sistemele în timp real, nu există altă cale de ieșire.

Condițiile pentru deadlock au fost formulate de Coffman, Elfic și Shoshani în 1970.

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ț.

Pentru aparitia deadlock ului este necesar și suficient este îndeplinirea tuturor celor


patru condiții.

Principalele direcții de abordare a fundurilor

Problemă Blocurile au inițiat multe cercetări interesante în domeniul informaticii. Evident,


condiția de așteptare ciclică este diferită de celelalte. Primele trei condiții formează regulile
care există în sistem, în timp ce a patra condiție descrie o situație care poate apărea într-o
anumită succesiune nefavorabilă de evenimente. Prin urmare, metodele de prevenireblocajele
se concentrează în principal pe încălcarea primelor trei condiții prin introducerea unui număr
de restricții privind comportamentul proceselor și metodelor de distribuțieresurse . Metodele
de detectare și remediere sunt mai puțin conservatoare și se reduc la găsire și rupereciclul
de așteptareresurse .

Deci, principalele direcții ale luptei împotriva fundaturi :

 Ignorând cu totul problema


 Prevenirea fundaturi
 Detectare fundaturi
 Recuperare după fundaturi

Ignorând problema fundurilor

Cea mai simplă abordare este de a ignora problema. fundaturi . Pentru a lua o astfel de


decizie, este necesar să se evaluezeprobabilitatea aparițieiimpas și comparați-l cu
probabilitatea de deteriorare cauzată de alte defecțiuni hardware și software. În general,
proiectanții nu sunt dispuși să sacrifice performanța sistemului sau experiența utilizatorului
pentru a implementa complexe și costisitoarefundaturi .

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

Scopul prevenirii fundaturi - pentru a oferi condiții care exclud posibilitatea de situații


de impas . Majoritatea metodelor se referă la prevenirea uneia dintrecondiții pentru apariția
unui impas .

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.

Modalități de prevenire a blocajelor prin alocarea atentă a resurselor. Algoritmul


bancherului

Poate fi evitat blocaje dacă distribuieresurse prin respectarea anumitor reguli. Printre acest tip


de algoritmi, cel mai faimosalgoritmul bancherului , propus de Dijkstroy, care se bazează pe
așa-numitele state sigure sau fiabile . O stare sigură este una pentru care există cel puțin o
succesiune de evenimente care nu vor avea ca rezultatimpas . Modelul algoritmului se
bazează pe acțiunile unui bancher care, având capital disponibil, emite împrumuturi.

Esența algoritmului este următoarea.

 Să presupunem că sistemul are n dispozitive, cum ar fi casete.

 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.

 Starea actuală a sistemului se numește fiabilă dacă sistemul de operare poate asigura


că toate procesele rulează pentru un timp finit.

 In conformitate cu Alocarea dispozitivelor de către algoritmul bancherului este


posibilă numai dacă starea sistemului rămâne fiabilă.

Încălcarea condiției ciclice

O modalitate este să te organizezi resurse . De exemplu, puteți atribui toateresurse


cu numere unice și necesită procese pentru a solicitaresurse în ordine crescătoare.

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 .

Luați în considerare o situație model.

 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.

Recuperarea dupa deadlock

Odata ce descoperim un deadlock, se poate de eliminat conditiile de aparitie a deadlock


ului. În acest caz, este posibil ca mai multe procese să piardă parțial sau complet rezultatele
muncii efectuate.

Complexitatea recuperării se datorează mai multor factori.

 Majoritatea sistemelor nu dispun de mijloace eficiente suficiente pentru a suspenda un


proces, a-l deconecta și a relua apoi locul unde a fost oprit.

 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 .

În unele cazuri, puteți prelua temporar resursa se află la proprietarul actual și transferați-o


către un alt proces. Opțiune de preluareresursa procesului, dă-o altui proces și apoi
returnează-l înapoi fără daune depinde în mare măsură de naturăresursă . Această recuperare
este adesea dificilă, dacă nu chiar imposibilă.

O serie de sisteme implementează facilități de revenire și repornire sau repornire punct de


control (salvând starea sistemului la un moment dat). Dacă proiectanții de sistem știu
astablocajul este probabil, pot organiza periodic puncte de control pentru procese. Uneori,
dezvoltatorii de aplicații trebuie să facă acest lucru.

Concluzie

Apariția deadlock urilor este o problemă potențială pentru orice sistem de operare. Ele apar


atunci când există un grup de procese, fiecare dintre ele încercând să obțină acces exclusiv la
uneleresurse și pretenții laresurse deținute de un alt proces. Drept urmare, toți se află într-o
stare de așteptare interminabilă.

DIN fundăturile pot fi combătute, detectate, evitate și sistemul poate fi restaurat


dupăfundaturi . Cu toate acestea, costul de a face acest lucru este mare și efortul ar trebui
întreprins numai în sistemele în care ignorarea deadlock urilor  duce la consecințe
dezastruoase.

S-ar putea să vă placă și