Планирование загрузки однопроцессорной системы.

 

Планирование загрузки процессорного времени:

- В Windows реализована вытесняющая многозадачность, при которой ОС не ждет, когда поток сам захочет освободить процессор, а принудительно снимает его с выполнения после того, как тот израсходовал отведенное ему время (квант), или если в очереди готовых появился поток с более высоким приоритетом (дисциплина обслуживания с абсолютными приоритетами).

- Планировщик всегда выбирает из очереди поток с наивысшим приоритетом; если сразу несколько потоков имеют одинаковый приоритет, планировщик предоставляет квант процессорного времени каждому из них по очереди.

- Если поток по каким-то причинам преждевременно перестает быть активным (например, когда останавливается в ожидании завершения операции ввода/вывода), ядро Windows вызывает планировщик для поиска следующего потока, которому можно передать управление процессором.

- Если поток выбирает весь отведенный ему квант времени, ядро Windows вызывает планировщик с тем, чтобы другие потоки также могли выполнять свою работу. Переключение процессора с выполнения команд одного потока на выполнение команд другого называют переключением контекста.

 

Квантование времени:

ОС выделяет потокам кванты времени по принципу карусели.

Чтобы все эти потоки работали, ОС отводит каждому из них определенное процессорное время. Выделяя потокам кванты времени по принципу карусели, она создает тем самым иллюзию одновременного выполнения потоков.

Слайд иллюстрирует распределение процессорного времени между потоками на машине с одним процессором. Если в машине установлено более одного процессора, алгоритм работы ОС значительно усложняется (в этом случае система стремится сбалансировать нагрузку между процессорами).

 

 

По умолчанию в Windows 2000 Professional и Windows ХР потоки выполняются в течение 2 интервалов таймера (clock intervals), а в системах Windows Server 2000, 2003 – 12 интервалов таймера.

В зависимости от конкретной аппаратной платформы, интервал таймера составляет примерно 10 или 15 мс.

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

15.3 Относительные приоритеты потоков.

Относительный приоритет потока Описание
Time-critical Поток выполняется с приоритетом 31 в классе real-time и с приоритетом 15 в других классах
Highest Поток выполняется с приоритетом на два уровня выше обычною для данного класса
Above normal Поток выполняется с приоритетом на один уровень выше обычного для данного класса
Normal Поток выполняется с обычным приоритетом процесса для данного класса
Below normal Поток выполняется с приоритетом на один уровень ниже обычного для данного класса
Lowest Поток выполняется с приоритетом на два уровня ниже обычного для данного класса
Idle Поток выполняется с приоритетом 16 в классе real-time и с приоритетом 1 в других классах

 

Иллюстрация по приоритетам для Windows 2000:

ü Нулевой приоритет зарезервирован для потока обнуления страниц

ü Приоритеты 17-21 и 27-30 могут использоваться только при написании драйвера, работающего в режиме ядра.

 

15.4 Динамическое изменение приоритетов.

 

Базовый и динамический приоритеты потока:

- Уровень приоритета, получаемый комбинацией относительного приоритета потока и класса приоритета процесса, которому принадлежит данный поток, называют базовым уровнем приоритета потока. Иногда система изменяет уровень приоритета потока.

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

- Система повышает приоритет только тех потоков, базовый уровень которых находится в пределах 1-15. Именно поэтому данный диапазон называется "областью динамического приоритета" (dynamic priority range). Система не допускает динамического повышения приоритета потока до уровней реального времени (более 15). Поскольку потоки с такими уровнями обслуживают системные функции, это ограничение не дает приложению нарушить работу ОС. И, кстати, система никогда не меняет приоритет потоков с уровнями реального времени (от 16 до 31).

Динамические приоритеты:

 

В ходе выполнения нити ее приоритет (1-15) может меняться – механизм адаптивного планирования.