К Т П           План занятия                                                              1                                           Страницы  | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 |

5. Приоритеты потоков

Теперь перейдем к приоритетам потоков, задание которых в Windows довольно запутанное. Приоритет потока, который учитывается системой при выделении потокам процессорного времени, называется базовым (base) или основным приоритетом потока. Всего существует 32 базовых приоритета — от 0 до 31. Для каждого базового приоритета существует очередь потоков. При диспетчеризации потоков квант процессорного времени выделяется потоку, который стоит первым в очереди с наивысшим базовым приоритетом. Базовый приоритет потока определяется как сумма приоритета процесса и уровня приоритета потока, который может принимать одно из следующих значений, которые разобьем на две группы.

Первая состоит из:
- THREAD PRIORITY LOWEST — низший приоритет;
- thread priority below normal — приоритет ниже нормального;
- THREAD PRIORITY NORMAL — нормальный приоритет;
- thread priority above normal — приоритет выше нормального;
- THREAD PRIORITY HIGHEST — высший приоритет.

Вторая:
- thread priority idle — приоритет фонового потока;
- thread_priority_time_critical — приоритет потока реального времени.

Значения уровня приоритета потока из первой группы в сумме с приоритетом процесса, в контексте которого этот поток выполняется, уменьшают, оставляют неизменным или увеличивают значение базового приоритета потока соответственно на величину —2, —1,0, 1,2. Уровень приоритета потока thread priority idle устанавливает базовый приоритет потока равным 16, если приоритет процесса, в контексте которого выполняется поток, равен real_time_priority_class, и 1 — в остальных случаях. Уровень приоритета потока threadprioritytimecritical устанавливает базовый приоритет потока равным 31, если приоритет процесса, в контексте которого выполняется поток, равен real_time_priority_class, и 15 — в остальных случаях.
В табл. 4.1 приведены базовые приоритеты потоков в зависимости от приоритета процесса и уровня приоритета потока.

Таблица 4.1. Базовые приоритеты потоков

  Real time High Above normal Normal      Below normal   Idle
Time critical 31 15 15 15 15 15
Highest 26 15 12 10 8 6
Above normal 25 14 11 9 7 5
Normal 24 13 10 8 6 4
Below normal 23 12 9 7 5 3
Lowest 22 11 8 6 4 2
Idle 16 1 1 1 1 1

В этой таблице по столбцам указаны приоритеты классов процессов, а по строкам — уровни приоритетов потоков.


Предыдущая        В начало страницы       Следующая
5