The design of the UNIX Operating System 6 страница



Основную сложность при реализации алгоритма SJF представляет невозможность точного знания про-должительности очередного CPU burst для исполняющихся процессов. В пакетных системах количество процессорного времени, необходимое заданию для выполнения, указывает пользователь при формирова - нии задания. Мы можем брать эту величину для осуществления долгосрочного SJF-планирования. Если пользователь укажет больше времени, чем ему нужно, он будет ждать результата дольше, чем мог бы, так как задание будет загружено в систему позже. Если же он укажет меньшее количество времени, задача


Основы операционных систем 35

может не досчитаться до конца. Таким образом , в пакетных системах решение задачи оценки времени использования процессора перекладывается на плечи пользователя. При краткосрочном планировании мы можем делать только прогноз длительности следующего CPU burst, исходя из предыстории работы процесса. Пусть τ(n) – величина n-го CPU burst, T(n + 1) – предсказываемое значение для n + 1-го CPU

 

burst, – некоторая величина в диапазоне от 0 до 1.

 

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

 

T(n+1)= τ(n)+(1- )T(n)

 

T(0) положим произвольной константой. Первое слагаемое учитывает последнее поведение процесса, то-

 

гда как второе слагаемое учитывает его предысторию. При = 0 мы перестаем следить за последним по-ведением процесса, фактически полагая

 

T(n)= T(n+1)=...=T(0)

 

т. е. оценивая все CPU burst одинаково, исходя из некоторого начального предположения.

 

Положив = 1, мы забываем о предыстории процесса. В этом случае мы полагаем, что время очередного CPU burst будет совпадать со временем последнего CPU burst:

 

T(n+1)= τ(n)

 

Обычно выбирают = 1/2 для равноценного учета последнего поведения и предыстории. Надо отметить,

 

что такой выбор удобен и для быстрой организации вычисления оценки T(n + 1). Для подсчета новой оценки нужно взять старую оценку, сложить с измеренным временем CPU burst и полученную сумму разделить на 2, например, сдвинув ее на 1 бит вправо. Полученные оценки T(n + 1) применяются как продолжительности очередных промежутков времени непрерывного использования процессора для краткосрочного SJF-планирования.

 

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

 

При интерактивной работе N пользователей в вычислительной системе можно применить алгоритм пла-нирования, который гарантирует, что каждый из пользователей будет иметь в своем распоряжении ~1/N часть процессорного времени. Пронумеруем всех пользователей от 1 до N. Для каждого пользователя с номером i введем две величины: Ti – время нахождения пользователя в системе или, другими словами, длительность сеанса его общения с машиной и τi – суммарное процессорное время уже выделенное всем его процессам в течение сеанса. Справедливым для пользователя было бы получение Ti/N процессорного времени. Если

 

τi<<Ti/N

 

то i-й пользователь несправедливо обделен процессорным временем. Если же

 

τi>>Ti/N

 

то система явно благоволит к пользователю с номером i. Вычислим для процессов каждого пользователя значение коэффициента справедливости

 

τiN/Ti

 

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


Дата добавления: 2021-01-21; просмотров: 108; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!