V minulém díle jsem řekl, že scheduler balancuje čas procesoru mezi všemi běžícími programy.

Co ale OS dělá, když jsou všechny instrukce splněny včas a už nejsou žádné instrukce, které by mohly v procesoru běžet? Nezapomeňte na to, že pokud by procesoru instrukce došly, počítač by se nejspíš vypnul nebo restartoval.

V tom případě procesor přidělí čas procesoru jedné své vlastní speciální úloze, které se říká idle task.

Idle task reálně nic nedělá a toto “nicnedělání” dělá do nekonečna. Tato úloha má nejnižší možnou prioritu a jejím účelem je zaplnit procesor nějakými “nicnedělajícími” instrukcemi do té doby, dokud nenastane čas pro zpracování instrukcí pro další proces. Toto balancování probíhá každou chvíli, v mikrosekundových intervalech!

Instrukce pro “nicnedělání”

Jedna z procesorových instrukcí, kterou idle task úlohy mohou využívat, je NOP instrukce, kterou jsem již popisoval. Účelem této instrukce je právě nic nedělat a OS ji mohou využít v případě, kdy veškeré ostatní procesy již byly zpracovány.

U moderních procesorů se však využívají specializované instrukce HALT nebo MWAIT které jsou schopné procesor pozastavit - nebo dokonce jej přepnout do nějakého “úsporného režimu” 1 - na krátký časový interval nebo do té doby, dokud procesor nezaznamená signál pro přerušení (ať už hardwarový nebo softwarový) nebo jinou událost jako zápis do paměti a podobně.


  1. To není totéž, jako když přepnete PC do úsporného režimu. V takovém případě je procesor reálně vypnutý ale základní deska je zapnutá a hlídá, jestli jste třeba nepohli myší, nezmáčkli klávesu na klávesnici a podobně. ↩︎