Preempce (informatika)
Preempce je v informatice přerušení právě vykonávaného procesu (úlohy) bez toho, aby byla vyžadována jeho spolupráce. Přerušená úloha je pozastavena, nahrazena jinou úlohou a později je pomocí stejného mechanismu její činnost opět obnovena. Střídání úloh na procesoru se nazývá multitasking a jejich výměna pak změna kontextu (context switch). Zajišťuje ji privilegovaná úloha (nejčastěji jádro operačního systému). Rozhodování o tom, která úloha bude spuštěna se nazývá plánování procesů a vykonává ji plánovač (scheduler), který je součástí moderních operačních systémů (řada Windows NT, Linux, macOS a další). Preemptivní multitasking umožňuje využívání víceuživatelských systémů.
Preempce a multitasking
Preemptivní multitasking využívá preempci tak, aby běžný proces nemohl změně kontextu zabránit. Využívá k tomu hardwarové schopnosti procesorů (zejména privilegovaný režim a ochranu paměti). Pokud proces může preempci zabránit, označujeme to za nepreemptivní multitasking (například Mac OS, NetWare). Z marketingových důvodů je někdy nepreemptivní multitasking označován jinými termíny, například jako kooperativní multitasking (16bitové systémy Windows 3.x).
Preemptivní jádro
Preemptivní jádro operačního systému je takové, které dovoluje změnu kontextu i v případě, že se vykonávání přerušeného procesu nachází právě uvnitř jádra operačního systému (je prováděno systémové volání), což snižuje latenci systému. Preemptivní jádra mají prakticky všechny moderní systémy (řada Windows NT, Linux, některé BSD systémy, a další).
Specifickým (a jednodušším) způsobem dosahují preemptivnosti mikrojádra, u kterých je řada úkolů operačního systému řešena v uživatelském prostoru běžnými procesy, které je možné snadno přerušit.
Související články
- Multitasking
- Kernel – jádro operačního systému
- Preemptivní válka