Common Intermediate Language и системное программирование в Microsoft.Net. Макаров А.В - 105 стр.

UptoLike

рис. 6.9 дан формат этого параметра для Windows 2000-2003, а в таблице
6.1 приводятся длительности квантов в условных единицах для разных
значений полей параметра Win32PrioritySeparation.
Рис. 6.9. Управление квантованием в Windows (длительность кванта
показана в табл. 6.1)
Таблица 6.1. Длительность кванта
Этот параметр может быть изменен с помощью панели управления,
однако, лишь в очень ограниченных рамках:
«System Properties|Advanced|Performance:Settings|Advanced|Adjust for
best performance of:» позволяет выбрать только:
«applications»
короткие кванты переменной длины, значение 0x26 т.е. 10 01 10 (ко-
роткие кванты переменной длительности, 18 ед.).
Основы многозадачности
197
При выборе потока для выполнения учитываются приоритеты пото-
ков (абсолютные приоритеты) – система начинает выполнять код потока
с наибольшим приоритетом из числа готовых к исполнению.
Процесс выбора потока для выполнения усложняется в случае SMP
систем, когда помимо приоритета готового к исполнению потока учиты-
вается, на каком процессоре ранее выполнялся код данного потока.
В Windows выделяют понятие «идеального» процессора – им назна-
чается процессор, на котором запускается приложение в первый раз. В
дальнейшем система старается выполнять код потока именно на этом про-
цессоре – для SMP систем это решение улучшает использование кэш-па-
мяти, а для NUMA систем позволяет, по большей части, ограничиться ис-
пользованием оперативной памяти, локальной для данного процессора.
Заметим, что диспетчер памяти Windows при выделении памяти для запу-
скаемого процесса старается учитывать доступность памяти для назначен-
ного процессора в случае NUMA системы.
В многопроцессорной системе используется либо первый простаива-
ющий процессор, либо, при необходимости вытеснения уже работающего
потока, проверяются идеальный процессор, последний использовавший-
ся и процессор с наибольшим номером. Если на одном из них работает по-
ток с меньшим приоритетом, то последний вытесняется и заменяется но-
вым потоком; в противном случае выполнение потока откладывается (да-
же если в системе есть процессоры, занятые потоками с меньшим приори-
тетом).
Современные реализации Windows в рамках единого дерева кодов
могут быть использованы для различных классов задач – от рабочих стан-
ций, обслуживающих преимущественно интерфейс пользователя, до сер-
верных установок на многопроцессорных машинах. Чтобы можно было
эффективно использовать одну ОС в столь разных классах систем, плани-
ровщик Windows динамически изменяет длительность квантов и приори-
теты, назначаемые потокам. Администратор системы может в некоторой
степени изменить поведение системы при назначении длительности кван-
тов и приоритетов потоков.
6.1.2.1. Управление квантованием
Квантование потоков осуществляется по тикам системного таймера,
продолжительность одного тика составляет обычно 10 или 15 мс, больший
по продолжительности тик назначают многопроцессорным машинам. Ка-
ждый тик системного таймера соответствует 3 условным единицам; вели-
чина кванта может варьироваться от 2 до 12 тиков (от 6 до 36 единиц).
Параметр реестра
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\
Win32PrioritySeparation предназначен для управления квантованием. На
196
CIL и системное программирование в Microsoft .NET
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation
... 5 4 3 2 1 0
Динамическое приращение длительности кванта
допустимые значения 0, 1 и 2
1 := переменная длительность кванта
2 := фиксированная длительность кванта
0 или 3 := значения по умолчанию
(1 для рабочих станций и 2 для серверов)
1 := длинный квант
2 := короткий квант
0 или 3 := значения по умолчанию
(1 для рабочих станций и 2 для серверов)
Короткий квант Длинный квант
Значение младших 2-х бит 0 1 2 0 1 2
параметра Win32PrioritySeparation
Переменная длительность 6 12 18 12 24 36
Фиксированная длительность 18 18 18 36 36 36
196                        CIL и системное программирование в Microsoft .NET   Основы многозадачности                                                        197


     При выборе потока для выполнения учитываются приоритеты пото-             рис. 6.9 дан формат этого параметра для Windows 2000-2003, а в таблице
ков (абсолютные приоритеты) – система начинает выполнять код потока            6.1 приводятся длительности квантов в условных единицах для разных
с наибольшим приоритетом из числа готовых к исполнению.                        значений полей параметра Win32PrioritySeparation.
     Процесс выбора потока для выполнения усложняется в случае SMP
систем, когда помимо приоритета готового к исполнению потока учиты-             HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation
вается, на каком процессоре ранее выполнялся код данного потока.
     В Windows выделяют понятие «идеального» процессора – им назна-                ...        5   4       3   2       1    0
чается процессор, на котором запускается приложение в первый раз. В
дальнейшем система старается выполнять код потока именно на этом про-
цессоре – для SMP систем это решение улучшает использование кэш-па-                               Динамическое приращение длительности кванта
мяти, а для NUMA систем позволяет, по большей части, ограничиться ис-                             допустимые значения 0, 1 и 2
пользованием оперативной памяти, локальной для данного процессора.
Заметим, что диспетчер памяти Windows при выделении памяти для запу-                              1 := переменная длительность кванта
скаемого процесса старается учитывать доступность памяти для назначен-                            2 := фиксированная длительность кванта
ного процессора в случае NUMA системы.                                                            0 или 3 := значения по умолчанию
     В многопроцессорной системе используется либо первый простаива-                                         (1 для рабочих станций и 2 для серверов)
ющий процессор, либо, при необходимости вытеснения уже работающего
потока, проверяются идеальный процессор, последний использовавший-                                1 := длинный квант
ся и процессор с наибольшим номером. Если на одном из них работает по-                            2 := короткий квант
ток с меньшим приоритетом, то последний вытесняется и заменяется но-                              0 или 3 := значения по умолчанию
вым потоком; в противном случае выполнение потока откладывается (да-                                         (1 для рабочих станций и 2 для серверов)
же если в системе есть процессоры, занятые потоками с меньшим приори-
тетом).                                                                             Рис. 6.9. Управление квантованием в Windows (длительность кванта
     Современные реализации Windows в рамках единого дерева кодов                   показана в табл. 6.1)
могут быть использованы для различных классов задач – от рабочих стан-
ций, обслуживающих преимущественно интерфейс пользователя, до сер-                  Таблица 6.1. Длительность кванта
верных установок на многопроцессорных машинах. Чтобы можно было                                                       Короткий квант       Длинный квант
эффективно использовать одну ОС в столь разных классах систем, плани-
                                                                               Значение младших 2-х бит               0    1     2         0   1     2
ровщик Windows динамически изменяет длительность квантов и приори-
теты, назначаемые потокам. Администратор системы может в некоторой             параметра Win32PrioritySeparation
степени изменить поведение системы при назначении длительности кван-           Переменная длительность                 6       12   18     12     24    36
тов и приоритетов потоков.                                                     Фиксированная длительность             18       18   18     36     36    36

6.1.2.1. Управление квантованием                                                     Этот параметр может быть изменен с помощью панели управления,
     Квантование потоков осуществляется по тикам системного таймера,           однако, лишь в очень ограниченных рамках:
продолжительность одного тика составляет обычно 10 или 15 мс, больший                «System Properties|Advanced|Performance:Settings|Advanced|Adjust for
по продолжительности тик назначают многопроцессорным машинам. Ка-              best performance of:» позволяет выбрать только:
ждый тик системного таймера соответствует 3 условным единицам; вели-           «applications»
чина кванта может варьироваться от 2 до 12 тиков (от 6 до 36 единиц).                короткие кванты переменной длины, значение 0x26 т.е. 10 01 10 (ко-
     Параметр реестра                                                                роткие кванты переменной длительности, 18 ед.).
HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\
Win32PrioritySeparation предназначен для управления квантованием. На