smrtni in zivi objem nazaj naprej obravnavali bomo razlicne tehnike medsebojne sinhronizacije paralelnih programskih procesov ta se doseze tako da proces ki naj bo sinhroniziran z nekim drugim v danem trenutku pocaka na nek dogodek event prav mozno je da do tega dogodka iz razlicnih razlogov ne more priti pravimo da se je en ali vec paralelnih procesov znaslo v smrtnem objemu deadlock oglejmo si nekaj moznih vzrokov za tak pojav ter ugotovimo kako ga lahko preprecujemo do smrtnega objema lahko pride ko na primer dva procesa cakata drug na dogodek drugega ker pa sta oba s tem blokirana do odresilnega dogodka ne v enem ne v drugem procesu ne pride preprost zgled je lahko naslednji imamo dva programska procesa ki za svoje delo potrebujeta dve periferiji vsak si ze lasti eno in caka na drugo problem ponazoruje slika sorodni problem smrtnemu objemu je problem nedolocenega zapostavljanja vcasih mu tudi recemo problem zivega objema livelock nek proces caka na neko sredstvo vendar je morda zaradi nizje prednosti stalno zapostavljen in nikdar ne pride na vrsto tipicen primer zivega objema lahko zasledimo pri slabo zasnovanem algoritmu razvrscanja procesov scheduling nek proces z nizko prioriteto morda nikdar ne pride na vrsto ker imajo prednost procesi z visjo prednostjo ta problem lahko resujemo na primer tako da s staranjem prednost takemu procesu zvisujemo navedene probleme blokiranja nekega procesa nedoloceno zapostavljanje smrtni objem zasledimo na primer pri operacijskih racunalniskih sistemih operacijski sistem je predvsem upravnik sredstev resource manager racunalniskega sistema za ta sredstva pa istocasno lahko konkurira vec paralelnih programskih procesov za nastop smrtnega objema so potrebni naslednji stirije pogoji procesi zahtevajo exskluzivno lastnistvo sredstva procesi imajo ze dodeljena sredstva in hkrati zahtevajo in cakajo na dodatna procesom ne moremo odvzeti sredstev ki si jih lastijo dokler jih sami ne vrnejo obstoja krozna veriga procesov od katerih si vsak lasti kaksno sredstvo ki ga zahteva tudi naslednji proces v tej verigi problem smrtnega objema lahko resujemo na vec nacinov tako lahko sredstva ostevilcimo in dovolimo da posamezni procesi lahko zahtevajo le ta zgolj po narascajocih stevilkah to seveda verjetno ne ustreza vsem procesom druga moznost je da morajo v kriticnem primeru posamezni procesi vracati sredstva tako strategijo placamo s tem da je bilo dotedanje delo takih procesov morda zaman in ga bodo morali ponoviti obe navedeni metodi preprecujeta smrtni objem blazje strategije se temu pojavu le izogibajo za primere ko vec procesov kandidira za resurse istega tipa na primer bloke v medpomnilniku lahko uporabimo bancni algoritem ki ga je predlagal dijkstra ime je dobil po strategiji ki jo uporabljajo tudi v bankah poslovanje teh sloni na predpostavki da vsi varcevalci ne dvignejo istocasno vseh svojih vlog in ima zato banka lahko v danem trenutku manj gotovine kot je vsota vseh vlog po tej strategiji poznamo varno in nevarno stanje sistema varno stanje imamo tedaj ce lahko operacijski sistem vsem tekocim uporabnikom zagotovi zakljucek posla v nekem koncnem casu uporabniki procesi morajo sistem vnaprej informirati koliko sredstev istega tipa bodo maksimalno potrebovali v istem casu za primer vzemimo procese ki operirajo s tracnimi enotami primer varnega stanja proces trenutno v lasti maksimalna zahteva proces proces proces proste enote primer nevarnega stanja proces trenutno v lasti maksimalna zahteva proces proces proces proste enote nevarno stanje se ne pomeni da bo do smrtnega objema v resnici prislo ker pa taka nevarnost ob neugodnem razpletu dogodkov grozi se takemu stanju raje izognemo sistem zato dodeljuje sredstva le ce pri tem prehaja v varna stanja