You are on page 1of 13
35 EVITAREA INTERBLOCARI 163 mai multa eficien{Z, noile puncte de reluare ar trebui si nu le suprascrie pe cele vechi, ci si scrse in figiere noi, astfel incdt, pe masura ce procesul se executl, se va acumula o intreaga nti de fisiere cu puncte de reluare. Cind este detectata o interblocare, este usor de observat ce resurse sunt necesare, Pentru a face area, un proces care define o resursi de care este nevoie in sistem este relat dint-un dinaintea obtinerii accesului la resured, prin pornirea de la unul din punctele de reluare rai inainte. Tot ceea ce a realizat procesul respectiv dupa acest punct de reluare se pierde (de lu, tot ceea ce a fost tipdrit dupa punctul de reluare trebuie inkiturat, deoarece va fi din now i), Astel, procesul este repornit dintr-un moment anterior cfnd nu detinea resursa, care va fi acum unuia din procesele aflate in interblocare. Dac’ procesul repornit incearca din nou si accesul la resursi, va trebui si astepte pani ce aceasta va deveni disponibili. prin distrugerea proceselor Metoda cea mai primitiva, dar si cea mai simpla de a rezolva o interblocare este distrugerea sau a mai multor procese. U posibiitate este aistrugerea unui proces dintr-un cictu. Cu putin celelalte procese isi vor putea continua executia. Dac’ aceasta nu ajutd, distrugerea se poate pana cand ciclul este eliminat. (ao alternativa, poate fi de asemenea ales ca victima un proces care nu se afla in ciclu, pentru a resursele detinute de acesta. fn aceasta abordare, procesul care va fi distrus este ales cu grija oe detine resurse de care au nevoie unele procese din ciclu. De exemplu, un proces poate © imprimanta i si ceara un trasator, iar altul si detind un trasator sisi ceard o imprimanta. te douai procese se aflé in interblocare, Un al treilea proces ar putea detine o alta imprimanta id gi un alt trasator identic gi ar rula fri probleme. Prin distrugerea celui de-al treilea proces ieibera aceste resurse si am elimina interblocarea in care se aflau primele doua. Cind este posibil, este mai bine si fie distruse procese care pot fi executate din nou de la inceput efecte nedorite. De exemplu, 0 compilare poate fi totdeauna executata din nou, deoarece tot oe face este si citeasc un fisicr sursa si s& produc’ un fisier obiect. Daca procesul este distrus in ruliti, prima rulare mu are nici o influent’ asupra celei de-a doua. Fede alla parte, un proces care realizeaza actualizarea unei baze de date nu poate fi totdeauna jin siguranté a doua oari. Daca procesul aduni 1 la unele inregistrari din baza de date, {indu-1 in timpul primei rulari si apoi executandu-| din nou va adauga 2 la unele inregistrari, jce este incorect. EVITAREA INTERBLOCARIL Indiscutia despre detectarea interblocarii am presupus in mod tacit ci atunci cand un proces resurse, le cere pe toate deodata (matricea R din Fig. 3-6). Totusi, in majoritatea sistemelor, We sunt cerute una cate una, Sistemul trebuie sidecid daci acordarea unei resurse este sau nu gi si facd alocarea doar atunci cénd este sigurd. Astfel se ridica intrebarea: Exist un care si poati evita interblocarea ficdnd tot timpul alegerea potriviti?) Raspunsul ent este da ~ putem evita interblocdrile, dar numai dac& anumite informatu sunt disponibile 16s INTERBLOCARI (DEADLOCKS) ca in avans. in aceasta sectiune vom examina moduri de evitare a interblocirii printr-o alocare atenti resurselor. 3.5.1 Traiectoriile resurselor Principali algoritmi pentru evitarea interblocarii se bazeaz pe conceptul de stiri sigure. i de a descrie algoritmii, vom face 0 mic digresiune pentru a studia conceptul de siguranti in maniera graficd si usor de infeles, Desi abordarea graficti nu se traduce direct fntrun algo utilizabil, ea furnizeazi o abordare intuitiva buna asupra naturi problemi in Fig, 3-8 observim un model de abordare pentru dova procese $i doua resurse, de exempl imprimanta si un trasator. Axa orizontala reprezinta numérul de instructiuni executate de pri A. Axa verticalé reprezinté numarul de instructiuni executate de procesul B. Lah A imprimanta; la J; are nevoie de un trasator. Imprimanta si trasatorul sunt eliberate la Js respe Procesul B are nevoie de trasator de la J ay si de imprimanta de la sla , + u(Ambole procese s-au terminat) Immprimants |, | t a | t Trasator™ ete A por megiisinch asada, onchikinesiote Imprimants > + Trasator Fig. 38, Traiectorille resurselor a dous procese. Fiecare punct al diagramei reprezinti starea combinatd a celor doud provese la un momen! Iniial, starea este p, end nici un proces nu a executat nici o instructiune. Daca planificatorul d sil ruleze mai inti pe A, se ajunge in starea q, in care A a executat céteva instructiuni, dar B executat nici una. Din punctul q traiectoria devine verticald, acest lucru indicdnd fa planificatorul a decis si- ruleze pe B. Pe un singur procesor, toate ciile trebuie si fie orizon verticale, niciodata diagonale. Mai mult, miscarea este realizata intotdeauna cdtre nord niciodatd catre sud sau vest (procesele nu pot rula inapoi). Cand A intersecteaza linia J; in traiectoria sa de la r cites, el cere sii este acordatat impri (Clind B atinge punctul, el cere trasatorul. ‘Regiunile hasurate sunt interesante in mod special. Regiunea cu linii inclinate de la c&tre nord-est reprezinté. ambele procese avand imprimanta. Regula excluderii, mutuale imposibild intrarea in aceasta regiune. Similar, regiunea hagurata in celalalt mod reprezinta procese aviind trasatorul, ceea ce este, de asemenea, imposibil. 8035 EVITAREA INTERBLOCARIL 165 acd sistemul va intra vreodati in cisuta marginiti stinga-dreapta de 1 sip respect sus-jos de '81J vom avea tn cele din urma interblocare in momentul in care va ajunge la intersectia lui Jy cu ln acest moment, A cere trasatorul si B cere imprimanta, iar ambele sunt alocate deja. Intreaga ‘suté este nesigura si deci nu trebuie intrat in ea. Din punctulg, singurul lucru sigur care poate fi finteste rularea procesului A pani cand ajunge la... Dincolo de acesta, orice traiectorie citre u va bund. Este important de observat aici faptul ci in punctul rB cere o resursa. Sistemul trebuie sa decid (ei vo va aorda sau nu, Daca fi este acordat, sistemul va intra intr-o regiune nesigura si se va {ise in final la interblocare. Pentru evitarea interblocari, B ar trebui si fie suspendat pana end A (ent sicliberat trasatorul. Stari sigure si nesigure "Aloriunii de evitare a interblocaril pe care Ml vom smudia folosesc Informariile din Fig. 3-6. in ‘moment de timp existi o stare curentd constind din , A, C si R. O stare este numita sigur |, daa sistemul nu se afla in interblocare in ace! moment si existé o ordine de planificare in care proces poate rula pang la terminare, chiar daca toate procesele ar cere deodaté numarul lor de resurse. Acest concept este usor de ilustrat printr-un exemplu care foloseste o singura ‘in Fig. 3-9(a) existd o stare in care A are trei instante ale resursei dar poate avea nevoie in rdin urma de 9. B detine in prezent 2 instante si ar putea avea nevoie mai tarziu de 4. in mod ,C are 2 si ar mai putea avea nevoie de inca 5. Existi in total 10 resurse, din care 7 sunt deja deci mai sunt 3 libere. Detine Max: Desine Max. DetineMax DetineMax Detine Max. 278] (ys [o}sfaiia bo) efayajmw fadape 2[«|“[eleale elolo efolo| [efolo zt] Celetr} fee) eet] febete ee, UR o o o ‘o ‘o Fig. 38, Demonstratia faptului cd starea din (a) este sigura. din Fig. 3-9(a) este sigur deoarece exista 0 secventa de alocani care permite tuturor lor sisi termine corect executia. Cu alte cuvinte, planificatorul ar putea rula procesul B pana sta va cere ined 2 resurse, care ii vor fi acordate, ajungandu-se in starea din Fig. 3-9(b). ‘se termini, se ajunge in starea din Fig. 3-%(c). Apoi planificatorul il va putea rula pe C, se la Fig. 3-9(d). Cand C se termina, vom avea Fig. 3-0(¢). In acest moment A isi poate cele 6 instante ale resursei de care are nevoie si se poate dle asemenea termina. Astfel, starea 39(a) este sigur’, deoarece sistemmul poate evita interblocarea printr-o planificare atent. prsupunem acum ci avem starea initial din Fig. 3-10(a), dar de aceasta data A cere si ‘inca o resursd, rezultdind situatia din Fig. 3-10(b). Poate fi gisita 0 seeventa care si functionarea corecti? Si incercdm acest lucru. Planificatorul ar putea rula pe B pani sia cerut toate resursele, dupa cum se poate observa in Fig. 3-10(c) 166 INTERBLOCARI (DEADLOCKS) CAP.3 Definelax DatineMax. DetineMiax DefineMax afte Al4[s ala[s alas * alfa el2f« Blais e[ole 2[7 el2|7 cana eps Libere: 8 Libere: 2 Libere: 0 Libere: fa) ) ) (a Fig. 3-10. Demonstratia faptului c& starea din (b) nu este sigura. in cele din urma B se termina si vom avea situatia din Fig. 3-10(d). in acest punct ne-am impotmolit. Exist doar patra instante libere ale resursei, iar fiecare dintre procesele active are nevoie de cinci, Nu exist nici o secventi care sii garanteze terminarea cu succes. Astfel, decizia de alocare care a schimbat starea sistemului de la cea din Fig. 3-10(a) la cea din Fig. 3-10(b) a ads sistemul dintr-o stare sigura intr-una nesigurd, Dac mai departe se ruleaziA sau C pornind de la starca din Fig. 3-10(b) nu vom avea 0 functionare corecta. Privind retrospect, cererea lui A nu arfi trebuit sa fie aprobata. Un fapt care metita subliniat este acela cd o stare nesigurd nu este o stare in care sistemul se afi in interblocare. Pornind de la starea din Fig. 3-10(b), sistemul poate rula pentru un timp. De fap uunul din procese chiar se poate termina. Mai mult, este posibil ca.A si elibereze o resursa inainte de ‘a mai cere altele, permitandu-i astfel lui C si se termine si evitindu-se de tot interblocarea. Astfeh diferenta dintre o stare sigura si una nesigurd este aceea cA dintr-o stare sigura sistemul poate BO REEER é ae garanta faptul c& toate procesele se vor termina; dintr-o stare nesigurd nu se poate da o astfel de] Cn garantic. img 353 Algoriumul bancherului pentru v singurd resurs’i ES Un algoritm de planificare care poate evita interblocarile fi apar{ine ui Dijkstra (1965) find cunoscut ca algoritmul bancherului (banker’s algorithm) si cste o extensic a algoritmului dé] Ua detectare a interblocarii prezentat in sectiunea 3.4.1. Algoritmul este modelat dupa felul in care wi bancher dintr-un oras mic gestioneaza un grup de clienti carora le-a deschis lini de credit! alo Algoritmul verificd dac& acceptarea unei cereri va duce la o stare nesigurd. Dac da, cererea ese) HEY! respinsi. Daci acceptarea cererii duce la o stare sigur, ea este indepliniti. in Fig. 3-11(a) pot il 3-6. observati patru clienti A, B, C si D fiecare avnd alocat un anumit numér de unititi de credit (| TES exemplu, 1 unitate reprezint& 1000 dolari). Bancherul este constient de faptul c& nu tofi clientii vo)! ‘avea nevoie imediat de creditul lor maxim, asa ci el a rezervat doar 10 unitii in loc de 22 pentn| Test ‘imprumuturi. (in aceasti analogie, clientii sunt procesele, unititile sunt, de exemplu unitatile de) a5 banda magnetic iar bancherul este sistemul de operare.) mag Fiecare client se ocupi de afacerea lui, cerfind din cAnd in cnd imprumuturi (si anume, cereri de) Iuer resurse). La un anumit moment situafia este cea din Fig. -11(b). Aceasta stare este sigur deoarec| SU cx doui unititi rimase, bancherul poate aména orice cerere cu excepfia celeialui C, astfel C putini) pre termina gi elibera toate cele patru resurse ale lui, Intrind in posesia a patru unitéfi, bancherul v putea da unititile necesare fie lui D, fie lui B si asa mai depart. 35 EVITAREA INTERBLOCARI 167 DefineMox Detinetiax alole alate alte sfols plats a[2[s clo[s cla[a elala pfol? ofalz of«la Libere: 10 Livere: 2 Libere: 1 a © te Fig, 3-11. Trei stiri de alocare a resurselor: (a) Sigurd. (b) Sigur’. (c) Nesigura. Pentru situatia din Fig. 3-11(b), s& considerm ce s-ar intmpla daca ar mai fi satisfacut inci 0 rere ali B de o unitate, Ar rezulta situafia din Fig, 3-11(c), care este nesigura. Dac’ toti clientii ar fi deodatd imprumuturile maxime, bancherul nu ar putea satisface pe nici unul din ei si am avea are. O stare nesigura nu irebuie si duct neapiirat la interblocare, deoarece este posibil ea un nisi nu aibii nevoie de intreaga linie de credit disponibila, dar bancherul nu ar trebui s& mizeze fn considerare fiecare cerere pe miisura aparitiei ei si se uit dact iva duce la o stare sigurd Daci se va intdimpla acest lucru, cererea va fi acceptati;altfel aceste imprumuturi vor fi returnate si in va fi verificat clientul cel mai apropiat de limita si asa mai departe. Dac& toate urd $i cererea initial va fi acceptatd. Algoritmul bancherului pentru resurse multiple ‘inprezent fiecdruia din cele cinci procese. Matricea din dreapta arata de cate resurse mai are ifiecare proces pentru a se putea termina. Aceste matrice sunt de fapt matricele C si R din Fig, Jel ca in cazul unei singure resurse, procescle trebuie si-si stabileasca nevoile totale de rinainte de a se exccuta, astfel incat sistemul sa-si poat calcula oricand matricea din dreapta. vyectori din dreapta figurii contin resurscle existente, , resursele detinute, P si respectiv ee dispomibule, A. Din £ obseryam ca sistemul are sase unititi de banda magneticd, trei it unititi CD-ROM. Dintre acestea, cinci unitifi de banda cd, rei trasatoare, doua imprimante si dowd unitati CD-ROM sunt alocate in prezent, Acest pate fi observat prin adunarea celor patru coloane ale matricei din stanga. Vectorul de bile este chiar diferenta dintre ceca ce confine sistemul si ceea ce este folosit in m poate fi specificat algoritmul pentru verificarea faptului ca o stare este sigur. 168 INTERBLOCARI (DEADLOCKS) CaP. % % 1 ififo ofofo Resurse slocate _Resurse de care mai este nevoie mlolole|> Fig. 3-12. Algoritmul bancherulul cu resurse multiple. 1, Cautii un rand, R, ale cérui nevoi de resurse sunt mai mici sau egale cu_A. Dac& nu exist nici un astfel de rand, sistemul se va bloca in cele din urma deoarece nici un proces nu i putea rula pang la terminare, Presupunem ci procesul de pe randul ales cere toate resursele de care are nevoie (&| Baranteaz ci acest Iucru este posibil) si se termini, Marcheaz acest proces ca fin terminat si adaugi toate resursele lui in vectorul A. 3. Repetii pasii 1 si 2 pind cénd fie toate procesele sunt marcate ca fiind terminate, in aces caz starea initial fiind sigura, fic pana cand apare o interblocare, caz in care starea initial nu este sigur. Dacii exist mai multe procese care s& poati fi alese la pasul 1, nu conteazi care dintre ele va‘ selectat: fie se va mari numdrul resurselor disponibile, fie, in cel mai rau caz, va Fimdne acelasi. ‘Sa ne intoarcem acum la exemplul din Fig. 3-12. Starea curenti este sigur. S& presupunem: procesul B cere acum imprimanta. Aceasti cerere poate fi indeplinita deoarece starea care rezu este de asemenea siguri (procesul D se poate termina si apoi procesulA sau Z, urmate de restul). Si ne imagindm ci, dupa ce i s-a dat lui B una din cele dou imprimante rimase, E cere imprimanta. Acceptarea acestei cereri ar reduce vectorul de resurse disponibile la (1.0.0 0), ceea ar duce la interblocare. in mod cert, cererea lui £ trebuie si fie aménat& pentru un timp. Algoritmul bancherului a fost publicat pentru prima data de Dijkstra in 1965. De atunci, aproap] fiecare carte de sisteme de operare a descris in detaliu acest algoritm. Au fost scrise nenumirat lucrii despre diferite aspecte ale lui. Din nefericire, putini autori au cutezat si sublinieze faptul acest algoritm este minunat in teorie, dar este nefolositor in practic deoarece rareori procesele si {in avans care vor finevoile lor maxime de resurse. Pe Kinga aceasta, numarul de procese nu este i variaza in mod dinamic pe masurd ce noi utilizatori se conecteaz sau se deconecteaz’. Mai esurscle despre care se crede ci sunt disponibile pot disparea dintr-o dat (unitatile de ban ‘magnetici se pot defecta). Astfel, in practied, pufine sisteme, in cazul in care exist vreunul, fo algoritmul bancherului pentru evitarea interblocarilor. B36 PREVENIREA INTERBLOCARIT 169 PREVENIREA INTERBLOCARII Deoarece am vizut ci evitarea interblocarii este aproape imposibill, pentm ei neces iamatii despre. cereri viitoare, care nu sunt cunoscute, ne punem intrebarea cum eviti totusi ttlcarea sistemele reale? Pentru a gisi rispunsul si ne intoarcem la cele patru conditii enunjate sCofiman si alti (1971) sa vedem dac’ ele ne pot da vreun indiciu, Dae& ne putem asigura ca cel Hin una dintre aceste conditii nu va fi niciodata satisficuta, atunci este imposibil si apara elec (Havender, 1968). Combaterea condifiei de excludere mutual nbd exclusiv unui singur proces, a wii avea niciodata interblocari, Totusl, este de asemenea clar ulci, daca am permite ca dowd procese si scrie in acelasi timp la imprimanta, s-ar crea haos. introducere in coada de asteptare (spooling), mai multe procese pot genera simultan date de mt In acest model singurul proces care cere de fapt imprimanta fizici este procesul care oneaza tiparirea (printer daemon). Deoarece acest proces nu cere niciodata alte resursc, putem. ua interblocarea pentru imprimanti, ia picate, nu toate dispozitivele pot face spooling (de exemplu tabela de procese nu permite cru), Mai mult, competitia pentru spatiul de pe disc alocat pentru spooling poate duce chiar interblocare. Ce s-ar intampla daci doua procese ar umple fiecare jumatate din spafiul alocat spooling si nici unul din ele nu a terminat de produs datele de iesire? Daca procesul care nea imprimarca a fost programat si inceap’ tipfrirea inainte de a se umple tot spatiul alocat spooling, imprimanta ar putea sta neutiizati in cazul in care un proces ar decide si astepte ore dup furnizarea primelor date de iesire. Din acest motiv, procesele care gestioneazi a sunt programate sa tiparcasca doar dupa ce sunt disponibile toate datele de iesire. in cz ave doua procese care au funtizat fiecare o parte din datele de iesire, dar nu toate si de ‘wu se poate continua. Nici unul din procese nu se va termina vreodata, asadar avem 0 tlocare pe disc. exist aici o idee care este frecvent aplicata. Evitafi alocarea unei resurse cfnd aceasta mi necesara gi incercali sa va asigurati cA vor exista cat mai putine procese care ar putea am putea ita procesele care defin resurse si mai astepte preluarea altor resurse, am putea elimina msirile. Un mod de a atinge acest scop este sa le cerem tuturor proceselor sa ceara toate ‘naimte de inceperea executiei. Daci totul este disponibil, procesului fi va fi alocat tot ceca siva putea rula pind ce se va termina, Daca una sau mai multe resurse sunt ocupate, nu bca nimic si procesul doar va astepta. problemi imediati a acestei abordari o constituie faptul c& multe procese nu stiu de cate Nor avea nevoie fnainte de a incepe si ruleze, De fapt, dacd ar fi stiut, s-ar fi putut folosi imil bancherului. Alta problema ar constitui-o faptul cd, in aceasti abordare, resursele nu vor 170 INTERBLOCARI (DEADLOCKS) CAP.3 fi folosite in mod optim. S& consideram, de exemplu, un proces care citeste date de pe o bandi magnetic, le analizeaza timp de o ori si apoi scrie rezultatele atat pe band magnetic cat trasator. Dac toate resursele trebuie cerute in avans, procesul va bloca unitatea de banda magnetic si trasatorul timp de o ord. ‘Totusi, unele sisteme mari de prelucrare pe loturi (mainframe batch systems), fi cer utilizatorului si listeze toate resursele pe prima linie a fiecirei lucrari (job). Sistemnul objine apoi imediat toate resursele si le pastreaza p: cand se termini lucrarea. Desi aceast metodi adaugi 0 povard pe iroseste resurse, ea previne interblocatrile, Un alt mod de combatere a conditiei de detinere si asteptare este ca fiecirui proces care dorestt © resursii si i se ceard sd elibereze temporar toate resursele pe care le detine in prezent. Apoi va {ncerca si ia dintr-o data tot ce are nevoie. 3.6.3 Combaterea conditiei de lipsi a preemptiei Combaterea celei de-a treia conditii(lipsa preemptiei) este si mai putin promititoare deci combaterea celei de-a doua. Daci unui proces i-t fost alocatit imprimanta si se afl in mijlocd tipairirii datelor de iosite, faptul ca i s-ar lua fortat imprimanta deoarece un trasator cerut nu est isponibil, ar fi derutant in cel mai bun caz si imposibil in cazul cel mai rau. 3.64 Combaterea condifiei de asteptare circular O singura conditic a mai rimas. Asteptarea circular poate fi eliminata fn cdteva feluri, Un mod ar fi si impunem regula c& orice proces are dreptul la o singura resursi la un moment dat. Dact are nevoie de 0 adoun, trehnie si elthereze pe prima. Pentru ua proces cate axe nevoie sé scot li imprimanti un fisir urias de pe o banda magnetic’, aceasta restrictic este inacceptabild. Alt mod de evitare a condifiei de asteptare circulard este realizarea unei numerotiri globale 2 resurselor, dupa cum se poate observa in Fig. 3-13(a). Acum regula este urmitoarea: procesele pa cere resurse oricdind vor, dar toate cererile trebuie facute in ordinea numerelor. Un proces poat cere mai inti o imprimanté si apoi o band magnetica, dar nu va putea cere mai intai un trasator apoio imprimanta. 1 Matnd toga ® 2. Scanner t 3 Trasalor 4, Unitate de band’ magnetics [; 5. Unitate CD-ROM i (@ Fig, 3-13. (a)Resurse ordonate numeri. (b) Un graf de resurse. Cu aceasta reguli, graful de alocare a resurselor nu poate avea niciodat cicluri. Sa vedem de este adevarat acest Iucru pentru cazul a doui procese, in Fig. 3-13(b). Putem.avea interblocar numai dacé A cere resursa siB cere resursa/. Presupunand ed sij sunt resurse diferite, ele vor ave snumiere diferite, Daca > J, atunei lui A nu it este permis si ceara resursa j deoarece mumdirul est ‘mai mic decat cel pe care il are deja, Daca I

You might also like