logo
АВМиС - бывшее АПЭВМ / apvem / всякаявсячина

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

Уровни приоритета созданным потокам присваивает сама система, и делается это в два этапа. 1. процессу присваивается определенный класс приоритета, который говорит системе, какой приоритет нужен данному процессу по сравнению с другими выполняемыми процессами. 2. потокам, принадлежащим этому процессу, присваиваются относительные уровни приоритета. 4 класса приоритетов: idle (простаивающий), normal (обычный), high (высокий) и realtime (реального времени).

Класс Флаг в CreateProcess Уровень

Idle IDLE_PRIORITY_CLASS 4

Normal NORMAL_PRIORITY_CLASS 8

High HIGH_PRIORITY_CLASS 13

Realtime REALTIME PRIORITY CLASS 24

Любой поток, созданный в процессе с обычным классом приоритета, получает уровень приоритета 8. Когда пользователь работает с каким-то процессом, тот считается активным (foreground), а остальные процессы — фоновыми (background). Программы, запускаемые пользователем, в основном относятся к приложениям с обычным классом приоритета. В Windows NT, когда обычный процесс становится активным, система увеличивает кванты времени, выделяемые всем его потокам. В Windows 95, когда обычный процесс становится активным, система поступает иначе — повышает приоритет потока на 1, т. е. уровень приоритета потока увеличивается с 8 до 9. А когда процесс «уходит» в фон, приоритет потока автоматически снижается на 1. Причина таких изменений в активных процессах: система добивается того, чтобы они быстрее реагировали на пользовательский ввод. Система повышает уровни при­оритета активного процесса, они вытесняют потоки обычных процессов, работающих в фоновом режиме.

Приоритет idle идеален для приложений, занимающихся мониторингом системы (экранная заставка). Мониторинг незачем вести при очень высоком приоритете — достаточно и низкого, т. е. idle.

Класс приоритета high следует использовать только при крайней необходимости (Explorer - большую часть времени его потоки простаивают, готовые пробудиться, как только пользователь на жмет какую-нибудь клавишу или щелкнет кнопку мыши. Пока потоки Explorer простаивают, система не выделяет им процессорного времени, что позволяет выполнять потоки с низким приоритетом).

Флагом четвертого по счету класса приоритета — REALTIME_PRIORI TY_CLASS — почти никогда не стоит пользоваться. Так, системные потоки, контролирующие мышь и клавиатуру, фоновый сброс данных на диск и перехват Alt+Ctrl+Del, — все они оперируют при более низком классе приоритета. Класс приоритета realtime используют только в программе, напрямую обращающейся к оборудованию, или если приложение выполняет быстротечную операцию, которую нельзя прерывать ни при каких обстоятельствах