1.04M

09-OS-KB3

1.

Лекция 9: планировщики
процессов Windows 7

2.

Процессы и потоки
Процесс
• виртуальное адресное пространство
• описатели режимов работы ядра
• Потоки
Процесс = PEB (ProcessEnvironmentBlock)
• строки окружения
• список загруженных модулей (EXE и DLL)
• данные кучи процесса
• рабочий каталог и прочее

3.

Процессы и потоки
Поток
Поток = TEB (ThreadEnvironmentBlock)

4.

Процессы и потоки

5.

Алгоритм планировщика
Приоритеты процессов
Квант времени
• конфигруация системы
• статус процесса
• наличие объекта задание
Учёт в ETHREAD , дублируется в EPROCESS

6.

Алгоритм планировщика
Диспетчер ядра
1. поток готов к исполнению
2. у потока закончился квант или он уходит в
состояние ожидания
3. смена приоритета потока
4. смена привязки к процессору
5. блокировка потока на событии или структуре

7.

Уровни приоритетов

8.

Уровни приоритетов
Назначаемый приоритет :
реального времени
высокий
выше обычного
нормальный
ниже обычного
простаивающий
- 16-31
- 13
- 10
-8
-6
-4

9.

Уровни приоритетов
Относительный приоритет :
критичный по времени
наивысший
выше обычного
обычный
ниже обычного
наименьший
простаивающий
= 15
+2
+1
+0
-1
-2
=1

10.

Уровни приоритетов
Уровень потока = назначаемый приоритет +
относительный приоритет
• Базовый
• Текущий
cmd /c start /<уровень приоритета> <имя
исполняемого файла>

11.

Состояния потоков

12.

База данных диспетчера
Очереди готовых
потоков (32 шт,
по числу приоритетов)

13.

Квант
2 такта – настрольная ОС (около 20 мс)
12 тактов – серверная ОС (около 180 мс)
Хранится ввиде такты * 3
В настольных ОС активному окнму 6 тактов.

14.

Сценарии планирования
Самостоятельное переключение

15.

Сценарии планирования
Вытеснение

16.

Сценарии планирования
Завершение кванта

17.

Сценарии планирования
Завершение потока

18.

Переключение контекста
В общем случае требуется перегрузить из ETHREAD :
• указатель команд
• указатель стека системы и пользовательского
стека
• указатель на адресное пространство потока
При другом процессе :
• Каталог страниц
• Адресное пространство

19.

Поток простоя
1. включает и отключает прерывания
2. проверяет есть ли отложенные задания
3. появился ли поток для исполнения
4. вызывает функцию HAL по обработке простоя
процессора

20.

Динамическое повышение приритета
1. по завершении операции ввода/вывода
2. по окончании ожидания события
3. по окончании ожидания потоками активного
процесса
4. по пробуждении GUI-поток из-за событий с окнами
5. голодание потока
Не выше 15 приоритета всегда!

21.

Динамическое повышение приритета
• диск, cd-rom, видео, LPT
• событие семафора
• сеть, канал связи, почта, COM
• клавиатура, мышь
• звуковая плата
-1
-1
-2
-6
-8
• владение окном
- 2 (постоянный)

22.

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

23.

Многопроцессорность

24.

Многопроцессорность
Hyperthreading не учитывается.

25.

Многопроцессорность
Выбор процессора для перезапуска:
• Процессор с прошлого запуска потока
(допускаются пропуски запуска)
• Процессор из той же группы NUMA
• Свободный процессор
При отсутствии жёсткой привязки к процессору
English     Русский Правила