Deadlock: Porovnání verzí

Smazaný obsah Přidaný obsah
JAnDbot (diskuse | příspěvky)
m robot: přidáno {{Autoritní data}}; kosmetické úpravy
m →‎Bankéřův algoritmus: Odstraněny nadbytečné prázdné řádky
Řádek 32:
=== Bankéřův algoritmus ===
Bankéřův algoritmus se používá hlavně u prostředků, kterých se přiděluje určité množství (jednotky s výměnnými médii, jako jsou magnetopáskové jednotky, diskové jednotky u [[Mainframe|sálových počítačů]], [[Operační paměť|paměť]], odkládací prostor). Bankéř (operační systém) má klienty (procesy) a těm slíbil jistou výšku úvěru (maximální množství prostředků). 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 až do maximální výše úvěru. Klient v konečném čase obchod dokončí a bance vypůjčené prostředky vrátí. Bankéř peníze půjčí pouze tehdy, zůstane-li banka v bezpečném stavu. To znamená, že existuje cesta, jak v každém okamžiku přidělit alespoň jednomu z klientů předem uvedené maximální množství prostředků, a poté, co všechny své prostředky vrátí, postupně uspokojovat další klienty.{{Sfn|Dijkstra|1968|loc=6.1. The Banker's Algorithm}}
 
=== Detekce deadlocku ===
Obecně je předvídání deadlocku nemožné (je ekvivalentní s [[Problém zastavení|problémem zastavení]]) – nemůžeme zjistit, na jaký prostředek bude proces čekat, ani jestli ho proces, který ho zrovna drží, bude ochoten včas uvolnit. Pokud se ovšem omezíme na detekci uváznutí mezi procesy čekajícími na určité typy událostí – např. [[operační systém]] sleduje alokované prostředky – jedná se o [[algoritmus]] hledání [[Kružnice (graf)|cyklu]] v [[Graf (teorie grafů)|grafu]].