Problém obedujúcich filozofov
Z Wikipédie
Problém obedujúcich filozofov (dining philosophers problem) je myšlienkový experiment, ktorý sa používa na overenie správnej činnosti správy procesov. Formuloval ho Edsger Dijkstra v roku 1965. Každý operačný systém má správu procesov, čo je vlastne algoritmus, ktorý riadi vznik, zánik a plánovanie procesov (bežiacich programov) v operačnom systéme.
Predstavme si okrúhly stôl, na ktorom je po obvode položených 5 tanierov. Medzi každými dvoma taniermi je jedna čínska palička, spolu je ich teda 5. Ďalej si predstavme, že za týmto stolom sedí 5 filozofov, každý za svojím tanierom. Filozof predstavuje nejaký proces. Filozof môže vykonávať dve činnosti - buď obeduje alebo filozofuje. Aby mohol obedovať, musí si zobrať dve čínske paličky. Ak chce filozofovať, nedrží ani jednu paličku.
Keď filozofi (procesy) spolu nekomunikujú alebo komunikujú nesprávne, každý sa môže rozhodnúť, že vezme napríklad ľavú paličku. Teraz chce každý z nich zobrať pravú paličku, no tá je obsadená, takže filozof nemôže ani obedovať, ani filozofovať. Takýto stav sa nazýva uviaznutie (deadlock). Musí buď počkať, kým sa palička uvoľní, alebo paličku položiť a skúsiť to neskôr znova.
Iným kritickým stavom je vyhladovanie (starvation), ktoré nastáva, keď sa filozof nedostane po určitom čase k jedeniu (resp. proces k zdrojom). Nastáva napríklad pri veľmi rýchlych intervaloch jedenia a filozofovania.