Программирование для Windows NT

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


При запуске процесса с помощью функции CreateProcess (которая будет рассмотрена позже), ему можно назначить один из четырех классов приоритета:

Класс приоритета

Уровень приоритета

REALTIME_PRIORITY_CLASS

24 - процессы реального времени



HIGH_PRIORITY_CLASS

13 - высокоприоритетные процессы

NORMAL_PRIORITY_CLASS

9 или 7 - обычные процессы

IDLE_PRIORITY_CLASS

4 - низкоприоритетные процессы

Когда приоритет процесса не указывается, то по умолчанию он получает приоритет класса NORMAL_PRIORITY_CLASS. Если это приложение работает в фоновом режиме, операционная система снижает его уровень приоритета до 7, если же окно приложения выдвигается на передний план - увеличивает до 9. Таким образом уровень приоритета приложения, с которым в данный момент работает пользователь, автоматически увеличивается.

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

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

Что же касается класса приоритета REALTIME_PRIORITY_CLASS, то он должен использоваться только системными процессами или драйверами. В противном случае будет блокирована работа клавиатуры и мыши, так как они обслуживаются с меньшим уровнем приоритета, чем приоритет классса REALTIME_PRIORITY_CLASS.



Содержание раздела