Sdílet prostřednictvím


Kontextové přepínače

Plánovač udržuje samostatné fronty spustitelných vláken pro každou úroveň priority. Tato vlákna se označují jako připravená vlákna. Jakmile bude procesor dostupný, systém provede kontextový přepínač. Postup v kontextovém přepínači:

  1. Uložte kontextvláknaho systému nebo dobrovolně.
  2. Pokud vlákno zůstane v připraveném stavu, umístěte ho na konec fronty pro úroveň priority.
  3. Najděte frontu s nejvyšší prioritou, která obsahuje připravená vlákna.
  4. Odeberte vlákno v záhlaví fronty, obnovte jeho kontext a obnovte provádění.

Následující třídy vláken nejsou připraveny vlákna.

  • Vlákna vytvořená pomocí příznaku CREATE_SUSPENDED
  • Vlákna se zastavila během provádění pomocí funkce SuspendThread nebo SwitchToThread .
  • Vlákna čekající na synchronizační objekt nebo vstup

Dokud nebudou vlákna, která jsou pozastavena nebo blokována, připravena ke spuštění, plánovač nepřidělí žádný čas procesoru, bez ohledu na jejich prioritu.

Mezi nejběžnější důvody přepnutí kontextu patří:

  • Časový řez uplynul.
  • Vlákno s vyšší prioritou je připravené ke spuštění.
  • Spuštěné vlákno musí počkat.

Když spuštěné vlákno potřebuje počkat, přepojí zbytek časového řezu.