Книга: 2.Внутреннее устройство Windows (гл. 5-7)
Динамическое повышение приоритета
Динамическое повышение приоритета
Windows может динамически повышать значение текущего приоритета потока в одном из пяти случаев:
• после завершения операций ввода-вывода;
• по окончании ожидания на событии или семафоре исполнительной системы;
• по окончании операции ожидания потоками активного процесса;
• при пробуждении GUI-потоков из-за операций с окнами;
• если поток, готовый к выполнению, задерживается из-за нехватки процессорного времени.
Динамическое повышение приоритета предназначено для оптимизации общей пропускной способности и отзывчивости системы, а также для устранения потенциально «нечестных» сценариев планирования. Однако, как и любой другой алгоритм планирования, динамическое повышение приоритета — не панацея, и от него выигрывают не все приложения.
ПРИМЕЧАНИЕ Windows никогда не увеличивает приоритет потоков в диапазоне реального времени (16–31). Поэтому планирование таких потоков по отношению к другим всегда предсказуемо. Windows считает: тот, кто использует приоритеты реального времени, знает, что делает.
- Внутреннее устройство процессов
- Структуры данных
- Переменные ядра
- Счетчики производительности
- Сопутствующие функции
- Что делает функция CreateProcess
- Этап 1: открытие образа, подлежащего выполнению
- Этап 2: создание объекта «процесс»
- Этап 2A: формирование блока EPROCESS
- Этап 2B: создание начального адресного пространства процесса
- Этап 2C: создание блока процесса ядра
- Этап 2D: инициализация адресного пространства процесса
- Этап 2E: формирование блока PEB
- Этап 2F: завершение инициализации объекта «процесс» исполнительной системы
- Этап 3: создание первичного потока, его стека и контекста
- Этап 4: уведомление подсистемы Windows о новом процессе
- Этап 5: запуск первичного потока
- Этап 6: инициализация в контексте нового процесса
- Сборки, существующие в нескольких версиях
- Внутреннее устройство потоков
- Структуры данных
- Адрес Идентификатор ETHREAD потока Адрес TEB
- Переменные ядра
- Счетчики производительности
- Сопутствующие функции
- Рождение потока
- Наблюдение за активностью потоков
- Планирование потоков
- Обзор планирования в Windows
- Уровни приоритета
- Функции Windows API, связанные с планированием
- Сопутствующие утилиты
- Диспетчер системных ресурсов Windows
- Приоритеты реального времени
- Уровни прерываний и уровни приоритета
- Состояния потоков
- База данных диспетчера ядра
- Квант
- Учет квантов времени
- Управление величиной кванта
- Динамическое увеличение кванта
- Параметр реестра для настройки кванта
- Сценарии планирования
- Самостоятельное переключение
- Вытеснение
- Завершение кванта
- Завершение потока
- Переключение контекста
- Поток простоя
- Динамическое повышение приоритета
- Динамическое повышение приоритета после завершения ввода-вывода
- Динамическое повышение приоритета по окончании ожидания событий и семафоров
- Динамическое повышение приоритета потоков активного процесса после выхода из состояния ожидания
- Динамическое повышение приоритета после пробуждения GUI-потоков
- Динамическое повышение приоритета при нехватке процессорного времени
- Многопроцессорные системы
- База данных диспетчера ядра в многопроцессорной системе
- Системы с поддержкой Hyperthreading
- Системы NUMA
- Привязка к процессорам
- Идеальный и последний процессоры
- Алгоритмы планирования потоков в многопроцессорных системах
- Выбор процессора для потока при наличии простаивающих процессоров
- Выбор процессора для потока в отсутствие простаивающих процессоров
- Выбор потока для выполнения на конкретном процессоре (Windows 2000 и Windows XP)
- Выбор потока для выполнения на конкретном процессоре (Windows Server 2003)
- Объекты-задания
- Резюме
- Уровни прерываний и уровни приоритета
- Динамическое увеличение кванта
- Динамическое повышение приоритета при нехватке процессорного времени
- Динамическое повышение приоритета по окончании ожидания событий и семафоров
- Динамическое повышение приоритета после завершения ввода-вывода
- Динамическое повышение приоритета потоков активного процесса после выхода из состояния ожидания
- Динамическое повышение приоритета после пробуждения GUI-потоков
- База данных диспетчера ядра
- Поток простоя
- Сборки, существующие в нескольких версиях
- Системы с поддержкой Hyperthreading
- Обзор планирования в Windows