Добавил:
Developerrnrn Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС Нижний.pdf
Скачиваний:
34
Добавлен:
25.03.2023
Размер:
2.75 Mб
Скачать

Лабораторный практикум по курсу "Операционные системы"

«Наименьшее оставшееся время выполнения»

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

Такая схема позволяет быстро обслуживать короткие и близкие к завершению запросы.

Алгоритмы планирования в интерактивных системах

«Циклическое планирование» (Round Robin, RR)

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

Реализация алгоритма проста –

необходимо

лишь

поддерживать

очередь потоков в

состоянии «готов к выполнению».

 

 

 

 

 

 

текущий

следующий

 

 

 

поток

 

поток

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

B

 

C

D

E

 

 

 

 

 

 

 

 

 

Список потоков в состоянии «готов к выполнению»

текущий

поток

B

C

D

E

A

 

 

 

 

 

Список потоков в состоянии «готов к выполнению» после исчерпания потоком A своего кванта времени

Рис. 14 Очередь готовых к исполнению потоков при циклическом планировании

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

Учебно-исследовательская лаборатория «Информационные технологии» 29

Лабораторный практикум по курсу "Операционные системы"

сильно увеличится время отклика. Значение кванта обычно принимается в пределах 20-50 мс.

«Приоритетное планирование»

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

Основная идея проста – каждому потоку присваивается приоритет, и управление передается готовому к выполнению потоку с самым высоким приоритетом.

заголовки

очередей

Приоритет 4

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

приоритет

 

Приоритет 3

 

 

 

Приоритет 2

 

 

самый низкий

Приоритет 1

приоритет

 

Рис. 15 Приоритетный алгоитм планирования с четырьмя уровнями приоритетов

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

При использовании приоритетного планирования, если в системе всегда готов к исполнению хотя бы один из высокоприоритетных потоков, то потоки с низкими приоритетами никогда не будут выполнены. Поэтому всегда используются некоторые модификации этого алгоритма.

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

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

2.Для предоставления низкоприоритетным потокам центрального процессора планировщик может проверять время, в течение которого поток находился в состоянии готовности к исполнению. В случае достижения некоторого критического значения потоку временно

30 Учебно-исследовательская лаборатория «Информационные технологии»

Лабораторный практикум по курсу "Операционные системы"

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

3. Динамическое изменение приоритетов.

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

Простой алгоритм обслуживания процессов, ограниченных возможностями устройств вводавывода, состоит в установке приоритета равным 1/f, где f – часть использованного в последний раз кванта.

При использовании динамических приоритетов в расчетах могут использоваться самые различные параметры, как статические для каждого потока, так и динамические, например:

-Каким пользователем запущен процесс или сформировано задание.

-Насколько важной является поставленная задача, т. е. каков приоритет ее выполнения.

-Сколько процессорного времени запрошено пользователем для решения задачи.

-Каково соотношение потребляемого процессорного времени и времени, необходимого для осуществления операций ввода-вывода.

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

-Сколько времени прошло со времени выгрузки процесса на диск или его загрузки в оперативную память.

-Сколько оперативной памяти занимает процесс.

-Сколько процессорного времени было уже предоставлено процессу.

Рассмотрим несколько частных случаев.

«Самый короткий поток - следующий»

Алгоритм планирования «Кратчайшая задача - первая» минимизирует среднее оборотное время в системах пакетной обработки. Поскольку интерактивные процессы часто работают по схеме «ожидание команды – исполнение команды - ожидание команды», то одна итерация такого цикла может быть рассмотрена как отдельное задание, время оборота которого желательно минимизировать.

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

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

Пусть t(n) - величина n-го времени использования ЦП, T(n + 1)- предсказываемое значение для n + 1-го времени использования, a - некоторая величина в диапазоне от 0 до 1.

Определим рекуррентное соотношение:

Учебно-исследовательская лаборатория «Информационные технологии» 31

Лабораторный практикум по курсу "Операционные системы"

T(n+1) = a*t(n) + (1- a)*T(n), T(0) положим произвольной неотрицательной константой.

Первое слагаемое учитывает последнее поведение процесса, тогда как второе слагаемое учитывает его предысторию. При a = 0 мы перестаем следить за последним поведением процесса, фактически полагая T(n) = T(n-1) =…=T(0), т.е. оценивая все времена использования ЦП одинаково, исходя из некоторого начального предположения. Положив a = 1, мы забываем о предыстории процесса. В этом случае мы полагаем, что время очередного использования ЦП будет совпадать со временем последнего использования ЦП: T(n+1) = t(n). При выборе a = 1/2 равноценно учитываются последнее поведение и предыстория. Отметим, что такой выбор a удобен и для быстрой организации вычисления оценки T(n+1). Для подсчета новой оценки нужно взять старую оценку, сложить с последним измеренным временем использования ЦП и полученную сумму разделить на 2, например, с помощью ее сдвига на 1 бит вправо. Полученные оценки T(n+1) применяются как продолжительности очередных промежутков времени непрерывного использования процессора для краткосрочного планирования «Самый короткий поток следующий».

«Гарантированное планирование»

При одновременной работе N пользователей в вычислительной системе можно применить алгоритм планирования, который гарантирует, что каждый из пользователей будет иметь в своем распоряжении примерно 1/N часть процессорного времени.

Пронумеруем всех пользователей от 1 до N. Для каждого пользователя с номером i введем две величины: Ti - время нахождения пользователя в системе, и ti - суммарное процессорное время уже выделенное всем его потокам в течение сеанса. Справедливым для пользователя было бы получение Ti/N процессорного времени. Если t << Ti / N, то i - й пользователь несправедливо обделен процессорным временем. Если же t >> Ti / N, то система явно благоволит к пользователю с номером i. Вычислим для каждого пользовательского потока значение коэффициента справедливости ti * N / Ti , и будем предоставлять очередной квант времени процессу с наименьшей величиной этого отношения. Предложенный алгоритм называют алгоритмом гарантированного планирования.

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

Лотерейное планирование

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

В основе алгоритма лежит раздача потокам лотерейных билетов на доступ к различным ресурсам, в том числе и процессору. Когда планировщику необходимо принять решение, выбирается случайным образом лотерейный билет, и его обладатель получает доступ к ресурсу. Более важным потоком в этом случае выдается большее число билетов. Каждый поток получает количество ресурсов, пропорциональное количеству имеющихся у него билетов. Например, если всего 100 билетов, и 20 из них находятся у одного потока, то в среднем ему будет доставаться около 20% времени центрального процессора.

Лотерейное планирование характеризуется несколькими интересными свойствами. Например, при изменении у потока количества билетов, его шансы увеличиваются уже в следующем розыгрыше, то есть лотерейное планирование обладает высоко отзывчивостью.

32 Учебно-исследовательская лаборатория «Информационные технологии»

Соседние файлы в предмете Современные операционные системы