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.

Související informace naleznete také v článku Synchronizační primitivum.

Problém kritické sekce

Při řízení přístupu do kritické sekce musí být dodrženy tři podmínky:[1]

  1. výhradní přístup – vstup do kritické sekce je povolen nejvýše jednomu procesu
  2. vývoj – rozhodování o vstupu je pouze na procesech, které o něj usilují
  3. 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

  1. a b KOLÁŘ, Petr. Operační systémy [online]. Liberec: 2005-02-01 [cit. 2010-05-27]. S. 28–33. Dostupné v archivu pořízeném dne 2014-07-14. 

Související články