Problém obědvajících filozofů: Porovnání verzí

Smazaný obsah Přidaný obsah
Xqbot (diskuse | příspěvky)
m r2.5.2) (robot přidal: uk:Проблема філософів, що обідають; kosmetické úpravy
Řádek 5:
== Ilustrace problému obědvajících filosofů ==
 
Představme si kulatý stůl, na kterém je po obvodu položených 5 talířů. Mezi každými dvěma talíři je jedna čínská hůlka, celkem je jich tedy 5. Dále si představme, že za tímto stolem sedí 5pět filozofů, každý za svým talířem. Filozof představuje nějaký proces a může provádět dvě činnosti - buď obědvat (oběd) nebo filozofovat. Aby mohl obědvat, musí si vzít dvě čínské hůlky. Pokud chce filosofovat, nedrží ani jednu hůlku.
 
Když filosofové (procesy) spolu nekomunikují nebo komunikují nesprávně, může se každý z nich rozhodnout, že vezme například levou hůlku. Teď chce každý z nich vzít pravou hůlku, ale ta je obsazena, takže filozof nemůže ani obědvat, ani filosofovat. Takový stav se nazývá [[uváznutí]] ([[deadlock]]). Musí tedy buď počkat, dokud se hůlka uvolní, nebo hůlku položit a zkusit to později znovu.
Řádek 11:
Jiným kritickým stavem je [[vyhladovění]] ({{Vjazyce2|en|''starvation''}}, {{Vjazyce2|cs|''stárnutí zdrojů''}}), které nastává, když se filozof nedostane po určité době k jídlu (resp. proces ke [[zdroj|zdrojům]]). Nastává například při velmi krátkých [[časový interval|intervalech]] jezení a filosofování.
 
VyhladovělýchVyhladovění by mohlo také nastat nezávisle na deadlocku, pokud je filozof neschopný získat obě hůlky během stejného časového úseku. Například můžeme uvažovat pravidlo, že filozof pustí jednu hůlku z ruky za 5 minut od okamžiku, kdy si jí vezme a čeká dalších 5 minut na to, aby udělal další pokus najíst se. Tento režim eliminuje možnost deadlocku (systém se vždy může dostat do jiného stavu), ale stále je problémem [[livelock]]. Když totiž všichni filozofové položí najednou hůlky a pak si je za 5 minut opět vezmou, situace se opakuje, znovu mají po jedné hůlce všichni filosofové.
 
Nedostatek volných hůlek je [[analogie|analogii]] ke zamykání [[sdílení|sdílených]] prostředků v reálném počítačovém [[programování]], situace známá, jako [[souběžnost]]. Zamykání prostředku je běžná [[technika]], jak zajistit [[konzistence|konzistenci]] daného zdroje v čase. Když [[zdroj]], se kterým [[počítačový program|program]] pracuje, už je uzamčen jiným programem, program čeká, dokud není odemčen. Pokud některé programy vyžadují zamykání zdrojů, může nastat deadlock. Závisí tudíž na okolnostech. Například, jeden program potřebuje dva soubory ke zpracování. Když dva takové programy uzamknou každý jeden z těchto souborů, oba budou čekat na to, aby ten druhý uvolnil zdroj, který má k dispozici, což se nikdy nestane.