Динамическое повышение приоритета потока.

Windows может динамически повышать значение текущего приоритета потока в следующих случаях.

1. После завершения операций ввода/вывода.

2. По окончанию ожидания какого-либо события.

3. При пробуждении GUI потоков при выполнении операций с окнами.

4. Если поток готов к выполнению, но не хватает времени процессора.

Динамическое повышение приоритета потока предназначено для оптимизации общей пропуск-ной способности и повышения производительности системы. ОС Windows никогда динамически не повышает приоритет потоков диапазона RealTime (то есть от 16 до 31).

1. Динамическое изменение приоритета после завершения операций ввода/вывода. Величина динамического приращения определяется драйверами.

Устройство Приращение приоритета
HDD, CD-ROM, принтер, видеокарта
Сеть, почтовый ящик, именованный канал, устройства на COM
Клавиатура, мышь
Звуковая плата

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

приоритет

квант

H QsrQdOh0mPkBiW8ffnQ68ji20oz6zOHOyjRJHqTTPfGHTg+47rA51EenIOtX3/Xbi8lfN3a1Wx/8 5D7zrVK3N9PzE4iIU7zA8KvP6lCx094fyQRhFczTLGNUQZrMQTCwWKQ5iP3fQlal/N+g+gEAAP// AwBQSwECLQAUAAYACAAAACEAtoM4kv4AAADhAQAAEwAAAAAAAAAAAAAAAAAAAAAAW0NvbnRlbnRf VHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQA4/SH/1gAAAJQBAAALAAAAAAAAAAAAAAAAAC8BAABf cmVscy8ucmVsc1BLAQItABQABgAIAAAAIQCrgdOdZwIAAKEEAAAOAAAAAAAAAAAAAAAAAC4CAABk cnMvZTJvRG9jLnhtbFBLAQItABQABgAIAAAAIQBe+aVk3gAAAAkBAAAPAAAAAAAAAAAAAAAAAMEE AABkcnMvZG93bnJldi54bWxQSwUGAAAAAAQABADzAAAAzAUAAAAA " o:allowincell="f"> Снижение приоритета по

истечению кванта

r dZokV9phx/LQ4kD3LdUf670zEKoN7aqvWT1L3rLGU7p7eHpEY87PprtbUJGm+FeGH3xBh1KYtn7P NqjeQLrMrqVqYCki+WWaZaC2v16Xhf7PX34DAAD//wMAUEsBAi0AFAAGAAgAAAAhALaDOJL+AAAA 4QEAABMAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzXS54bWxQSwECLQAUAAYACAAAACEA OP0h/9YAAACUAQAACwAAAAAAAAAAAAAAAAAvAQAAX3JlbHMvLnJlbHNQSwECLQAUAAYACAAAACEA AUVEdFACAABdBAAADgAAAAAAAAAAAAAAAAAuAgAAZHJzL2Uyb0RvYy54bWxQSwECLQAUAAYACAAA ACEANVCVq9sAAAAHAQAADwAAAAAAAAAAAAAAAACqBAAAZHJzL2Rvd25yZXYueG1sUEsFBgAAAAAE AAQA8wAAALIFAAAAAA== " o:allowincell="f"/> повышение

приоритета

по окончании

ожидания

выполнение приоритет снижается

до базового

вытеснение

базовый

уровень выполнение ожидание

выполнение

Поток в течение одного кванта выполняется с повышенным уровнем приоритета, приоритет уменьшается на одну единицу и после чего потоку выделяется ещё один квант. Поток с более высоким приоритетом может вытеснить поток с повышенным приоритетом. Приращение приоритета никогда не будет больше 15, то есть если к потоку с приоритетом 14 применить динамическое повышение на 6 уровней, то его приоритет станет 15.

2. По окончанию ожидания какого-либо события. Действует аналогично пункту 1.

3. Динамическое повышение приоритета GUI потоков. Приоритет потоков, владеющих окнами динамически повышается на 2 уровня после их пробуждения. Приоритет повышается для создания преимуществ интерактивным приложениям.

4. Динамическое повышение приоритета при нехватке процессорного времени. Рассмотрим следующую ситуацию. Поток с приоритетом 7 постоянно вытесняет поток с приоритетом 4, не давая ему использовать процессор. Поток с приоритетом 11 ожидает какой-либо ресурс, забло-кированный потоком с приоритетом 4. Windows выполняет следующее.

Раз в секунду Windows сканирует очередь готовых потоков и ищет потоки, которые находятся в состоянии готовности более 300 тактов системного таймера, то есть 3-4 секунды. Обнаружив такой поток, Windows повышает его приоритет до 15, а Windows 2000 предоставляет ещё двойной квант времени. По истечению предоставленного кванта приоритет потока уменьшается до исходного уровня. Такая система имеет следующие ограничения.

· Windows сканирует только 16 готовых потоков. Если потоков, готовых к выполнению больше 16, то Windows запоминает тот поток, перед которым остановилась и в следующий раз продолжает сканирование именно с него.

· Windows повышает приоритет до 15 не более, чем у 10 потоков за один проход. Если обнаружится 10 таких потоков, то остальные 6 не сканируются.

20. Синхронизация процессов и потоков. Объекты синхронизации. Синхронизация потоков без использования объектов синхронизации

Синхронизация.

Впервые появилась в W32. Синхронизация – это средство, позволяющее реализовать вытесняющую многозадачность, то есть реализовать переключение программ в любой момент времени. Синхронизация может выполняться в пользовательском режиме: критические секции и функции Interlocked.

В режиме ядра для синхронизации используются следующие объекты: события, семафоры, мьютексы.

В Windows 2000 появился новый объект – ожидающий таймер.

Cинхронизация может выполняться с помощью таких объектов ядра, как процессы, потоки, задания, файлы. Оповещение об изменениях файловой системы, CON ввод/вывод. Синхронизация используется для единоличного доступа к ресурсам и для оповещения о каких-либо событиях, например, когда необходима синхронизация – это работа с базой данных. В тот момент когда происходит запись, то другие операции должны быть заблокированы.

Пример, для оповещения событий. Процесс состоит из двух потоков.

Поток 1 считывает данные с файда, поток 2 выводит на экран. Естественно поток 2 ожидает выполнение потока 1.

Наши рекомендации