Deadlock Flashcards
Co je to uviaznutie?
ak proces caka na udalost ktora nemoze nastat, teda nikdy sa neukonci
Ako vieme rozoznat ci je proces uviaznuty?
Bohuzial to nevieme
Kedy je mnozina procesov v stave uviaznutia?
Ak kazdy caka na udalost, ktoru moze sposobit len iny proces tejto mnoziny
Ake su 4 nutne podmienky vzniku uviaznutia?
- vzajomne vylucovanie
- nepreemptivne pridelovanie prostriedkov (prideleny prostriedok nie je mozne procesu odobrat)
- ciastnocne pridelovanie prostriedkov
- cakanie na prostriedky
ak vsetky platia, mame uviaznutie
Co je ciastocne pridelovanie prostriedkov?
Proces moze o prostriedky cakat postupne, moze mat nejake pridelene zatial co caka na dalsie
Co je cakanie na prostriedky?
Ak proces nema pridelene prostriedky ktore ziada, caka
Co je kruhove cakanie?
postupnost procesov taka, ze kazdy caka na prostriedok toho dalsieho a posledny na toho prveho
Ako vieme modelovat uviaznutie?
Grafom alokacie prostriedkov - bipartitny orientovany graf, kde vrcholy su procesy P a prostriedky R
V grafe alokacie prostriedkov, co je hrana P ->R?
P potrebuje prostriedok R
V grafe alokacie prostriedkov, co je hrana R->P?
Proces P ma prideleny prostriedok R a uvolni ho az ked sa ukonci
Co to su Petriho siete?
kazdy proces vsetky jeho “riadky”, sipka je smerovanie procesu alebo preplanovanie na druhy proces
Co je problem z pohladu OS pri rieseni uviaznutia?
OS moze riadit pristup len k prostiredkom ktore poskytuje ako CPU, pamat, subory ,semafory a pod., nema vsak vplyv na prostriedky implementovane procesmi
Ake su 4 pristupy k rieseniu problemu uviaznutia?
- Ignorovanie problemu
- Detekcia uviaznutia a zotavenie
- Predchadzanie uviaznutia
- Vyhybanie sa uviaznutiu
Co je zac taktika Ignorovanie uviaznutia?
Len ak je uviaznutie nepravdepodobne a zriedkave, ajtak to ale nie je idealny sposob
Co je zac taktika detekcia uviaznutia a zotavenie?
Ked uviaznutie nastane, OS restartuje niektory z mnoziny uviaznutych procesov. Musi mat teda implementovany detekcny mechanizmus.
Ake detekcne mechanizmy uviaznutia vieme implementovat?
- operator ktory stav zisti a zasiahne
- taky co zrusi proces zablokovany urcitu dlhu dobu
- prida sa uprava alokacneho grafu, ak sa najde slucka, nastalo uviaznutie
Co je to zotavenie?
Zrusenie vsetkych uviaznutych procesov, alebo jedneho, alebo navrat do neuviaznuteho stavu
Ako vieme predchadzat uviaznutiu?
Upravime implementaciu aby niektora z nutnych podmienok nebola splnena, teda zrusit jednu zo styroch podmienok uviaznutia
Ako vieme odstranit vzajomne vylucovanie?
Pristup k spolocnemu prostriedku moze byt sprostredkovany koordinacnym procesom ktory bude k nemu pristupovat ako jediny, s ktorym budu komunikovat procesy. Moze ale vzniknut nova kriticka oblast.
Co je to preempcia?
odobranie prostriedku ktory uz bol prideleny
Aky je problem preemptivneho pridelovania prostriedkov?
moze to mat fatalne dosledky, ak ich budeme nasilu brat
Kedy vieme vyuzit preemptivnu taktiku?
pre zdroje ktorych stav vieme uchovat
Ako vieme docielit Pridelenie vsetkych prostriedkov procesu?
Proces by mohol vzdy pred alokovanim dalsich prostriedkov uvolnit vsetky ktore ma a poziadat o zvyseny objem naraz
Aky je problem pri pridelovani vsetkych prostriedkov?
mnohe procesy vopred nevedia kolko prostriedkov potrebuju
Ako vieme eliminovat cyklicke cakanie?
Vsetky prostriedky ocislujeme/zoradime, kazdy proces vie ziadat prostriedky len v poradi ich cisel, tym nemoze vzniknut cyklus v grafe alokacii prostriedkov
Co je to vyhybanie uviaznutiu?
OS a procesy sa spravaju tak aby k uviaznutiu nedoslo pocas vykonavania
Ziadna z nutnych podmienok nie je trvale odstranena ale procesy sa vyhybaju tomu aby platili vsetky naraz
Co je to odmietnutie spustenia procesu?
pozri slide 25 + priklady
Co je bankarov algoritmus?
algoritmus odmietnutia pridelenia prostriedku
Ako funguje bankarov algoritmus?
Operacny system (bankar) sa rozhodne ci klientovi (procesu) prideli prostriedok daneho typu. Kazdy proces musi na zaciatku oznamit celkove mnozstvo jednotlivych prostriedkov ktore potrebuje a po skonceni ich vrati.
Kedy bankar prideli prostriedky procesu?
Len ak existuje postupnost ktora vedie k uspokojeniu vsetkych procesov. Stav je bezpecny ak vedie do dalsieho bezpecneho stavu.
Je bankarov algoritmus prakticky pouzitelny a preco?
Nie, lebo neda sa povedat jednoducho kolko prostriedkov proces potrebuje
Pozri priklady bankarovho algoritmu na slajdoch od 32
32
Ako vieme detekovat uviaznutie v jadre OS Linux?
futex() alebo pthread_mutex_lock() vrati EDEADLK
OS si pre kazdy proces udrzuje zoznam zamkov na ktore caka
Ako vieme detekovat uviaznutie pre zamky na suboroch?
zamky na suboroch nastavime systemovym volanim fcntl (POSIX).
Aky je rozdiel medzi F_SETLK a F_SETLKW?
F_SETLKW bude cakat az kym nebude mozne zamok ziskat