Граф состояний потоков в MS Windows 2000-2003. Особенности планирования в ОС MS Windows Vista и Server 2008.

18.2 Особенности планирования в ОС MS Windows Vista и Server 2008.

 

Проблема неравномерного распределения ресурсов процессора:

Все версии ОС Windows собирают статистику загрузки процессора, для этого каждые 10 или 15 мс (в зависимости от аппаратной платформы), выполняетcя подпрограмма прерывания интервального таймера.

Данная подпрограмма обновляет статистику загрузки процессора потоком, который был ею прерван. При этом в версиях ОС Windows младше Vista и Server 2008 считается, что этот поток выполнялся весь интервал, хотя в действительности выполнение потока могло начаться перед самым завершением данного интервала.

Далее возможна ситуация, когда поток может формально получить ресурсы процессора, но не получить возможности выполняться, поскольку вместо этого могли быть выполнены подпрограммы аппаратного или программного прерывания.

Таким образом, использование подобного механизма сбора статистики загрузки процессора может приводить к нерациональному распределению ресурсов самого процессора.

 

Рассмотрим случай, если два потока с одинаковым приоритетом одновременно готовы к выполнению:

Поток A выполняется до завершения следующего временного интервала, когда планировщик предполагает, что он выполнялся в течение всего интервала, и поэтому решает, что очередь потока A закончилась. Более того, потоку A засчитывается еще и прерывание, произошедшее во время его выполнения.

На следующий интервал планировщик отдает предпочтение потоку B, который выполняется в течение полного интервала.

Усовершенствования ядра ОС Windows Vista – Server 2008:

В ОС Windows Vista и Server 2008 для более равномерного выделения ресурсов вводится использование счетчика циклов процессора.

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

Это означает, что поток в ОС Windows Vista и Server 2008 всегда получит, по крайней мере, свою очередь выполнения, не превышающую один дополнительный временной интервал, что обеспечивает более справедливое выделение ресурсов и предсказуемое поведение приложений.

Решение неравномерного распределения ресурсов ЦП:

На рисунке показан пример решения описанной ситуации неравномерного распределения ресурсов ЦП - ядро Windows Vista выделяет обоим потокам как минимум, по одному временному интервалу выполнения.