Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС_модуль1.doc
Скачиваний:
11
Добавлен:
25.08.2019
Размер:
276.48 Кб
Скачать

Планирование Процессов

В любой ОС переключение процессов ведется в соответствии с определенной стратегией планирования.

Бывает 2 типа планирования.

  1. Без переключений (при котором у процесса нельзя отобрать ресурсы ЦП);

  2. С переключениями (Во время выполнения процесса ресурсы ЦП можно предоставлять другим процессам).

Также планирование бывает Приоритетным (важность процесса назначается). Оно подразделяется на планирование

  1. Со статическим приоритетом (приоритеты не изменяются во время выполнения). Такой механизм легко реализуется, но он не реагирует на изменения ситуации.

  2. С динамическим приоритетом (сложнее в реализации, но ОС реагирует на изменения ситуации).

Пример 1. Планирование в Windows 2000

в Windows 2000 нет центрального потока планирования. Вместо этого, когда какой-нибудь поток не может более выполняться, этот поток сам переходит в режим ядра и запускает планировщика, чтобы определить, на какой поток переключиться. Поток запускает планировщика при одном из следующих условий:

1. поток блокируется на семафоре, мьютексе, событии, операции ввода-вывода и т.д.

2. истекает квант времени работающего потока.

3. завершается операция ввода-вывода.

4. истекает ожидание таймера.

Интерфейс Win32 API содержит два вызова, которые предоставляют возможность процессам влиять на планирование. Алгоритм планирования в большой степени определяется этими вызовами. Это вызовы: SetPriorityClass – устанавливает класс приоритета всех потоков вызывающего процесса, и SetThreadPriority – устанавливает приоритет отдельного потока. Другими словами, программа пользователя задает относительный приоритет процесса или потока.

Планировщик работает следующим образом. В системе существуют 32 уровня приоритета, которые система хранит в виде массива. В ОС задана схема преобразования входной информации – пары значений приоритетов (процесса и потока) в один из уровней системного приоритета. Эта схема приведена в таблице.

Приоритеты потоков Win32

Классы приоритетов процессов Win32

Реального времени

Высокий

Выше нормы

Нормальный

Ниже нормы

Неработающий

Критичный ко времени

31

15

15

15

15

15

Самый высокий

26

15

12

10

8

6

Выше нормы

25

14

11

9

7

5

Нормальный

24

13

10

8

6

4

Ниже нормы

23

12

9

7

5

3

Самый низкий

22

11

8

6

4

2

Неработающий

16

1

1

1

1

1

Алгоритм планирования состоит в циклической процедуре сканирования массива от приоритета 31 до приоритета 0. Как только найден непустой элемент, выбирается поток в начале очереди и запускается на выполнение. Отработав квант времени, поток ставится в конец очереди, и запускается следующий поток. При планировании не учитывается, какому процессу принадлежит поток. Планировщик смотрит только на потоки.

Приоритеты с 16 по 31 называются приоритетами реального времени. Это приоритеты, зарезервированные для самой системы и ее потоков. Пользовательские потоки работают с приоритетами от 1 до 15.

Кроме того, в системе есть нулевой поток (с приоритетом 0), который работает в фоновом режиме и занимает все процессорное время, на которое больше никто не претендует. Его работа заключается в обнулении страниц для менеджера памяти.