Uvod v operacijske sisteme
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č (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 pogostso predstavljene z grafom za dodeljevanje virov (resource-allocation graph), čigar vozli (nodes) so lahko procesi ali viri.