mrtve petlje

42
INTERNACIONALNI UNIVERZITET U NOVOM PAZARU FAKULTET INFORMATIKE I INFORMACIONIH TEHNOLOGIJA SMER ZA INFORMATIKU SEMINARSKI RAD MRTVE PETLJE - 6 -

Upload: ajla-mujovic

Post on 05-Jul-2015

364 views

Category:

Documents


14 download

TRANSCRIPT

Page 1: Mrtve Petlje

INTERNACIONALNI UNIVERZITET U NOVOM PAZARUFAKULTET INFORMATIKE I INFORMACIONIH TEHNOLOGIJA

SMER ZA INFORMATIKU

SEMINARSKI RAD

MRTVE PETLJE

Novi Pazar,2010

Sadržaj:

1

Page 2: Mrtve Petlje

UVOD.........................................................................................................................................- 3 -

MRTVE PETLJE........................................................................................................................- 4 -

Uvod u mrtve petlje.................................................................................................................- 5 -

Uslovi za mrtvu petlju.........................................................................................................- 5 -

Modelovanje mrtve petlje...................................................................................................- 6 -

RESURSI....................................................................................................................................- 9 -

Resursi koji se mogu oduzeti procesu (preemptable) i koji se ne mogu oduzeti procesu (nepreemptable)......................................................................................................................- 9 -

Akvizicija resursa..................................................................................................................- 10 -

NOJEV ALGORITAM.........................................................................................................- 10 -

Detekcija mrtve petlje i oporavak.........................................................................................- 11 -

Detekcija mrtve petlje sa jednim resursom svakog tipa....................................................- 11 -

Detekcija mrtve petlje sa više resursa svakog tipa............................................................- 13 -

Oporavak od mrtve petlje..................................................................................................- 16 -

Oporavak preko oduzmanja resursa (preemption)............................................................- 17 -

Oporavak putem vraćanja stanja procesa unazad (Rollback)...........................................- 17 -

Oporavak preko ubijanja procesa (killing processes).......................................................- 18 -

IZBEGAVANJE MRTVE PETLJE......................................................................................- 18 -

Sigurna i nesigurna stanja.................................................................................................- 18 -

Bankarov algoritam za jedan resurs..................................................................................- 20 -

SPREČAVANJE MRTVE PETLJE.....................................................................................- 21 -

Napad na uslov uzajamnog isključivanja..........................................................................- 22 -

Napad na uslov zadrži i čekaj...........................................................................................- 22 -

Napad na uslov nemogućnosti oduzimanja resursa bez posledica....................................- 23 -

DRUGA PITANJA O MRTVIM PETLJAMA........................................................................- 23 -

Dvo-fazno zaključavanje.......................................................................................................- 23 -

Mrtve petlje bez resursa........................................................................................................- 24 -

Izgladnjivanje........................................................................................................................- 25 -

ISTRAŽIVANJA MRTVIH PETLJI........................................................................................- 25 -

ZAKLJUČAK...........................................................................................................................- 27 -

Literatura...................................................................................................................................- 28 -

2

Page 3: Mrtve Petlje

UVOD

U višeprocesnom okruženju, više procesa se mogu međusobno takmičiti za konačan broj resursa.

Kada proces zahteva resurs, a resurs nije raspoloživ, proces može zauvek ostati u stanje čekanja

na resurs blokira se. Blokirani proces može zauvek ostati u tom stanju ukoliko potrebni resurs

ostane neraspoloživ. Ova situacija je moguća ukoliko je resurs prethodno dodeljen na korišćenje

drugom procesu koji tokom vremena takođe prelazi u stanje čekanja na drugi neraspoloživ

resurs. Takva situacija naziva se zastoj, tj.blokada(mrtva petlja). pojava je sasvim moguća,

naročito pri radu sa savremenim višenitnim procesima, i treba je izbeći. Sistem koji je doveden u

stanje stoja mora se oporaviti.

U ovom poglavlju razmatrati ćemo mrtve petlje bliže, videti kako nastaju i sagledati neke načine

njihovog prevazilaženja ili njihovog izbegavanja. Iako se ovaj materijal bavi mrtvim petljama u

okviru operativnih sistema, one takođe nastaju u sistemima baza podataka i mnogim drugim

područjima računarskih nauka, pa je ovaj materijal u stvari primenjiv za mnoge višeprocesne

sisteme.

3

Page 4: Mrtve Petlje

MRTVE PETLJE

Računarski sistemi imaju dosta resursa koji istovremeno ne mogu biti korišteni od strane više

procesa. Prost primer su štampači, magnetne trake i zapisi u unutrašnjim sistemskim tabelama.

Ako dva procesa istovremeno pristupaju štampaču dolazi do zabune, takođe ako dva procesa

koriste isti zapis sistemske tabele dolazi do greške sistema fajliranja. Usled toga svaki

operatvivni sistem ima mogućnost trenutnog dodeljivanja ekskluzivnog prava procesu za pristup

određenim resursima.

Kod mnogih aplikacija proces mora imati ekskluzivni pristup ne samo jednom već nekoliko

resursa. Pretpostavimo, na primer, dva procesa koji imaju isti zadatak: da snime skeniran

dokument na CD. Proces A traži dozvolu za upotrebu skenera i dobija je. Proces B, koji je

programiran na drugi način, traži prvo dozvolu za upotrebu CD snimača i takođe je dobija. Sada

A traži dozvolu za upotrebu CD pisača, ali zahtev se odbija sve dok B ne oslobodi CD pisač.

Međutim, B umesto da oslobodi CD pisač, traži dozvolu za upotrebu skenera. U ovom trenutku

procesi su blokirani i tako će ostati u nedogled. Ova situacija naziva se mrtva petlja (deadlock).

Mrtve petlje se takođe dešavaju i između više mašina. Mnoge kancelarije imaju lokalnu mrežu

(LAN) instaliranu na većem broju računara. Često su uređaji (kao što su skeneri, CD pisači,

štampači i magnetni čitači) povezani u mrežu kao deljeni resursi (shared) koji su dostupni

svakom korisniku na svakom računaru u mreži. Ako se ovi uređaji mogu rezervisati “na daljinu"

(tj. sa korisnikovog računara) može se pojaviti ista vrsta mrtvih petlji kao one koje su prethodno

opisane. Komplikovanija situacija može izazvati mrtve petlje koje uključuju tri, četiri ili više

uređaja i korisnika.

Mrtve petlje se mogu pojaviti u raznim situacijama, a ne samo u onim koje uključuju zahtjeve za

upotrebu određenih ulazno/izlaznih (I/O) uređaja. U sistemu baze podataka, na primjer, program

nekad mora da zaključa nekoliko slogova podataka koje koristi, da bi izbjegao takmičenje nad

dozvolom za rad sa tim slogovima. Ako proces A zaključa slog R1, a proces B zaključa slog R2,

i zatim svaki proces pokušava da zaključa slog onog drugog, tada takođe imamo mrtvu petlju.

Znači mrtva petlja se može pojaviti kako na hardverskim resursima tako i na softverskim.

4

Page 5: Mrtve Petlje

Uvod u mrtve petlje

Mrtva petlja se formalno može ovako definisati:

Niz procesa je u mrtvoj petlji ako svaki proces u nizu čeka na događaj koji samo drugi proces u

nizu može izazvati.

Zbog toga što svi procesi čekaju, nijedan od njih neće nikad izazvati događaj koji može probuditi

drugog člana niza, pa svi procesi nastavljaju čekanje u beskonačnost. Za ovaj model,

pretpostavljamo da procesi imaju samo jednu nit (thread) i da nisu mogući interapti za buđenje

blokiranog procesa. Uslov da nema interapta je neophodan da bi se spriječilo buđenje procesa

koji je inače u mrtvoj petlji, pomoću npr. alarma, i na taj način oslobađanja ostalih procesa u

nizu.

U većini slučajeva, događaj koji svaki proces čeka je oslobađanje nekih resursa koje trenutno

koristi drugi član niza. Drugim riječima, svaki član niza procesa u mrtvoj petlji čeka na resurs

koji posjeduje proces u mrtvoj petlji. Nijedan od procesa ne može da radi, nijedan od njih ne

može da oslobodi resurse koje drži i ni jedan od njih ne može da se probudi. Broj procesa i broj i

vrsta resursa koji su u posjedu i koji su zatraženi nisu važni. Ovakav rezultat se dobija za svaku

vrstu resursa, dakle i za hardverske i za softverske.

Uslovi za mrtvu petlju

1. Uslov uzajamnog izuzeća. Svaki resurs je ili trenutno dodjeljen tačno jednom procesu ili

je slobodan.

2. Uslov drži i čekaj. Procesi koji trenutno drže resurse koji su ranije dozvoljeni mogu

tražiti nove resurse.

3. Uslov nemogućnosti oduzimanja resursa bez posljedica Resursi koji su prethodno

odobreni ne mogu se silom oduzeti od procesa koji ih trenutno posjeduju. Moraju se osloboditi

eksplicitno od strane procesa koji ih drži (nonpreemption).

4. Uslov cirkularnog čekanja. Mora postojati cirkularni lanac od dva ili više procesa, gdje

svaki čeka na resurs kojeg drži idući član lanca.

Sva četiri uslova moraju da postoje da bi nastala mrtva petlja. Ako samo jedan od njih

nedostaje, mrtva petlja nije moguća.

5

Page 6: Mrtve Petlje

Ništa ne vrijedi to što se svaki uslov odnosi na ono što sistem može da ima ili nema. Može li se

određeni resurs dodijeliti istovremeno na više od jednog procesa? Može li proces držati resurs i

tražiti drugi? Mogu li resursi biti oduzeti bez posljedica? Da li mogu postojati cirkularna

čekanja? Kasnije ćemo vidjeti kako mrtve petlje mogu da se razriješe pokušavanjem negiranja

nekih od datih uslova.

Modelovanje mrtve petlje

Holt (1972) pokazao je kako se mogu modelovati ova četiri uslova korištenjem direktnih

grafova. Grafovi imaju dvije vrste čvorova: procese prikazane kao kružiće, i resurse prikazane

kao kvadratiće. Linija od čvora resursa do čvora procesa znači da je resurs prethodno bio tražen,

dozvoljen i trenutno u posedu tog procesa. Na slici 1. (a), resurs R je trenutno dodeljen procesu

A.

Linija od procesa do resursa znači da je proces trenutno blokiran čekanjem na resurs. Na slici 1.

(b) proces B čeka na resurs S. Na slici 1.(c) vidimo mrtvu petlju: proces C čeka na resurs T, koji

je trenutno u posedu procesa D. Proces D neće skoro da oslobodi resurs T jer čeka na resurs U,

kojeg drži proces C. Oba procesa će čekati beskonačno dugo. Krug na grafu znači da su procesi i

resursi u mrtvoj petlji (pretpostavljamo da postoji resurs svake vrste). U ovom primeru krug je C-

T-D-U-C.

Pogledajmo sada primer kako se mogu upotrebiti grafovi resursa. Zamislimo da imamo

tri procesa A, B i C, i tri resursa R, S i T.

Slika 1. Grafovi alokacije resursa. (a)držanje resursa. (b) zahtevanje resursa. (c) mrtva petlja

6

Page 7: Mrtve Petlje

Posle koraka (q), procesu B se može dozvoliti S, jer je A završio, a C ima sve što mu je

potrebno. Čak iako bi se B mogao eventualno blokirati kada bude tražio T, ne može se desiti

mrtva petlja. B će jednostavno čekati dok C ne završi.

Pretpostavimo sada, da proces i proračunava i daje ulaz/izlaz, pa je kružni tok razuman

algoritam rasporeda. Zahtev za resursima može da se pojavi po redosledu datom na slici 2.(d).

Ako se tih šest zahteva sprovede po tom redosledu, šest rezultujućih grafova prikazani su na

slici 2.(e)-(j). Posle zahteva 4, A je blokiran čekajući na S, kako je prikazano na slici 2.(h). U iduća

dva koraka B i C se takođe blokiraju, što dovodi do mrtve petlje date na slici 2.(j).

Međutim, kao što smo već naveli, od operativnih sistema se ne zahteva da izvršavaju

procese po nekom određenom redosledu. Praktično, ako dozvola određenog zahteva može

dovesti do mrtve petlje, operativni sistem može jednostavno suspendovati proces bez

odobravanja zahteva (tj. samo rasporediti proces) dok ne bude sigurno da se neće desiti mrtva

petlja. Na slici 2. vidimo, da je operativni sistem mogao suspendovati proces B, da je znao da će

doći do mrtve petlje, umesto da mu dozvoli resurs S. Kada bi samo proces A i C radili, dobili bi

zahteve i oslobađanje resursa prikazane na slici 2.(k) umesto onih na slici 2.(d). Ova sekvenca

vodi ka grafovima resursa datim na slikama 2.(l)-(q), koji ne dovode do mrtve petlje.

Posle koraka (q), procesu B se može dozvoliti S, jer je A završio, a C ima sve što mu je

potrebno. Čak iako bi se B mogao eventualno blokirati kada bude tražio T, ne može se desiti

mrtva petlja. B će jednostavno čekati dok C ne završi.

7

Page 8: Mrtve Petlje

Slika 2. Primer kako dolazi do mrtve petlje i kako ona može da se izbegne

Uopšteno, koriste se četiri strategije prilikom rada sa mrtvim petljama.

1. Ignorisanje celokupnog problema. Ako ga ignorišemo možda će on (problem) ignorisati

nas.

2. Detekcija i ozdravljenje. Neka se dese mrtve petlje, detektujte ih i pokrenite akciju.

3. Dinamičko izbegavanje pažljivom alokacijom resursa.

8

Page 9: Mrtve Petlje

4. Prevencija (sprečavanje), pomoću strukturalnog negiranja jednog od četiri uslova koji su

potrebni za stvaranje mrtve petlje.

RESURSI

Mrtve petlje mogu nastati kada je procesu dozvoljen ekskluzivan pristup uređaju, fajlu, itd. Da bi

diskutovali o mrvim petljama što je uopštenije moguće, objekte kojima je dozvoljen pristup

zvaćemo resursi. Resurs može biti hardverski uređaj (CD snimač) ili dio informacije (zaključan

slog u bazi podataka). Računar ima mnogo različitih resursa koje može koristiti. Za neke resurse

može biti dostupno nekoliko jednakih primeraka, kao što su tri CD snimača. Kada su nekoliko

kopija resursa slobodne, bilo koja od njih može biti upotrebljena da zadovolji zahtev za tim

resursom. Ukratko, resurs je sve što se može koristiti od strane jednog procesa u svakom deliću

vremena.

Resursi koji se mogu oduzeti procesu (preemptable) i koji se ne mogu oduzeti procesu (nepreemptable)

Postoje dva tipa resursa: preemptable i nepreemptable. Preemptable resurs je onaj koji može da

se oduzme procesu koji ga koristi bez nekih loših posledica. Memorija je primer jednog takvog

resursa. Razmatrajmo, na primer, sistem sa 32MB memorije, jednim štampačem i dva 32-MB

procesa koji oba treba da štampaju nešto. Proces A traži i dobija štampač, te počinje da

proračunava vrednosti za štampanje. Pre nego što završi proračunavanje, vreme koje mu je

dodeljeno biva prekoračeno i on biva zamenjen.

Sada startuje proces B i pokušava dobiti štampač ali neuspešno. Imamo moguću situaciju mrtve

petlje jer A ima štampač a B ima memoriju, a ni jedan ne može da nastavi bez resursa koji je u

posedu drugog procesa. Na sreću moguće je oduzeti memoriju od B izbacujući ga, a ubacujući

proces A na njegovo mesto. Sad A može da radi, da obavi štampanje, a zatim i da oslobodi

štampač. Dakle ne dolazi do pojave mrtve petlje.

Neptreemptable resurs, za razliku od prethodnog, ne može biti oduzet od procesa koji ga trenutno

koristi bez posledica. Ako je proces počeo da upisuje podatke na CD-ROM, iznenadno

9

Page 10: Mrtve Petlje

oduzimanje CD pisača od procesa i njegovo dodeljivanje drugom procesu rezultovaće u

oštećenom CD-u. CD pisači nisu resursi koji se mogu oduzeti procesu.

Uopšteno, mrtve petlje se sreću kod resursa koji se ne mogu oduzeti procesu bez posledica.

Potencijalne mrtve petlje koje se sreću kod resursa koji se mogu oduzeti procesu mogu se često

razrešiti putem realokacije resursa sa jednog procesa na drugi. Stoga ćemo se fokusirati na

resurse koji se ne mogu oduzeti procesu bez posledica.

Akvizicija resursa

Za neke vrste resursa, kao što su slogovi u sistemu baze podataka, do korisnika procesa je kako

će da rasporedi upotrebu samih resursa. Jedan od mogućih načina da se dozvoli korisniku

raspodela resursa je da se veže semafor za svaki resurs. Svi semafori su inicijalno postavljeni na

Promene se mogu koristiti jednako dobro. Tri koraka navedena iznad se implementiraju kao

dolje na semaforu za akviziciju resursa, korištenje resursa i na kraju gore za oslobađanje resursa.

Nekad procesi potražuju dva ili više resursa. Ako je potrebno više od dva resursa, oni se mogu

dobiti jedan za drugim. Do sada nema mnogo problema. Dok je samo jedan proces uključen u

razmatranje sve fino radi. Naravno, sa samo jednim procesom i nema potrebe za formalnim

potraživanjem resursa, jer ne postoji konkurencija nad njima.

Zbog mogućnosti tako lakog pojavljivanja mrtve petlje, mnogo istraživanja je upravo sprovedeno

da bi se lakše izlazilo na kraj sa njima. Ovo poglavlje diskutuje o mrtvim petljama do detalja i o

tome što se može učiniti u vezi sa njima.

NOJEV ALGORITAM

Najjednostavniji pristup je nojev algoritam: “Stavi glavu u pesak i pretvaraj se da nema

problema”. Različiti ljudi na ovu strategiju reaguju na različite načine. Matematičari nalaze da je

ona totalno neprihvatljiva i da se mrtve petlje moraju sprečiti po svaku cenu. Inženjeri pitaju

koliko često se problem može očekivati, koliko često sistem pada zbog drugih razloga, i koliko

su mrtve petlje, u stvari, ozbiljne. Ako se mrtve petlje dešavaju u proseku jednom u pet godina, a

sistem pada zbog grešaka hardvera, grešaka u kompajliranju i bagova operativnog sistema

jednom nedeljno, većina inžinjera neće biti voljna da radi na eliminisanju mrtvih petlji.

10

Page 11: Mrtve Petlje

Maksimalan broj otvorenih fajlova je ograničen veličinom i-čvora tabele, pa se dešava sličan

problem kada se tabela napuni. Prostor na disku je drugi ograničen resurs. U stvari, skoro svaka

tabela operativnog sistema predstavlja ograničen resurs. Treba li da poništimo sve ovo jer je

moguće da u kolekciji od n procesa svaki potražuje 1/n od ukupnog broja, i zatim da svaki proces

traži po još jedan.

Većina operativnih sistema, uključujući UNIX i Windows, samo ignorišu problem pod

pretpostavkom da će većina korisnika radije prihvatiti povremenu mrtvu petlju nego pravila koja

bi ograničavala sve korisnike na korištenje jednog procesa, jednog otvorenog fajla, itd. Ako se

mrtve petlje mogu eliminisati besplatno, ne bi bilo puno diskusije o tome. Problem je u tome što

je cena eliminisanja mrtvih petlji vrlo visoka, najviše u smislu postavljanja nepraktičnih

ograničenja na procese, što ćemo videti uskoro. Znači, susreli smo se sa neugodnom trgovinom

između praktičnosti i tačnosti i velikim brojem diskusija o tome što je od toga važnije, i kome.

Pod ovakvim uslovima teško je uopšteno naći rešenja za mrtvu petlju.

Detekcija mrtve petlje i oporavak

Druga tehnika je detekcija i oporavak. Kada se koristi ova tehnika sistem ne pokušava

sprečiti pojavu mrtvih petlji. Umesto toga sistem dopušta da se one dese, pokušavajući ih

detektovati, i onda preuzima neku akciju u cilju saniranja posledica koje su izazvale. U ovom

poglavlju videćemo neke načine detekcije mrtve petlje, i saniranja posledica njihovog dejstva.

Detekcija mrtve petlje sa jednim resursom svakog tipa

Počnimo sa najjednostavnijim slučajem: neka postoji po jedan resurs svakog tipa. Takav

sistem može imati jedan skener, jedan CD pisač, jedan štampač i jedan magnetni čitač. Drugim

rečima, isključujemo sisteme sa dva štampača za sada. Njih ćemo razmatrati kasnije, koristeći

drugu metodu. Za takav sistem možemo konstruisati graf resursa za sliku 3. Ako ovaj graf sadrži

jedan ili više krugova, znači da postoji mrtva petlja. Svaki proces koji je deo kruga nalazi se u

mrtvoj petlji. Ako ne postoji ni jedan krug znači da sistem nije u mrtvoj petlji.

11

Page 12: Mrtve Petlje

Kao primer kompleksnijeg sistema od onih koje smo do sada razmatrali, posmatrajmo

sistem sa sedam procesa. Neka su to procesi od A do G. Neka postoji i šest resursa od R do W.

Stanja resursa, odnosno, kome su trenutno dodeljeni i koji proces ih zahteva, data su kako sledi:

1. Proces A poseduje R i zahteva S.

2. Proces B ne poseduje ni jedan resurs ali zahteva T.

3. Proces C ne poseduje ni jedan resurs ali zahteva S.

4. Proces D poseduje U i zahteva S i T.

5. Proces E poseduje T i zahteva V.

6. Proces F poseduje W i zahteva S.

7. Proces G poseduje V i zahteva U.

Pitanje je sledeće: “Da li je ovaj sistem u mrtvoj petlji, i ako jeste koji su procesi uključeni u

nju?”. Da bi dali odgovor na ovo pitanje konstruišimo graf resursa kakav je dat na slici 3.(a). Kao

što vidimo, ovaj graf sadrži jedan krug. Krug je prikazan na slici 3.(b). Vidimo da su procesi D, E i

G u mrtvoj petlji. Procesi A, C i F nisu u mrtvoj petlji jer se S može dodeliti svakom tom procesu,

koji ga oslobađa kada završi svoj posao. Tada preostala dva procesa mogu da ga redom koriste i

oslobode.

Slika 3. (a) Graf resursa. (b) Krug izdvojen iz grafa.

Iako je relativno lako odrediti koji je proces u mrtvoj petlji (jednostavnim pogledom na

graf resursa), za prave sisteme koristi se formalni algoritam za detekciju mrtve petlje. Poznati su

12

Page 13: Mrtve Petlje

mnogi algoritmi koji se koriste u tu svrhu. Mi ćemo razmotriti jednostavan algoritam koji

pretražuje graf i određuje da li postoji u njemu krug ili ne. Ovaj algoritam koristi jednu strukturu

podataka, L - lista čvorova. U toku rada algoritma, markirati će se linije koje su već pregledane

da bi se sprečilo ponavljanje pretraživanja.

Algoritam pretražuje graf sledećim koracima:

1. Za svaki čvor, N na grafu izvode se sledećih 5 koraka sa N kao početnim čvorom.

2. Inicijalizira se L kao prazna lista, i označe se sve linije kao nemarkirane.

3. Doda se trenutni čvor na kraj L i provjeri se da li se čvor pojavljuje u L dva puta. Ako

se pojavljuje, graf ima krug i algoritam završava.

4. Od datog čvora, pogledamo postoje li nemarkirane izlazne linije. Ako postoje

odrađuje se korak 5, a ako ne postoje korak 6.

5. Odabere se jedna nemarkirana izlazna linija i označi. Zatim je pratimo do idućeg

čvora (trenutni čvor) i prelazi se na korak 3.

6. Došli smo do slepog puta. Odstranimo ga i vratimo se na prethodni čvor (onaj koji je

bio trenutni čvor pre ovoga). Sada on postaje opet trenutni čvor i vraćamo se na

korak 3. Ako je čvor početni, graf ne sadrži ni jedan krug i algoritam ovde završava.

Detekcija mrtve petlje sa više resursa svakog tipa

Kada postoje višestruke kopije nekih resursa, potreban je drugi pristup radi

detektovanja mrtvih petlji. Predstavićemo algoritam za pronalaženje mrtvih petlji baziran na

matricama od n procesa: P1 do Pn. Neka je m broj klasa resursa, sa E1 resursa klase 1, E2

resursa klase 2 i uopšteno Ei resursa klase i (1 i m). E je postojeći vektor resursa. On daje

ukupan broj postojećih primeraka svakog resursa. Na primer, ako su klasa 1 magnetni čitači,

tada E1=2 znači da sistem ima dva magnetna čitača. U nekom trenutku neki od resursa su

zauzeti ili dodeljeni. Neka je A vektor dostupnih resursa, gde je Ai broj primeraka resursa i koji

su trenutno dostupni (tj. nedodeljeni). Ako su oba od naša dva magnetna čitača dodeljena, A1

je 0.

13

Page 14: Mrtve Petlje

Potrebna su nam dva niza: C - matrica trenutne alokacije, i R- matrica zahteva. i – ti red

matrice C govori o tome koliko primeraka svakog resursa trenutno ima proces Pi. Tako je Cij

broj primeraka j – tog resursa koje ima i – ti proces. Slično Rij je broj primeraka j – tog resursa

koje proces Pi zahteva. Ove četiri strukture podataka prikazane su na slici 4.

Slika 4. Četiri strukture podataka potrebne za algoritam detekcije mrtve petlje.

Veoma važno je reći da resurs može biti ili alociran ili slobodan. Ovo se može napisati i

ovako:

∑i=1

n

Cij+ Aj=Ej

Drugim riječima, ako svim primercima j – tog resursa koji su alocirani dodamo sve primerke koji

su slobodni, dobijamo koliko primeraka te klase resursa u stvari postoji. Algoritam detekcije

mrtve petlje zasnovan je na upoređivanju vektora. Definišimo relaciju A B nad dva vektora A i

B kao: svaki elemenat A je manji ili jednak od odgovarajućeg elementa B. Matematički A B

stoji ako i samo ako je: Ai Bi, za 1 i m. Svaki proces je inicijalno postavljen kao

nemarkiran. Kako algoritam napreduje, procesi će biti markirani, što znači da su u stanju da

izvrše započeti posao i da nisu u mrtvoj petlji. Kada algoritam završi, za svaki nemarkiran proces

se zna da je u mrtvoj petlji. Algoritam detekcije mrtve petlje se sada može dati kako sledi:

1. Traženje nemarkiranog procesa Pi, za koje je i –ti red R-a manji ili jednak A

2. Ako je tako, dodaje se i -ti red od C na A, markira proces i vraća na korak1

14

Page 15: Mrtve Petlje

3. Ako takav proces ne postoji, algoritam završava.

Kad algoritam završi, svi nemarkirani procesi, ako ih ima, su u mrtvoj petlji. U koraku 1

algoritam traži proces koji može da se izvrši do kraja. Takav proces se karakteriše kao proces

koji ima zahteve za resursima koji su trenutno slobodni i koji se stoga mogu odobriti. Takav

proces tada odrađuje svoj posao, zatim oslobađa resurse koji tada ponovo postaju dostupni

(slobodni) resursi. On se markira kao izvršen proces. Ako se svi procesi mogu izvršiti, tada ni

jedan nije u mrtvoj petlji. Ako neki od njih ne mogu nikada da se izvrše – oni su u mrtvoj petlji.

Iako algoritam nije deterministički, rezultat je uvek isti.

Kao primer rada algoritma za detekciju mrtve petlje, razmotrimo sliku 5. Imamo tri

procesa i četiri klase resursa: magnetni čitači, ploteri, skeneri i CD-ROM – ovi. Proces 1 ima

jedan skener. Proces 2 ima dva magnetna čitača i CD-ROM. Proces 3 ima ploter i dva skenera.

Svaki proces zahteva dodatne resurse, kako je prikazano matricom R. Da bi pokrenuli algoritam

detekcije mrtve petlje, tražimo proces čiji zahtevi za resursima mogu biti zadovoljeni. Prvi ne

može biti zadovoljen jer nema ni jedan slobodan CD ROM. Drugi ne može biti zadovoljen jer

nema slobodnog skenera. Srećom treći može biti zadovoljen, pa se pokreće i kada završi vraća

sve resurse koje je držao dajući:

A=(2 2 2 0)

Sada proces 2 može da se pokrene, i nakon toga vraća svoje resurse dajući:

A=(4 2 2 1)

Sada i preostali proces može da se izvrši. Dakle, u sistemu nema mrtve petlje.

15

Page 16: Mrtve Petlje

Slika 5. Primer za algoritam detekcije mrtve petlje.

Sada zamislimo malu promenu situacije date na slici 5. Pretpostavimo da proces 2

zahteva CD-ROM kao i dva magnetna čitača i ploter. Nijedan od zahteva ne može biti

zadovoljen, pa je sistem u mrtvoj petlji. Sada kada znamo kako detektovati mrtve petlje,

postavlja se pitanje kada ih tražiti. Jedna mogućnost je da se proverava njihovo postojanje svaki

put kada se postavi zahtev za resursom. Tako je sigurno da će biti detektovane najranije moguće,

ali ovo troši mnogo procesorskog vremena. Alternativno, može se mrtva petlja tražiti svakih k

minuta ili samo onda kada upotreba procesora pala ispod nekog praga. Razlog razmatranja

upotrebe procesora je taj što ako je mnogo procesa u mrtvoj petlji, biti će nekoliko procesa koji

se mogu izvršiti, i procesor će često biti slobodan.

Oporavak od mrtve petlje

Pretpostavimo da je naš algoritam za detekciju mrtve petlje uspio i da je detektovao

mrtvu petlju. Šta sada? Potreban je neki način oporavka i ponovnog pokretanja sistema. U ovom

poglavlju diskutovati ćemo razne načine oporavka od mrtve petlje. Ni jedan od njih, međutim,

nije naročito atraktivan.

16

Page 17: Mrtve Petlje

Oporavak preko oduzmanja resursa (preemption)

U nekim slučajevima moguće je da se privremeno oduzme resurs od njegovog trenutnog

korisnika i dodeli drugom procesu. U mnogo slučajeva, potrebna je intervencija samog korisnika.

Na primer, da bi se laserski štampač oduzeo od trenutnog njegovog korisnika, operator

može da skupi sve već odštampane stranice na hrpu. Tada proces može biti suspendovan. Sada

štampač može biti dodeljen drugom procesu. Kada on završi, hrpa odštampanih stranica se može

opet vratiti na štampač i restartovati originalni proces.

Sposobnost oduzimanja resursa od procesa, davanje drugom procesu na korištenje tog

resursa, vraćanje resursa prvobitnom procesu a da on to ne primeti veoma zavisi od prirode tog

resursa. Oporavak u ovom slučaju često je teško ili čak nemoguće izvesi. Odabiranje procesa koji

će se suspendovati zavisi od prirode resursa, dakle koji će se resurs najlakše vratiti prvobitnom

procesu.

Oporavak putem vraćanja stanja procesa unazad (Rollback)

Kako dizajneri sistema i korisnici mašina znaju da su mrtve petlje moguće, moguće je

napraviti da se procesi periodično čekiraju. Čekiranje procesa je zapisivanje trenutnog stanja

procesa u fajl tako da bi se kasnije moglo to stanje restartovati. Čekiranje ne sadrži samo

memorijsku sliku već i stanje resursa, odnosno koji resursi su u tom trenutku bili dodeljeni

procesu. Da bi bila efektivnija, nova čekiranja ne bi trebala izbrisati stara nego se upisati u nove

fajlove. Tako bi se stvarali novi fajlovi stanja procesa sve dok god se on izvršava.

Kada se detektuje mrtva petlja, lako je videti koji su resursi zahtevani. Da bi se sproveo

oporavak, proces koji drži zahtevani resurs se vraća na stanje koje je imao pre zahtevanja tog

resursa tako što se restartuje neki od prošlih fajlova stanja procesa. Sav posao odrađen od tog

stanja na dalje propada (npr. ako su odštampane neke stranice a u međuvremenu se stanje vratilo

na prethodno, bacaju se jer će biti ponovo odštampane). Proces se resetuje na prethodno stanje

kada nije imao resurse koje sada drži proces koji je bio u mrtvoj petlji. Kada se restartuje, proces

ponovo zahteva resurs, ali sada on čeka da resurs postane slobodan.

17

Page 18: Mrtve Petlje

Oporavak preko ubijanja procesa (killing processes)

Najgrublji i najjednostavniji način prekidanja mrtve petlje je ubijanje jednog ili više

procesa. Jedna mogućnost je ubijanje procesa iz kruga. Uz malo sreće, drugi procesi će nastaviti

svoj posao. Ako ovo ne pomogne, jednostavno se nastavi sa ubijanjem procesa iz kruga, sve dok

se krug sasvim ne prekine.

Alternativno, proces koji nije u krugu se takođe može izabrati kao žrtva da bi oslobodili

resurse koje on drži. U ovom slučaju, proces koji treba da se ubije je pažljivo odabran jer drži

resurse koji su zahtevani od nekog procesa iz kruga. Na primer, jedan proces može da drži

štampač, a da zahteva ploter, dok drugi proces drži ploter i zahteva štampač. Ova dva procesa su

u mrtvoj petlji. Treći proces drži identičan štampač i identičan ploter i normalno radi. Ubijanjem

trećeg procesa oslobađaju se njegovi resursi i prekida se mrtva petlja prva dva procesa. Gde je

moguće, najbolje je ubiti proces koji se može restartovati od samog početka bez loših posledica.

Na primer, kompajliranje se uvek može restartovati jer kompajler u stvari samo čita izvorni fajl i

pravi objektni fajl. Sa druge strane, procesi koji popunjavaju baze podataka, ne mogu se uvek

dobro restartovati po drugi put. Ako proces doda 1 nekom slogu u bazi, puštajući je u rad, pa je

ubijajući, ponovo puštanje u rad dodati će 2 u slog, što nije tačno.

IZBEGAVANJE MRTVE PETLJE

U diskusiji o mrtvim petljama, prećutno smo pretpostavili da kada proces zahteva

resurse, da ih zahteva sve od jednom (matrica R sa slike 5.). Kod većine sistema, međutim,

resursi se zahtevaju jedan po jedan. Sistem treba da zna odlučiti kada je odobravanje

zahtevanih resursa sigurno a kada nije, i dozvoliti resurse samo u prvom slučaju. Postavlja se

pitanje: Postoji li algoritam koji može uvek izbeći mrtve petlje pravilnim odlučivanjem? Odgovor

je: da – mogu se izbeći mrtve petlje ali samo kada je određena informacija dostupna unapred

Sigurna i nesigurna stanja

U bilo kom trenutku vremena, trenutno stanje sastoji se od E, A, C i R. Za stanje kažemo

da je sigurno kada nije u mrtvoj petlji i postoji neki raspored po kojem se svaki proces odvija

18

Page 19: Mrtve Petlje

dok se ne završi, čak i ako svi procesi odjednom zahtevaju maksimalni broj resursa koji im može

biti dodeljen. Ovaj koncept najlakše je ilustrovati primjerom sa jednim resursom. Na slici 7.

imamo stanje procesa A koji ima 3 primerka resursa ali možda će zahtevati ukupno 9 primeraka.

B trenutno drži 2, a možda će zahtevati ukupno 4 primerka, kasnije. Slično, C drži 2, a možda će

zahtevati još 5 primeraka resursa. Ukupan broj primeraka resursa je 10, znači pošto je 7 već

alocirano, ostala su još 3 slobodna.

Slika 7. Demonstracija da je stanje (a) sigurno

Stanje na slici 7. (a) je sigurno jer sekvence alokacija omogućavaju izvršenje čitavog

procesa. Naime, raspored može jednostavno pokrenuti isključivo proces B, sve dok ne zatraži i

dobije dva nova primerka resursa. Ovo stanje prikazano je na slici 7.(b). Kada B završi, dolazimo

do stanja datog slikom 7.(c). Sada raspored može da pokrene C, što dovodi do slike 7.(d). Kada C

završi dobijamo 7.(e). Sada A može da dobije šest primeraka resursa koje traži i takođe može da

završi. Tako da je stanje 7.(a) sigurno jer pažljivim rasporedom procesa, sistem izbegava mrtvu

petlju.

Sada pretpostavimo da imamo početno stanje dato na slici 8.(a), ali ovog puta A zahteva

i dobija druge resurse, što je dato slikom 8.(b). Da li možemo pronaći sekvencu koja bi

garantovala uspešan rad? Da pokušamo. Raspored može da pokrene B dok ne zatraži sve svoje

resurse, što je dato na slici 8.(c).

19

Page 20: Mrtve Petlje

Slika 8. Demonstracija da stanje (b) nije sigurno

Nakon nekog vremena B završava i dobijamo stanje na slici 8.(d). Došli smo do

zaglavljivanja. Postoje samo 4 slobodna primerka resursa, a svaki od aktivnih procesa zahteva 5.

Ne postoji sekvenca koja garantuje završetak. Tako je odluka o alokaciji koja je promenila stanje

sistema od onog sa slike 8.(a) na stanje na slici 8.(b), u stvari promenila sigurno stanje sistema u

nesigurno. Ništa ne znači što nesigurno stanje nije mrtva petlja. Počevši od slike 8.(b), sistem

može da radi neko vreme. u stvari, proces se čak može i završiti. Nadalje, moguće je da A

oslobodi resurse prije nego što traži nove, tako omogućavajući da C završi i izbegavajući na taj

način mrtvu petlju. Tako je razlika između sigurnog i nesigurnog stanja u tome što sistem u

sigurnom stanju može garantovati da će se svi procesi završiti, dok proces u nesigurnom stanju

ne može dati nikakvu garanciju o završavanju procesa.

Bankarov algoritam za jedan resurs

Algoritam rasporeda koji može izbeći mrtve petlje je nastao zahvaljujući Dijkstra (1965) i

poznat je kao bankarev algoritam a koristi se kao dodatak algoritma za detekciju mrtvih petlji.

Modelovan je tako da bi bankar malog grada mogao raditi sa grupom korisnika kojima je

odobrio kredit. Algoritam proverava da li odobravanje zahteva za kredit dovodi do nesigurnog

stanja. Ako dovodi, tada se zahtev za kreditom odbija. Ako odobravanje dovodi do sigurnog

stanja, ono se odobrava. Na slici 9.(a) vidimo 4 korisnika A, B, C, D, svaki od njih ima odobren

određeni kredit (1 jedinica =1K$). Bankar zna da svi korisnici neće odmah trebati sav kredit, pa

je odvojio 10 jedinica umjesto 22 da bi ih uslužio (U ovoj analogiji korisnici su procesi ,a jedinice

su resurs dok je banka operativni sistem).

20

Page 21: Mrtve Petlje

Slika 9. Stanja alokacije resursa: (a) sigurno, (b) sigurno, (c) nesigurno.

Korisnici, s obzirom na posao kojim se bave, traže kredite s vremena na vreme

(zahtevaju resurse). U određenom trenutku, situacija je kao na slici 9.(b). Ovo stanje je sigurno

jer su ostale još dve jedinice, pa bankar može da odloži sve zahteve osim C, tako mu

omogućavajući da završi i oslobodi 4 njegova resursa. Sa 4 jedinice, bankar može sada da ih

prepusti D ili B koji ih traže, itd..

Razmotrimo što bi se desilo da je zahtev B za jednom ili više jedinica odobren što je dato

na slici 9.(b). Doći ćemo u stanje na slici 9.(c) koje je nesigurno. Ako svi korisnici odjednom

zatraže maksimalan kredit, bankar ne može da zadovolji ni jednog od njih pa iz toga sledi da je

će sistem ući u mrtvu petlju. Nesigurno stanje ne mora da dovede do mrtve petlje, pošto

korisnik možda neće imati potrebu za svim kreditom ali bankar ne može da računa na takvo

stanje.

SPREČAVANJE MRTVE PETLJE

Videli smo da se mrtva petlja ne može izbeći, jer su sistemu potrebne informacije o

budućim zahtevima za resurse, koje nisu poznate. Kako onda sistemi izbegavaju pojavu mrtve

petlje? Odgovor leži u ona četiri uslova za postojanje mrtve petlje (Coffman et al. 1971). Ako

možemo osigurati da se bar jedan uslov nikada ne ispuni, mrtva petlja ne može nikada nastati.

21

Page 22: Mrtve Petlje

Napad na uslov uzajamnog isključivanja

Ako se ekskluzivno ne dodele resursi jednom procesu, mrtva petlja se neće nikada desiti.

Međutim, jasno je da će doći do haosa ako dozvolimo da dva procesa istovremeno koriste

štampač. Ako je izlaz štampača u spoolingu*, tj. poslat je u memoriju ili na disk odakle će mu se

kasnije pristupiti, nekoliko procesa mogu da u isto vreme generišu izlaz. Po ovom modelu, jedini

proces koji stvarno fizički zahteva štampač je njegov serverski program (daemon). Pošto

serverski program nikad ne zahteva druge resurse, možemo eliminisati mrtvu petlju kod

štampača.

Na nesreću, ne mogu svi uređaji da budu u spoolingu (tabela procesa se tada ne ponaša

baš najbolje). Nadalje, nadmetanje nad prostorom na disku za spooling samo po sebi vodi u

mrtvu petlju. Što bi se desilo da postoje dva procesa koji popune, svaki po pola, slobodan

prostor za spooling izlaznim podacima, a da ni jedan ne završi sa pravljenjem tih izlaznih

podataka. Ako je serverski program štampača programiran tako da počne štampanje pre nego

što se sav izlaz nađe u spoolingu štampač može da čeka sa štampanjem ako je izlazni proces

odlučio da sačeka nekoliko sati prije nego što počne sa štampanjem. Zbog toga serverski

programi su programirani da štampaju tek kada je dostupan čitav fajl. U ovom slučaju imamo

dva procesa koji su odradili dio, ali ne i sve, izlazne podatke, i stoga ne mogu da nastave dalje.

Nijedan od procesa neće nikada da završi, što bi značilo da na disku imamo mrtvu petlju. Ovde

leži začetak ideje koja može biti često primenjivana. Izbegavanje dodeljivanja resursa osim u

slučajevima kada je to apsolutno neophodno, i osiguravanje da što manji broj procesa može

zatražiti dati resurs.

Napad na uslov zadrži i čekaj

Drugi od uslova koji su dati u Coffman et al. izgleda malo više obećavajući. Ako možemo

da sprečimo da procesi koji drže rersurse čekaju na nove resurse, možemo eliminisati mrtvu

petlju. Jedan način da se ovo postigne je da tražimo da svi procesi zahtevaju sve svoje resurse

pre nego što počnu sa izvršavanjem. Ako je sve slobodno, procesu će biti dodeljeni resursi koje

zahteva i on može da odradi svoj posao do kraja. Ako su jedan ili više resursa zauzeti, ni jedan

22

Page 23: Mrtve Petlje

resurs mu se neće dodeliti, i on mora čekati. Neposredan problem ovog pristupa je da mnogi

procesi ne znaju koliko će resursa trebati sve dok ne počnu da rade. U stvari, da znaju, bankarov

algoritam bi bio primjenjiv. Drugi problem je što se sa ovakvim pristupom resursi neće

optimalno koristiti. Uzmimo, kao primjer, proces koji čita podatke sa jedne magnetne vrpce,

analizira ih jedan sat, zatim rezultate upisuje na drugu magnetnu vrpcu i daje rezultate na

ploteru. Ako se svi resursi moraju zahtjevati unaprijed, proces će držati izlaznu magnetnu vrpcu

i ploter čitav sat. Ipak, neki višekorisnički sistemi traže od korisnika da navede sve resurse

potrebne za svaki posao. Sistem tada drži te resurse sve dok se posao ne odradi do kraja. Iako

ovaj način opterećuje programera i neoptimalno koristi resurse, on sprečava pojavu mrtve

petlje. Malo drugačiji način ugrožavanja uslova zadrži i čekaj je da sistem zatraži od procesa koji

zahtjeva resurs da prvo privremeno oslobodi sve resurse koje trenutno drži. Tada da pokuša

odjednom dobiti sve što mu je potrebno.

Napad na uslov nemogućnosti oduzimanja resursa bez posledica

Napad na treći uslov je još manje obećavajući od napada na drugi. Ako je procesu

dodijeljen štampač i proces ga trenutno koristi (štampa), nasilno oduzimanje štampača je u

najboljem slučaju teško, a u najgorem nemoguće.

DRUGA PITANJA O MRTVIM PETLJAMA

U ovom poglavlju razmotrićemo nekoliko različitih pitanja koja se odnose na mrtvu

petlju, i to : dvo-fazno zaključavanje, mrtve petlje bez resursa i izgladnjivanje.

Dvo-fazno zaključavanje

Iako ni izbjegavanje ni prevencija, uopšteno gledajući, nisu naročito obećavajući načini,

postoje mnogi dobri algoritmi koji se koriste za specijalne namjene. Na primjer, u mnogim

sistemima baza podataka, operacija koja se često dešava je zahtjev za zaključavanje nekoliko

slogova, a zatim i ažuriranje tih slogova. Kada nekoliko procesa radi u isto vrijeme, postoji

23

Page 24: Mrtve Petlje

realna opasnost od pojave mrtvih petlji. Pristup koji se često koristi je dvo-fazno zaključavanje.

U prvoj fazi proces pokušava da zaključa istovremeno sve slogove koji su mu potrebni. Ako

uspije u tome, počinje druga faza – ažuriranje slogova i njihovo oslobađanje. U stvari i nije

urađen nikakav posao u prvoj fazi.

Ako u prvoj fazi postoji neki slog koji je već prethodno zaključan (od strane drugog

procesa), proces oslobađa sve zaključane slogove i ponovo počinje prvu fazu. Na određen način,

ovaj pristup je sličan zahtjevu za svim potrebnim resursima unaprijed ili bar prije nego što se

odradi nešto poslije čega nema povratka u staro stanje. Kod nekih varijacija dvo-faznog

zaključavanja ne postoji oslobađanje i restartovanje ako se naiđe na određeni slog koji već

zaključan u prvoj fazi. Kod njih je moguća pojava mrtve petlje. Međutim, ova strategija,

uopšteno, nije primjenjiva. U sistemima u realnom vremenu i sistemima kontrole procesa, npr.

nije prihvatljivo, usljed nedostupnosti resursa, proces samo djelomično okončati i početi sve

ponovo. Nije prihvatljivo ni početi ispočetka ako je proces pročitao ili poslao poruke mreži,

ažurirao fajlove, ili bilo što drugo što se ne može ponoviti na zadovoljavajući način. Algoritam

radi samo u onim slučajevima kada je programer vrlo pažljivo napravio raspored, tako da se

program može zaustaviti u bilo kojem trenutku tokom prve faze i zatim restartovati. Mnoge

aplikacije se ne mogu napraviti da rade na ovaj način.

Mrtve petlje bez resursa

Do sada smo govorili o mrtvim petljama nad resursima. Jedan proces zahtjeva resurs

kojeg drugi proces drži i mora da čeka dok se taj resurs ne oslobodi. Mrtve petlje mogu da se

dešavaju i u drugim slučajevima kao što su oni u koje nisu uključeni resursi.

Na primer, može se desiti da se dva procesa nađu u mrtvoj petlji, tako što svaki čeka da

ovaj drugi odradi nešto. Ovo se često dešava kod semafora. U poglavlju 2 vidjeli smo neke

primjere toga. Ako se izvršavanje procesa odvija po pogrešnom poretku, može doći do pojave

mrtve petlje.

24

Page 25: Mrtve Petlje

Izgladnjivanje

Problem koji je usko povezan sa mrtvom petljom je izgladnjivanje. U dinamičkom

sistemu stalno se dešavaju zahtjevi za resursima. Potrebna je neka politika odlučivanja o tome

ko kada dobija koji resurs. Ova politika, iako naizgled razumna, može dovesti do toga da neki

procesi nikada ne budu opsluženi iako se ne nalaze u mrtvoj petlji.

Kao primer, posmatrajmo alokaciju štampača. Zamislimo da sistem koristi neku vrstu

algoritma da bi osigurao da alokacija štampača ne dovede do mrtve petlje. Sada pretpostavimo

da nekoliko procesa zahtjeva štampač istovremeno. Koji proces će ga dobiti?

Jedan mogući algoritam alokacije je da se štampač dodjeli procesu koji ima najmanji fajl

koji treba odštampati (pretpostavljamo da je ova informacija dostupna). Ovaj pristup

maksimizira broj zadovoljnih korisnika i čini se da je dobar. Sada razmotrimo šta se dešava kod

veoma zaposlenog sistema kada jedan proces treba da štampa jedan veoma velik fajl. Svaki put

kada je štampač slobodan, sistem će potražiti i izabrati proces sa najmanjim fajlom. Ako postoji

stalan protok procesa sa malim fajlovima, proces sa velikim fajlom neće nikad dobiti štampač.

On će jednostavno izgladnjeti do smrti ( vječno će se odlagati, iako nije blokiran). Izgladnjivanje

može da se izbjegne korištenjem drugačije politike alokacije resursa: prvi-dođe, prvi-uslužen.

Ovim pristupom, proces koji je najduže čekao biva slijedeći uslužen. Svaki dati proces će biti u

jednom trenutku najstariji i time dobiti resurs koji mu je potreban.

ISTRAŽIVANJA MRTVIH PETLJI

Mrtve petlje su su istraživane i opisivane od najranijih dana operativnih sistema. Razlog

tome je što je detekcija mrtve petlje jedan lijepi, mali problem teorije grafova s kojim se jedan

matematički obdaren postdiplomac može uhvatiti u koštac i “žvakati ga” jedno 3-4 godine.

Izmišljeni su razni algoritmi, svaki egzotičniji i manje praktičan od prošlog. Kao posljedica toga,

sva ova istraživanja su izumrla i veoma je malo novih radova (Karacali et al.,2000.). Kada

25

Page 26: Mrtve Petlje

operativni sistem želi da izvrši detekciju ili prevenciju mrtve petlje (nekoliko ih to i radi), koristi

onda jedan od načina datih u prethodnim poglavljima.

Još uvijek postoje određena istraživanja na polju detekcije mrtve petlje. Međutim, ovdje

se time nećemo baviti jer je (1) to izvan interesovanja ove knjige, i (2) ni jedan od njih nije čak ni

približno primjenjiv na realne sisteme. Njihova glavna upotreba izgleda da je u tome što drži van

ulice inače nezaposlene teoretičare grafova.

26

Page 27: Mrtve Petlje

ZAKLJUČAK

Mrtva petlja predstavlja potencijalan problem svakog operativnog sistema. Ona se

dešava kada svakom procesu iz grupe procesa biva ekskluzivno dodeljen resurs, a pri tom svaki

od procesa zahteva drugi resurs kojeg poseduje drugi proces iz grupe. Svi procesi su blokirani i

ni jedan neće više nikad da se pokrene. Mrtva petlja može da se izbegne vođenjem evidencije o

tome koja stanja su sigurna a koja to nisu. Sigurno stanje je ono kod kojeg postoji sekvenca

događaja koja garantuje završetak procesa. Nesigurno stanje nema takvih garancija. Bankarov

algoritam izbegava mrtve petlje ne odobravajući zahtev koji bi odveo sistem u nesigurno stanje.

Mrtva petlja se može strukturno sprečiti izgradnjom sistema na taj način da se ona nikad

ne može pojaviti u tako dizajniranom sistemu. Na primer, dozvoljavanjem procesu da drži samo

jedan resurs istovremeno krši se uslov cirkularnog čekanja koji je neophodan da bi se pojavila

mrtva petlja. Mrtva petlja se takođe može spriječiti numerisanjem svih resursa i njihovim

zahtjevanjem od strane procesa po striktno rastućem redosledu. Izgladnjivanje može da se

prevaziđe politikom alokacije: prvi-dođe, prvi-uslužen.

27

Page 28: Mrtve Petlje

Literatura

1. http://www.croportal.net/forum/tutoriali-i-trikovi/petlje-8031/

2. http://www.link-elearning.com/lekcija-Osnovi-multitasking-a._50

3. http://search.conduit.com/Results.aspx? q=mrtve+petlje&SearchSourceOrigin=1&hl=en&SelfSearch=1&ctid=CT2269050&start=10

4. http://www.pc-press.com/arhiva/tekst.asp?broj=127&tekstID=6960

5. http://webcache.googleusercontent.com/search? q=cache:LXdF367nWXsJ:www.os.ac.me/os/materijal/Deadlocks1/Deadlocks1.doc+mrtve+petlje&cd=1&hl=en&ct=clnk

6. http://docs.google.com/viewer?a=v&q=cache:mq_zOP4m0GYJ:www.os.ac.me/os/ OS7.pdf+mrtve+petlje&hl=en&pid=bl&srcid=ADGEESiVZx_ECbXd-VRGPAyl9IkTOGy4IMbtYLPYlg5bLzoI7YK89VHZFBcQlsvitN9eLkjJCIpiRhbFxdLc5D-dIxXsjmSvEKnrBW--Nzw8bAOuL-m3qvr727WcZswLpoKwfT6oxmau&sig=AHIEtbTehvWfR2swPNmBKYvdgZwGsF2Hng

7. http://webcache.googleusercontent.com/search? q=cache:mZXPgfWHvB8J:www.os.ac.me/os/semi2002_03/Deadlocks.ppt+mrtve+petlje&cd=3&hl=en&ct=clnk

28

Page 29: Mrtve Petlje

29

Page 30: Mrtve Petlje

*