Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы ОС.docx
Скачиваний:
44
Добавлен:
22.09.2019
Размер:
3.18 Mб
Скачать

10. Уровни приоритета, квант потока в Windows. (Лекция 3)

Уровни приоритета назначаются с учетом двух разных точек зрения - Windows API (интерфейса прог. прилож.) и ядра Windows.

W indows API упорядочивает процессы по классам приоритета, назначенным при их создании [Real-time (реального времени), High (высокий), Above Normal (выше обычного), Normal (обычный), Below Normal (ниже обычного) и Idle (простаивающий)].

Базовый приоритет каждого потока в Windows API устанавливается, исходя из класса приоритета его процесса и относительного приоритета самого потока. Если у процесса только одно значение приоритета (базовое), то у каждого потока их два: текущее и базовое. Решения, связанные с планированием, принимаются на основе текущего приоритета. В определенных обстоятельствах система может на короткое время повышать приоритеты потоков в динамическом диапазоне (1-15). Windows никогда не изменяет приоритеты потоков в диапазоне реального времени (16-31), поэтому у таких потоков базовый приоритет идентичен текущему.

Обычно базовый приоритет процесса (и базовый приоритет первичного потока) по умолчанию равен значению из середины диапазонов приоритетов процессов (24, 13, 10, 8, 6 или 4). Однако базовый приоритет некоторых системных процессов (например, диспетчера сеансов, контроллера сервисов и сервера локальной аутентификации) несколько превышает значение по умолчанию для класса Normal (8). Более высокий базовый приоритет по умолчанию обеспечивает запуск потоков этих процессов с приоритетом выше 8.

Приоритеты реального времени: Можно повысить или понизить приоритет потока любого приложения в динамическом диапазоне; однако, чтобы задать значение из диапазона реального времени, должна быть привилегия Increase Scheduling Priority. Многие важные системные потоки режима ядра выполняются в диапазоне приоритетов реального времени. Поэтому, если потоки слишком долго выполняются с приоритетом этого диапазона, они могут блокировать критичные системные функции (например в диспетчере памяти, диспетчере кэша или драйверах устройств).

Квант – интервал процессорного времени, отведенный потоку для исполнения.

Обычная начальная длина кванта в Windows XP/Vista/7 – 2 интервала таймера, в Windows Server – 12 интервалов. Величина кванта хранится как число интервалов * 3. Каждой прерывание таймера уменьшает квант на интервал (т.е. на 3). В различных версия Windows по-разному ведется учет квантов при прерываниях.

- Длительность кванта зависит от аппаратной платформы (для х86 с одним процессором = 10 мс, для многопроцессорной 15 мс)

- Учет квантов времени (для каждого процесса хранится в блоке процесса ядра)

- Управление величиной кванта (короткие кванты, переменные кванты)

- Динамическое увеличение кванта

- Параметры реестра для настройки кванта (HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl\Win32PrioritySeparation)

По окончании кванта Windows проверяет, ожидает ли выполнения другой поток с таким же уровнем приоритета. Если на момент истечения кванта других потоков с тем же уровнем приоритета нет, Windows выделяет текущему потоку еще один квант.