Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
17.04.2013
Размер:
79.87 Кб
Скачать

6

СПО Лекция 4 [15.07.19]

Лекция 4: Методы планирования процессов

Цели планирования

  • Минимизировать время реакции системы (время на операцию) Операции: нажатие на клавишу в редакторе, компиляция, счетная задача

  • Обеспечить максимальную пропускную способность: минимизировать накладные расходы на переключение между процессами; эффективно использовать ресурсы машины (не только ЦП!)

  • Справедливое распределение процессора

Большинство исследований проводились в предположении: один пользователь – один процесс; один процесс – одна нить; программы независимы. Это упрощает задачу и позволяет сделать прогноз о поведении системы.

Любой метод планирования отдает предпочтение процессам определенного типа и ухудшает характеристики обработки для процессов других типов (ограниченные ЦП, ограниченные вводом-выводом, короткие, длинные).

Решение задачи планирования осложняется и тем, что поведение задач трудно предсказуемо.

Будем рассматривать два класса методов: для систем пакетной обработки (не прерываемые) и для систем разделения времени (прерываемые).

В системах пакетной обработки планирование осуществляется в виде упорядочения входной очереди задач и выполняется либо в момент поступления новой задачи в систему либо в момент выбора задачи для выполнения. Задача, выбранная для выполнения, выполняется от начала до конца без передачи процессора другим задачам.

В системах разделения времени процессор передается другой задаче либо по таймеру, либо по инициативе активной задачи в результате выполнения системного вызова.

FIFO (в порядке поступления) для систем пакетной обработки

В ранних системах просто выполнять по очереди до полного завершения. (Неэффективное использование процессора и устройств: пока ждем завершение ввода – вывода процессор простаивает)

Позднее – выполнение до системного вызова, приводящего к блокировке процесса

(+) простота

(+) гарантированное предоставление процессора

(-) короткие задачи долго ждут в очереди

Round Robin (карусель) аналог FIFO для систем разделения времени

Фиксируется квант. По прерыванию от таймера задача помещается в конец очереди готовых процессов.

Сейчас, в той или иной форме, любая ОС использует подобный алгоритм.

Это достаточно справедливый метод.

Важно! Величина кванта?

Если квант велик, то короткие долго ждут, что увеличивает среднее время реакции системы.

Если квант мал, то велики накладные расходы на переключение между процессами. Обычно выдерживается соотношение 100:1, т.е. накладные расходы на переключение не превышают 1%. Типичная величина кванта в современных системах 10-100мс при времени переключения 0.1 – 1мс

(+) простота

(+) гарантированное предоставление процессора

Сравнение FIFO и RR

Всегда ли RR лучше FIFO? Пусть имеется 10 готовых к выполнению задач, каждой требуется 100 сек процессорного времени, накладных расходов на переключение нет, квант для RR равен 1 сек.

Время реакции (время в системе: выполнение + ожидание):

#Задачи

FIFO

RR

1

100

991

2

200

992

9

900

999

10

1000

1000

ср. время

550

995.5

(-) RR резко увеличивает среднее время выполнения для одинаковых задач.

STCF/SRTCF по наименьшему времени до завершения

STCF (SJF) – Shortest Time to Completion First (Sortest Job First) - не прерываемый

SRTCF – Shortest Remaining Time to Completion First - прерываемый

Если целью является уменьшение среднего времени выполнения, то данные методы являются лучшими. Особенно выгодно для коротких задач и незначительно увеличивает время выполнения длинных задач.

(+) оптимальное среднее время выполнения

(-) трудно предсказать оставшееся время (Время можно заказывать в параметрах задачи.)

(-) Негарантированное обслуживание. Может привести к бесконечному откладыванию длинных задач

Утверждение об оптимальности справедливо лишь для фиксированной ситуации когда не поступают новые задачи. Это иллюстрируется следующим примером.

Пример: 5 задач А(2сек), B(4сек), C(1сек), D(1сек), E(1сек)

В момент времени 0 готовы задачи A и B, в момент времени 3 поступают задачи C,D,E

STCF

1 2 3 6 7 8 9

A: * *

B: - - * * * *

C: - - - *

D: - - - - *

E: - - - - - *

Задача

A

B

C

D

E

Вр. выполнения

2

6

4

5

6

STCF: Tср = 23/5 = 4.6

Если бы обладали даром предвидения, то могли бы упорядочить так

1 2 4 5 6 7 9

A: - - - - - - - * *

B: * * * *

C: - *

D: - - *

E: - - - *

Задача

B

C

D

E

A

Вр. выполнения

4

2

3

4

9

Tср = 22/5 = 4.4

Многоуровневые очереди для систем разделения времени

Относится к адаптивным методам. Основная идея: использовать информацию о прошлом поведении для предсказания будущего.

Впервые применен в системе CTSS. Ведется несколько RR очередей с разными приоритетами:

Приоритет

Квант

1

1

2

2

3

4

4

8

Порядок работы:

  1. Первый раз задача ставится в самую приоритетную очередь

  2. Если задача полностью использует квант, то ставится в конец очереди с более низким приоритетом

  3. Если квант использован не до конца, то ставится в конец очереди с более высоким приоритетом

По сути является аппроксимацией SRTCF

(+) Простой в реализации

(-) Не гарантирует обслуживание, можно надолго заблокировать длинные задачи

Обеспечение гарантированного обслуживания

UNIX повышает приоритет ожидающим задачам. Проблема в том как часто и на сколько сильно следует повышать приоритет? Это сильно влияет на характеристики работы системы.

Планирование на основе лотерейных билетов:

Каждой задаче выдается определенное число лотерейных билетов. Таким образом доля процессорного времени пропорциональна числу выданных лотерейных билетов. По какому принципу выдавать лотерейные билеты? Если хотим аппроксимировать SRTCF, то коротким даем больше, а длинным меньше (1-для длинных, 10 – для коротких).

В конце кванта выбирается счастливый билет.

Это лучше простой приоритетной схемы, поскольку при добавлении или удалении задач изменения пропорционально сказываются на всех задачах.

Число коротких/

Число длинных

%времени на каждую короткую задачу

%времени на каждую длинную задачу

1/1

91%

9%

0/2

0

50%

2/0

50%

0

10/1

10%

1%

1/10

50%

5%

Заключение по планированию

Детали того или иного алгоритма планирования (особенно в части его справедливости) особенно заметны при перегрузке системы, при этом время выполнения будет большим, независимо от того, какой метод использовался.

В системах со свопингом применяют 2-х уровневое планирование:

  • уровень 1 – обычный

  • уровень 2 – для выгруженных из ОЗУ процессов

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

32 уровня приоритета (0 – 31 max)

На каждом уровне дисциплина планирования RR.

Распределение приоритетов:

Приоритет

Классы приоритета

нити

IDLE

NORMAL

HIGH

REALTIME

TIMECRITICAL

15

15

15

31

HIGHEST

6

10

15

26

ABOVENORMAL

5

9

14

25

NORMAL

4

8

13

24

BELOWNORMAL

3

7

12

23

LOWEST

2

6

11

22

IDLE

1

1

1

16

Класс приоритета назначается процессу. Для нити устанавливается приоритет.

Обычная программа запускается с классом приоритета NORMAL и с приоритетом нити NORMAL.

Значения в таблице не стандартизованы и могут меняться для разных редакций Windows.

На нулевом уровне приоритета работает процесс обнуления страниц виртуальной памяти.

Классы IDLE, NORMAL и HIGH относятся к классам динамического приоритета, т.е. процессам этих классов система может изменять приоритет. Например, Windows95 Увеличивает приоритет на 2 процессу, окно которого в фокусе. NT увеличивает квант в 3 раза. Система временно повышает приоритет в результате некоторых событий (нажатие на клавишу или кнопку мыши).

Для программного изменения приоритетов служат функции:

SetPriorityClass

SetThreadPriority

SetPriorityBoost (для изменения (отмены) правил динамического управления приоритетами)

Соседние файлы в папке вар1