Környezeti kapcsolók

Az ütemező minden prioritási szinthez külön végrehajtható szálsorokat tart fenn. Ezeket a szálakat kész szálaknak nevezzük. Amikor egy processzor elérhetővé válik, a rendszer környezeti kapcsolót hajt végre. A környezeti kapcsoló lépései a következők:

  1. Mentse a processzor által előre megadott vagy önként megadott szál kontextusát.
  2. Ha a szál kész állapotban marad, helyezze az üzenetsor végére a prioritási szinthez.
  3. Keresse meg a kész szálakat tartalmazó legmagasabb prioritású üzenetsort.
  4. Távolítsa el a szálat az üzenetsor elején, állítsa vissza a környezetét, és folytassa a végrehajtást.

A következő szálosztályok nem állnak készen a szálakra.

  • A CREATE_SUSPENDED jelzővel létrehozott szálak
  • A végrehajtás során leállt szálak a SuspendThread vagy a SwitchToThread függvénnyel
  • Szinkronizálási objektumra vagy bemenetre váró szálak.

Amíg a felfüggesztett vagy letiltott szálak nem lesznek futtathatók, az ütemező nem foglal le processzoridőt számukra, függetlenül azok prioritásától.

A környezeti kapcsoló leggyakoribb okai a következők:

  • Eltelt az időszelet.
  • A magasabb prioritású szálak készen állnak a futtatásra.
  • Egy futó szálnak várnia kell.

Ha egy futó szálnak várnia kell, lemondja az időszelet fennmaradó részét.