E-gradiva > Računalništvo > Operacijski sistemi > a_operacijski > Procesi > Smrtni objem

Prijava

Smrtni objem

Do smrtnega objema pride, ko se več procesov zaustavi in vsak od njih čaka na vir sistema, do katerega lahko dostopa samo s pomočjo drugega, zaustavljenega procesa. Da bi lažje razumeli nastanek smrtnih objemov si poglejmo primer iz vsakdanjega življenja: prijatelja sta se sprla in vsak pričakuje od drugega, da se bo prvi opravičil.

Pogosto uporabljeni viri kot so pomnilnik, medpomnilnik, prostor na disku...
Dokler takšni viri obstajajo le v omejenih količina bo moral en proces čakati na drugega, da sprosti sistemski vir, ki ga trenutno uporablja.

Primer: pet ljudi sedi za okroglo mizo na kateri so štiri vilice. Ob istem času vsak od njih z levo roko prime vilico, ki se nahaja na njegovi levi strani. Vilice so "serially reusable".

Potrošni viri, kot so sporočila in signali.
Proces čaka na sporočilo od drugega procesa. Rekli bomo, da pošiljajoč proces ustvarja vir in sprejema proces, ki ga uporablja.

Primer: Prvi proces čaka na sporočilo drugega in obratno. Noben od dveh ne more prekiniti smrtnega objema s pošiljanjem sporočila.

Poznamo štiri načine za obravnavanje smrtnih objemov.

Narediti nič (angl.do nothing)
Več operacijskih sistemov se na smrtne objeme ne odzove.
Preprečitev
Možno je zgraditi sisteme, pri katerih ne prihaja do smrtnih objemov. To lahko storimo samo če preprečimo client server interactions.
Izogib
Pogosto imamo tudi možnost, da že vnaprej zaznamo nevarno stanje sistema, ko bi lahko prišlo do smrtnega objema. Metoda deluje samo pri nekaterih pogosteje uporabljenih sistemskih virih.
Zaznavanje
Sistem ne poizkuša preprečiti smrtnih objemov, ampak jih zazna in jih prekine.

Situacije, ki lahko vodijo do smrtnih objemov so pogosto predstavljene z grafom za dodeljevanje virov (angl. resource-allocation graph), čigar vozlišča (angl. nodes) so lahko procesi ali viri.

Pogoji za smrtni objem

Poznamo štiri pogoje, ki morajo biti izpolnjeni hkrati, da lahko pride do smrtnega objema.

Medsebojno izključevanje (angl. Mutal exclusion)
Vsaj en vir v sistemu ni deljiv, torej ga zasede en proces, drugi pa morajo čakati nanj.

Zadrži in čakaj (angl. Hold and wait condition)
Procesi lahko zadržujejo vire, ki so jim bili že dodeljeni medtem ko čakajo še na ostale vire.

Neprekinjevalni način (angl. No Preemption)
Ko je nek vir dodeljen procesu, mu ne sme biti odvzet, dokler ga ne odrabi. Zasedba vira se torej ne da prekiniti.

Krožno čakanje (angl. Circular Wait)
Potrebna je krožna veriga procesov tako, da si vsak proces v verigi pridržuje nekaj virov, ki jih zahteva naslednji proces v verigi.

Preprečevanje smrtnih objemov

Ker so za smrtni objem potrebni vsi zgoraj navedeni pogoji, ga lahko preprečimo s tem, ko preprečimo vsakega od štirih pogojev posebej.

  1. Največji problem je, da je večina virov lahko dostopna samo enemu procesu na enkrat. Če določen proces piše v datoteko, noben od ostalih procesov nima dostopa do te datoteke.

  2. Da preprečimo drugi pogoj moramo omogočiti procesu, da nek vir pridobi preden ga bo uporabil. Pri tem pride do dveh težav:
    • Viri bodo zasedeni preden jih bodo procesi sploh uporabljali.
    • Metoda ni uporabna na porabljive vire kot so sporočila (angl. messages), ker bi bilo potrebno, da bi vsak proces najprej sprejel vsa sporočila od drugega procesa in šele nato bi jih začel obdelovati

  3. Dovoliti procesu, da ukrade ali si sposodi vir od drugega procesa je lahko rešitev, vendar moramo najprej prekiniti proces od katerega smo pobrali vir, kar bi se izkazalo kot izgubljeno delo, ali pa tudi izguba podatkov.

  4. Vsem tipom virov lahko določimo skupen ukaz, ki bo prisilil vse procese, da sledijo ukazu, ko si prilastijo nove vire. Če nek procse potrebuje več kot eno enoto vira določenega tipa, si mora prilastiti vse ali nobenega.

            "The dream of building large deadlock-free systems is just a dream." Neznacec

Izogibanje

Z opazovanjem dodeljevanja virov ne dovolimo sistemu, da pride do stanja ko nebi bil zmožen zadovoljiti največje zahteve procesa po virih.

Zaznavanje smrtnih objemov:

Windows XP

Linux

Avtor