Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Планировщик поддерживает отдельные очереди исполняемых потоков для каждого уровня приоритета. Эти потоки называются готовыми потоками. Когда процессор становится доступным, система выполняет переключение контекста. Ниже приведены действия в переключении контекста.
- Сохраните контекст потока, который был предварительно или добровольно получен процессором.
- Если поток остается в состоянии готовности, поместите его в конец очереди для его уровня приоритета.
- Найдите очередь с высоким приоритетом, содержащую готовые потоки.
- Удалите поток в головной части очереди, восстановите его контекст и возобновляйте выполнение.
Следующие классы потоков не готовы.
- Потоки, созданные с помощью флага CREATE_SUSPENDED
- Потоки остановлены во время выполнения с помощью функции SuspendThread или SwitchToThread
- Потоки, ожидающие объекта синхронизации или входных данных.
Пока потоки, которые приостановлены или заблокированы, становятся готовыми к выполнению, планировщик не выделяет для них время процессора независимо от их приоритета.
Наиболее распространенными причинами переключения контекста являются:
- Срез времени истек.
- Поток с более высоким приоритетом стал готов к выполнению.
- Выполняющийся поток должен ждать.
Когда выполняющийся поток должен ждать, он откажется от оставшейся части времени.