Классы приоритета процессов

Windows поддерживает шесть классов приоритета:

-idle (простаивающий),

-below normal (ниже обычного),

-normal (обычный),

-above normal (выше обычного),

-high (высокий),

-realtime (реального времени).

Самый распространенный класс приоритета – normal, его использует 99% приложений.

Real-lime. Потоки в этом процессе обязаны немедленно реагировать на события, обеспечивая выполнение критических по времени задач. Такие потоки вытесняют даже компоненты операционной системы.

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

Above normal. Класс приоритета, промежуточный между normal и high. Это новый класс, введенный в Windows 2000.

Normal. Потоки в этом процессе не предъявляют особых требований к выделению им процессорного времени.

Below normal. Класс приоритета, промежуточный между normal и idle. Это новый класс, введенный в Windows 2000.

Idle. Потоки в этом процессе выполняются, когда система не занята другой работой. Этот класс приоритета обычно используется для утилит, работающих в фоновом режиме, экранных заставок и приложений, собирающих статистическую информацию.

Относительный приоритет потока.

Могут быть следующие относительные приоритеты потока.

Time-critical. Поток выполняется с приоритетом 31 в классе real-time и с приоритетом 15 в других классах.

Highest. Поток выполняется с приоритетом на два уровня выше обычною для данного класса.

Above normal. Поток выполняется с приоритетом на один уровень выше обычного для данного класса.

Normal. Поток выполняется с обычным приоритетом процесса для данного класса.

Below normal. Поток выполняется с приоритетом на один уровень ниже обычного для данного класса.

Lowest. Поток выполняется с приоритетом на два уровня ниже обычного для данного класса

Idle. Поток выполняется с приоритетом 16 в классе real-time и с приоритетом 1 в других классах

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

В системе предусмотрена возможность изменения класса приоритета самим выполняемым процессом – вызовом функции SetPriorityClass:

BOOL SetPriontyClass(HANDLE hProcess, DWORD fdwPriority);

Эта функция меняет класс приоритета процесса, определяемого описателем hProcess, в соответствии со значением параметра fdwPriority.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: