Процессы в Windows - Приоритеты
ОГЛАВЛЕНИЕ
Приоритеты
В Windows существует 32 уровня приоритета, от 0 до 31. Они группируются так: 31 - 16 уровни реального времени; 15 - 1 динамические уровни; 0 - системный уровень, зарезервированный для потока обнуления страниц (zero-page thread).
При создании процесса, ему назначается один из шести классов приоритетов:
Real time class (значение 24),
High class (значение 13),
Above normal class (значение 10),
Normal class (значение 8),
Below normal class (значение 6),
и Idle class (значение 4).
В Windows NT/2000/XP можно посмотреть приоритет процесса в Task Manager.
Above normal и Below normal появились начиная с Win2000. |
Приоритет каждого потока (базовый приоритет потока) складывается из приоритета его процесса и относительного приоритета самого потока. Есть семь относительных приоритетов потоков:
Normal: такой же как и у процесса;
Above normal: +1 к приоритету процесса;
Below normal: -1;
Highest: +2;
Lowest: -2;
Time critical: устанавливает базовый приоритет потока для Real time класса в 31, для остальных классов в 15.
Idle: устанавливает базовый приоритет потока для Real time класса в 16, для остальных классов в 1.
В следующей таблице показаны приоритеты процесса, относительный и базовый приоритеты потока.
Приоритет потока | Класс процесса | Класс процесса | |||||
Idle class | Below normal class | Normal class | Above normal class | High class | Real time class | ||
1 | Idle | Idle | Idle | Idle | Idle | ||
2 | Lowest | ||||||
3 | Below ... | ||||||
4 | Idle class | Normal | Lowest | ||||
5 | Above ... | Below ... | |||||
6 | Below normal class | Highest | Normal | Lowest | |||
7 | Above ... | Below ... | |||||
8 | Normal class | Highest | Normal | Lowest | |||
9 | Above ... | Below ... | |||||
10 | Above normal class | Highest | Normal | ||||
11 | Above ... | Lowest | |||||
12 | Highest | Below ... | |||||
13 | High class | Normal | |||||
14 | Above ... | ||||||
15 | Highest | ||||||
15 | Time critical | Time critical | Time critical | Time critical | Time critical | ||
16 | Idle | ||||||
17 | |||||||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | Lowest | ||||||
23 | Below ... | ||||||
24 | Real time class | Normal | |||||
25 | Above ... | ||||||
26 | Highest | ||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | Time critical |
Привязка к процессорам
Если операционная система выполняется на машине, где установлено более одного процессора, то по умолчанию, поток выполняется на любом доступном процессоре. Однако в некоторых случаях, набор процессоров, на которых поток может работать, может быть ограничен. Это явление называется привязкой к процессорам (processor affinity). Можно изменить привязку к процессорам программно, через Win32-функции планирования.