Kritická sekce
Kritická sekce (též kritický kód, anglicky critical section) je v informatice nejmenší část zdrojového kódu, kde dochází k přístupu ke sdílenému prostředku (např. sdílená data, která označujeme jako kritická oblast), ke kterému nemohou současně přistupovat dva nebo více procesů či vláken. Programy, které usilují o vstup do kritické sekce, musí použít nějaké synchronizační primitivum, které má za úkol zajistit do kritické sekce exkluzivní přístup a zároveň konečnou dobu čekání na povolení ke vstupu.[1]
Popis činnosti
Pokud je vykonáván kód kritické sekce, musí ostatní vlákna nebo procesy vyčkat. Proto je nutné použít nějaké synchronizační primitivum, které je vyvoláno při vstupu a následně též při výstupu z kritické sekce, například semafor nebo mutex.
Problém kritické sekce
Při řízení přístupu do kritické sekce musí být dodrženy tři podmínky:[1]
- výhradní přístup – vstup do kritické sekce je povolen nejvýše jednomu procesu
- vývoj – rozhodování o vstupu je pouze na procesech, které o něj usilují
- omezené čekání – rozhodnutí o vstupu nesmí být pro některého čekajícího odkládáno do nekonečna
Při usilování o vstup do kritické sekce mohou procesy použít aktivní čekání (neustále se pokoušejí vstoupit do kritické sekce). Pro odstranění aktivního čekání jsou některá synchronizační primitiva rozšířena o frontu čekajících procesů (typicky např. semafory).
Reference
- KOLÁŘ, Petr. Operační systémy [online]. Liberec: 2005-02-01 [cit. 2010-05-27]. S. 28–33. Dostupné online.