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.

  1. Narediti nič (do nothing)
    Več operacijskih sistemov se na smrtne objeme ne odzove.
  2. Preprečitev
    Možno je zgraditi sisteme, pri katerih ne prihaja do smrtnih objemov. To lahko storimo samo če preprečimo "client server interactions".
  3. 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.
  4. 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.