logo search
ZH ос 20 вопр 36 стр

7. Распределение времени между потоками. Классы приоритета. Уровни приоритета. Относительный уровень приоритета потока.

Управление потоками.

  1. Планирование потоков.

  2. Синхронизация потоков.

В Windows реализована подсистема вытесняющего планирования на основе уровней приоритета. Всегда выполняется поток с наивысшим приоритетом к выполнению. Выбранный для выполнения поток работает в течение некоторого периода называемого квантом. После того, как истёк квант времени ОС будет искать другой поток с таким же уровнем приоритета или выше. Если таких нет, то ищет с меньшим приоритетом. В Windows 2000 потокам могут выделяться разные кванты времени. Поток также может не полностью использовать свой квант. Как только другой поток с более высоким приоритетом готов к выполнению, текущий поток вытесняется даже если его квант не истёк.

Совокупность процедур, выполняющих планирование называется диспетчером ядра.

Диспетчер ядра инициализируется следующими событиями.

  1. Поток готов к выполнению, например, он только что создан.

  2. Поток прекращает выполнение, когда его квант истёк или поток завершается, или поток переходит в состояние ожидания.

  3. Приоритет потока изменяется, например, в результате вызова системного сервиса.

  4. Изменяется привязка к процессорам выполняемого потока.

В любом из этих четырёх случаев Windows должна определить, какой поток должен выполняться следующим.

Выбрав новый поток Windows включает CONTEXT, текущее содержание регистров процессора переписывается в структуру CONTEXT, которая находится в TDB (ETHREAD).

Планирование в Windows осуществляется на уровне потоков, то есть ОС не волнует то, какому процессу принадлежит тот или иной поток.

Пример. Если у процесса А – 12 потоков, а у В – 2 потока, и все 14 потоков имеют один и тот же приоритет, то каждый поток получит 1/14 времени процессора. Windows не будет делить поровну время процессора между двумя процессами.