Страница 3 из 15 Приоритеты
В 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-функции планирования. |