Problém uvíznutí procesů, graf alokace zdrojů

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (→Řešení zablokování)
 
(Nejsou zobrazeny 4 mezilehlé verze od 3 uživatelů.)
Řádka 1: Řádka 1:
−
V množině procesů nastalo uvíznutí, jestliže každý proces množiny čeká na událost, kterou může způsobit pouze jiný proces množiny.
+
V množině procesů nastalo uvíznutí, jestliže každý proces množiny čeká na událost, kterou může způsobit pouze jiný proces množiny. Protože všechny čekají, žádný z nich událost nevygeneruje, nevzbudí jiný proces.
−
· Protože všechny čekají, žádný z nich událost nevygeneruje, nevzbudí jiný proces
+
  
−
Podmínky vzniku uvíznutí (musejí být splněny všechny 4, 1-3 jsou předpoklad pro 4):
 
−
1. Vzájemné vyloučení: každý zdroj je buď dostupný, nebo je výhradně přiřazen právě jednomu procesu
 
−
2. „hold and wait“: proces držící výhradně přiřazené zdroje může požadovat další zdroje
 
−
3. Nemožnost odejmutí: jednomu přiřazené zdroje nemohou být procesu násilně odejmuty
 
−
4. Cyklické čekání: musí být cyklický řetězec dvou nebo více procesů, kde každý z nich čeká na zdroj držený dalším členem
 
  
−
· tyto 4 podmínky mohou být modelovány pomocí orientovaných grafů = graf alokace zdrojů
+
== Podmínky vzniku uvíznutí ==
−
· graf má 2 typy uzlů:
+
(musejí být splněny všechny 4, 1-3 jsou předpoklad pro 4):
−
- proces - zobrazujeme jako kruh
+
# Vzájemné vyloučení: každý zdroj je buď dostupný, nebo je výhradně přiřazen právě jednomu procesu
−
- zdroj - zobrazujeme jako čtverec
+
# „hold and wait“: proces držící výhradně přiřazené zdroje může požadovat další zdroje
−
· význam hran:
+
# Nemožnost odejmutí: jednomu přiřazené zdroje nemohou být procesu násilně odejmuty
−
- od zdroje k procesu: zdroj držen procesem
+
# Cyklické čekání: musí být cyklický řetězec dvou nebo více procesů, kde každý z nich čeká na zdroj držený dalším členem
−
- od procesu ke zdroji: proces je blokován čekáním na zdroj
+
 
−
· cyklus v grafu je nutnou a postačující podmínkou pro vznik uvíznutí
+
Tyto 4 podmínky mohou být modelovány pomocí orientovaných grafů = ''graf alokace zdrojů''.
 +
 
 +
Graf má 2 typy uzlů:
 +
* proces - zobrazujeme jako kruh
 +
* zdroj - zobrazujeme jako čtverec
 +
Význam hran:
 +
* od zdroje k procesu: zdroj držen procesem
 +
* od procesu ke zdroji: proces je blokován čekáním na zdroj
 +
Cyklus v grafu je nutnou a postačující podmínkou pro vznik uvíznutí
  
 
[[Soubor:Alokace-zdroju.jpg]]
 
[[Soubor:Alokace-zdroju.jpg]]
 
   
 
   
−
Strategie zacházení s uvíznutím:
+
 
−
1. Ignorování = „pštrosí algoritmus“
+
== Řešení zablokování ==
−
2. Detekce a zotavení (odejmutí zdroje, zrušení změn, zrušení procesu)
+
 
−
3. Dynamické zabrání (pečlivá alokace zdrojů)
+
# '''Pštrosí algoritmus''' - Zablokování se ani nedetekuje, ani se mu nezabraňuje, ani se neodstraňuje, Uživatel sám rozhodne o řešení (kill). Nespotřebovává prostředky OS - nemá režii ani neomezuje podmínky provozu. (Nejčastější řešení - Unix, Windows)
−
4. Prevence pomocí strukturální negace jedné z podmínek pro vznik uvíznutí
+
# '''Detekce a zotavení''' - Hledá kružnici v orientovaném grafu (hrany vedou od procesu, který čeká, k procesu, který prostředek vlastní), pokud tam je kružnice, nastalo zablokování a je třeba ho řešit:
 +
#* Odebrání prostředku - dohled operátora, pouze na přechodnou dobu
 +
#* Zabíjení procesů z cyklu (resp. mimo cyklus vlastnící identický prostředek)
 +
#* Rollback (OS ukládá stav procesů, při zablokování se některé procesy vrátí do předchozího stavu => ztracena práce... obdoba u DB)
 +
# '''Vyhýbání se''' - Bezpečný stav (procesy/prostředky nejsou zablokovány, existuje cesta, jak uspokojit všechny požadavky na prostředky spouštěním procesů v jistém pořadí); Viz bankéřův algoritmus. Nutné je předem znát všechny prostředky, které budou programy potřebovat; OS pak dává prostředky tomu, který je nejblíž svému maximu potřeby a navíc pro který je prostředků dost na dokončení. Dnes se moc nepoužívá.
 +
# P'''ředcházení (prevence)''' - napadení jedné z Coffmanových podmínek
 +
# '''Vzájemné vyloučení''' - spooling (prostriedky spravuje jeden systemový proces, ktory dohliada na to, aby jeho stav bol konzistentny (tiskarna) - pozor na místo na disku)
 +
# '''Drž a čekej''' - žádat o všechny prostředky před startem procesu. Nejprve všechno uvolnit a pak znovu žádat o všechny najednou
 +
# '''Neodnímatelnost''' - vede k chaosu
 +
# '''Čekání do kruhu''' - nejvýše jeden prostředek - všechny prostředky jednoznačně očíslovány, procesy mohou žádat o prostředky jen ve vzestupném pořadí
 +
# '''Dvojfázové zamykání''' - nejprve postupně všechno zamykám (první fáze). Potom se může pracovat se zamčenými prostředky - a na závěr se už jen odemyká (druhá fáze) - viď transakční spracování u databází ((striktní/konzervativní) dvoufázové zpracování)
 +
 
 +
''Bankéřův algoritmus'': Bankéř má klienty a těm slíbil jistou výšku úvěru. Bankéř ví, že ne všichni klienti potřebují plnou výši úvěru najednou. Klienti občas navštíví banku a žádají postupně o prostředky do maximální výšky úvěru. Až klient skončí s obchodem, vrátí bance vypůjčené peníze. Bankéř peníze půjčí pouze tehdy, zůstane-li banka v bezpečném stavu.
 +
 
 +
{{fav-kiv-bzinf}}
 +
 
 +
 
 +
[[Kategorie:fav-kiv-bzinf]]

Aktuální verze z 26. 5. 2017, 17:43

V množině procesů nastalo uvíznutí, jestliže každý proces množiny čeká na událost, kterou může způsobit pouze jiný proces množiny. Protože všechny čekají, žádný z nich událost nevygeneruje, nevzbudí jiný proces.


[editovat] Podmínky vzniku uvíznutí

(musejí být splněny všechny 4, 1-3 jsou předpoklad pro 4):

  1. Vzájemné vyloučení: každý zdroj je buď dostupný, nebo je výhradně přiřazen právě jednomu procesu
  2. „hold and wait“: proces držící výhradně přiřazené zdroje může požadovat další zdroje
  3. Nemožnost odejmutí: jednomu přiřazené zdroje nemohou být procesu násilně odejmuty
  4. Cyklické čekání: musí být cyklický řetězec dvou nebo více procesů, kde každý z nich čeká na zdroj držený dalším členem

Tyto 4 podmínky mohou být modelovány pomocí orientovaných grafů = graf alokace zdrojů.

Graf má 2 typy uzlů:

Význam hran:

Cyklus v grafu je nutnou a postačující podmínkou pro vznik uvíznutí

Alokace-zdroju.jpg


[editovat] Řešení zablokování

  1. Pštrosí algoritmus - Zablokování se ani nedetekuje, ani se mu nezabraňuje, ani se neodstraňuje, Uživatel sám rozhodne o řešení (kill). Nespotřebovává prostředky OS - nemá režii ani neomezuje podmínky provozu. (Nejčastější řešení - Unix, Windows)
  2. Detekce a zotavení - Hledá kružnici v orientovaném grafu (hrany vedou od procesu, který čeká, k procesu, který prostředek vlastní), pokud tam je kružnice, nastalo zablokování a je třeba ho řešit:
    • Odebrání prostředku - dohled operátora, pouze na přechodnou dobu
    • Zabíjení procesů z cyklu (resp. mimo cyklus vlastnící identický prostředek)
    • Rollback (OS ukládá stav procesů, při zablokování se některé procesy vrátí do předchozího stavu => ztracena práce... obdoba u DB)
  3. Vyhýbání se - Bezpečný stav (procesy/prostředky nejsou zablokovány, existuje cesta, jak uspokojit všechny požadavky na prostředky spouštěním procesů v jistém pořadí); Viz bankéřův algoritmus. Nutné je předem znát všechny prostředky, které budou programy potřebovat; OS pak dává prostředky tomu, který je nejblíž svému maximu potřeby a navíc pro který je prostředků dost na dokončení. Dnes se moc nepoužívá.
  4. Předcházení (prevence) - napadení jedné z Coffmanových podmínek
  5. Vzájemné vyloučení - spooling (prostriedky spravuje jeden systemový proces, ktory dohliada na to, aby jeho stav bol konzistentny (tiskarna) - pozor na místo na disku)
  6. Drž a čekej - žádat o všechny prostředky před startem procesu. Nejprve všechno uvolnit a pak znovu žádat o všechny najednou
  7. Neodnímatelnost - vede k chaosu
  8. Čekání do kruhu - nejvýše jeden prostředek - všechny prostředky jednoznačně očíslovány, procesy mohou žádat o prostředky jen ve vzestupném pořadí
  9. Dvojfázové zamykání - nejprve postupně všechno zamykám (první fáze). Potom se může pracovat se zamčenými prostředky - a na závěr se už jen odemyká (druhá fáze) - viď transakční spracování u databází ((striktní/konzervativní) dvoufázové zpracování)

Bankéřův algoritmus: Bankéř má klienty a těm slíbil jistou výšku úvěru. Bankéř ví, že ne všichni klienti potřebují plnou výši úvěru najednou. Klienti občas navštíví banku a žádají postupně o prostředky do maximální výšky úvěru. Až klient skončí s obchodem, vrátí bance vypůjčené peníze. Bankéř peníze půjčí pouze tehdy, zůstane-li banka v bezpečném stavu.


Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje