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

Лекция 3 (20.09.2012)

Исполнение – активное состояние процесса. В нем может находиться столько процессов, сколько есть процессоров (либо сколько ядер у процессора).

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

Готовность – пассивное состояние процесса. У процесса есть все необходимые ресурсы, кроме процессорного времени. Тоже может быть несколько процессов в очереди.

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

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

  1. Справедливость – гарантировать каждому процессу определенную часть времени использования процессора, стараясь не допустить ситуации, когда процесс одного пользователя постоянно занимает процессор, в то время как процесс другого пользователя фактически не начинал выполняться.

  2. Эффективность – постараться занять процессор на 100% рабочего времени, не позволяя ему простаивать в ожидании процессов, готовых к исполнению. В реальных ВС загрузка процессора колеблется от 40 до 90 процентов.

Независимо от поставленных целей, алгоритмы должны обладать следующими свойствами:

  1. Быть предсказуемыми – одно и то же задание должно выполняться примерно за одно и то же время.

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

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

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

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

FCFS – first come first served.

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

Преимуществом FCFS является простота реализации, но в то же время он имеет много недостатков. Среднее время ожидания и среднее время выполнения для некоторых алгоритмов существенно зависят от порядка расположения процессов в очереди. Исправить недостаток этого алгоритма можно с помощью RR – round robin. По сути дела это тот же самый алгоритм, но реализованный в виде вытесняющего планирования. Можно представить, что все множество процессов организовано циклически, т.е. процессы сидят на карусели. Карусель вращается так, что каждый процесс находится около процессора небольшой фиксированный квант времени (обычно 10-100 мс). Реализуется этот алгоритм так же как и предыдущий с помощью организации процессов, находящихся в готовности в очередь FIFO. Планировщик выбирает для очередного исполнения процесс, расположенный в начале очереди и устанавливает таймер для генерации прерывания по истечению определенного кванта времени. При выполнении процесса возможны 2 варианта:

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

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

Легко увидеть, что среднее время ожидания и среднее полное время выполнения для обратно порядка процессов не отличается от соответствующих времени для алгоритма FCFS и составляют 2 и 6 ед. соответственно. На производительность алгоритма RR сильно влияет величина кванта времени. При очень больших величинах кванта времени, когда каждый процесс успевает завершить свое исполнение до возникновения прерывания по времени, алгоритм RR вырождается в алгоритм FCFS. При очень малых величинах создается иллюзия того, что каждый из N процессов работает на собственном виртуальном процессоре с производительностью 1/N от производительности реального процессора.

SJF – shortest job first.

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

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

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

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