Динамическое повышение приоритета потока.
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.