Что обозначает аббревиатура fcfs в программировании
Перейти к содержимому

Что обозначает аббревиатура fcfs в программировании

  • автор:

4.2.5 Стратегии планирования

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

Простейшая стратегия «первым пришел, первым обслужен» — FCFS (First Come, First Served) назначает всем процессам одинаковые приоритеты и всегда выбирает для выполнения процесс, который находится в очереди дольше всех. По существу процессы помещаются в низ («хвост») очереди и берутся из ее вершины («головы»). Структура списка готовности, опирающаяся на планирование FCFS и связанный список, представлена на рис. 2.

Рисунок 2 – Стратегия First Come, First Served

Здесь fqp — указатель очереди процесса, а pcbp — указатель контекста процесса.

Очередь подобного типа имеет в программировании специальное наименование FIFO — сокращение от First In, First Out (первым вошел, первым вышел).

Надо отметить, что аббревиатура FCFS используется для этой стратегии планирования вместо стандартной аббревиатуры FIFO для механизмов подобного типа для того, чтобы подчеркнуть, что организация готовых процессов в очередь FIFO возможна и при других стратегиях планирования (например, для Round Robin).

Указатель первого элемента показывает, какой процесс находится в вершине очереди, а указатель последнего элемента — процесс в низу очереди. Указатель последнего элемента необходим для того, чтобы в очередь можно было помещать новые процессы без просмотра всего списка. В примере предполагается, что каждый процесс имеет ID (идентификатор), который совпадает с позицией в массиве, содержащем связанный список (как в FAT). Предполагается также, что очередь состоит из процессов 3, 6, 2, 8 и 5. Следовательно, указатель первого элемента содержит 3, указатель последнего элемента содержит 5, а процессы 2, 3, 5, 6 и 8 находятся в состоянии готовности. Остальные элементы в таблице процессов либо заняты выполняемыми, либо заблокированными процессами, либо в данное время не используются. Если число 0 применяется для указания конца списка, его нельзя употреблять в качестве ID процесса.

Стратегия FCFS осуществляет невытесняющее планирование.

Модификацией стратегии FCFS является стратегия, получивший название Round Robin(Round Robin – вид детской карусели в США) или сокращенно RR. По сути дела это та же самая стратегия, только реализованная в режиме вытесняющего планирования. Можно представить себе все множество готовых процессов организованным циклически — процессы «сидят на карусели». Карусель вращается так, что каждый процесс находится около процессора небольшой фиксированный квант времени, обычно 10 — 100 миллисекунд. Пока процесс находится рядом с процессором, он получает процессор в свое распоряжение для исполнения (рис. 3).

Рисунок 3 – Стратегия Round Robin

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

  • время непрерывного использования процессора, требующееся процессу, (остаток текущего CPU burst) меньше или равно продолжительности кванта времени. Тогда процесс по своей воле освобождает процессор до истечения кванта времени, на исполнение выбирается новый процесс из начала очереди и таймер начинает отсчет кванта заново;
  • продолжительность остатка текущего CPU burst процесса больше, чем квант времени. Тогда по истечении этого кванта процесс прерывается таймером и помещается в конец очереди процессов готовых к исполнению, а процессор выделяется для использования процессу, находящемуся в ее начале.

Round Robin (RR)

Модификацией алгоритма FCFS является алгоритм, получивший название Round Robin (Round Robin — это вид детской карусели в США) или сокращенно RR. По сути дела, это тот же самый алгоритм, только реализованный в режиме вытесняющего планирования.

Можно представить себе все множество готовых процессов организованным циклически — процессы сидят на карусели. Карусель вращается так, что каждый процесс находится около процессора небольшой фиксированный квант времени, обычно 10-100 миллисекунд (см. рис. 3.4). Пока процесс находится рядом с процессором, он получает процессор в свое распоряжение и может исполняться.

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

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

При выполнении процесса возможны два варианта:

• Время непрерывного использования процессора, необходимое процессу (остаток текущего CPU burst), меньше или равно продолжительности кванта времени. Тогда процесс по своей воле освобождает процессор до истечения кванта времени, на исполнение поступает новый процесс из начала очереди, и таймер начинает отсчет кванта заново.

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

Рассмотрим предыдущий пример с порядком процессов ро, pi, рг и величиной кванта времени, равной 4. Выполнение этих процессов иллюстрируется таблицей 3.2. Обозначение «И» используется в ней для процесса, находящегося в состоянии исполнение, обозначение «Г» — для процессов в состоянии готовность, пустые ячейки соответствуют завершившимся процессам. Состояния процессов показаны на протяжении соответствующей единицы времени, т. е. колонка с номером 1 соответствует промежутку времени от 0 до 1.

Первым для исполнения выбирается процесс ро- Продолжительность его CPU burst больше, чем величина кванта времени, и поэтому процесс исполняется до истечения кванта, т. е. в течение 4 единиц времени. После этого он помещается в конец очереди готовых к исполнению процессов, которая принимает вид pi, рг, ро- Следующим начинает выполняться процесс рь Время его исполнения совпадает с величиной выделенного кванта, поэтому процесс работает до своего завершения. Теперь очередь процессов всостоянии готовность состоит из двух процессов — рг и ро. Процессор выделяется процессу рг. Он завершается до истечения отпущенного ему процессорного времени, и очередные кванты отмеряются процессу ро — единственному не закончившему к этому моменту свою работу. Время ожидания для процесса ро (количество символов «Г» в соответствующей строке) составляет 5 единиц времени, для процесса Р1 — 4 единицы времени, для процесса рг — 8 единиц времени. Таким образом, среднее время ожидания для этого алгоритма получается равным (5 + 4 + 8)/3 = 5,6 (6) единицам времени. Полное время выполнения для процесса ро (количество непустых столбцов в соответствующей строке) составляет 18 единиц времени, для процесса Р1 — 8 единиц, для процесса рг — 9 единиц. Среднее полное время выполнения оказывается равным (18 + 8 + 9)/3 = 11,6 (6) единицам времени.

Легко увидеть, что среднее время ожидания и среднее полное время выполнения для обратного порядка процессов не отличаются от соответствующих времен для алгоритма РСРБ и составляют 2 и 6 единиц времени соответственно.

На производительность алгоритма ЯЯ сильно влияет величина кванта времени. Рассмотрим тот же самый пример с порядком процессов ро, Рь рг для величины кванта времени, равной 1 (см. табл. 3.3). Время ожидания для процесса ро составит 5 единиц времени, для процесса р| — тоже 5 единиц, для процесса рг — 2 единицы. В этом случае среднее время ожидания получается равным (5 + 5 + 2)/3 = 4 единицам времени. Среднее полное время исполнения составит (18 + 9 + 3)/3 = 10 единиц времени.

При очень больших величинах кванта времени, когда каждый процесс успевает завершить свой CPU burst до возникновения прерывания по времени, алгоритм RR вырождается в алгоритм FCFS. При очень малых величинах создается иллюзия того, что каждый из п процессов работает на собственном виртуальном процессоре с производительностью ~ 1/п от производительности реального процессора. Правда, это справедливо лишь при теоретическом анализе при условии пренебрежения временами переключения контекста процессов. В реальных условиях при слишком малой величине кванта времени и, соответственно, слишком частом переключении контекста накладные расходы на переключение резко снижают производительность системы.

17) алгоритм планирования FCFS

Что такое метод «первым пришел, первым обслужен»?

First Come First Serve (FCFS) – это алгоритм планирования операционной системы, который автоматически выполняет запросы и процессы в очереди в порядке их поступления. Это самый простой и простой алгоритм планирования процессора. В алгоритме этого типа процессы, которые сначала запрашивают ЦП, сначала получают распределение ЦП. Это управляется с помощью очереди FIFO. Полной формой FCFS является First Come First Serve.

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

Из этого руководства по операционной системе вы узнаете:

  • Что такое метод «первым пришел, первым обслужен»?
  • Характеристики метода FCFS
  • Пример планирования FCFS
  • Как работает FCFS? Расчет среднего времени ожидания
  • Преимущества FCFS
  • Недостатки FCFS

Характеристики метода FCFS

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

Пример планирования FCFS

Реальный пример метода FCFS – покупка билета в кино на кассе. В этом алгоритме планирования человек обслуживается согласно порядку очереди. Человек, который прибывает первым в очереди, сначала покупает билет, а затем следующий. Это будет продолжаться до тех пор, пока последний человек в очереди не купит билет. Используя этот алгоритм, процесс ЦП работает аналогичным образом.

Как работает FCFS? Расчет среднего времени ожидания

Вот пример пяти процессов, прибывающих в разное время. Каждый процесс имеет разное время посылки.

Обработать Время взрыва Время прибытия
P1 6 2
P2 3 5
P3 8 1
P4 3 0
P5 4 4

Используя алгоритм планирования FCFS, эти процессы обрабатываются следующим образом.

Шаг 0) Процесс начинается с P4, который имеет время прибытия 0

Шаг 1) В момент времени = 1 приходит P3. P4 все еще выполняется. Следовательно, P3 хранится в очереди.

Обработать Время взрыва Время прибытия
P1 6 2
P2 3 5
P3 8 1
P4 3 0
P5 4 4

Шаг 2) В момент времени = 2 прибывает P1, который сохраняется в очереди.

Обработать Время взрыва Время прибытия
P1 6 2
P2 3 5
P3 8 1
P4 3 0
P5 4 4

Шаг 3) В момент времени = 3 процесс P4 завершает свое выполнение.

Шаг 4) В момент времени = 4, P3, который является первым в очереди, начинает выполнение.

Обработать Время взрыва Время прибытия
P1 6 2
P2 3 5
P3 8 1
P4 3 0
P5 4 4

Шаг 5) В момент времени = 5 приходит P2, и он сохраняется в очереди.

Обработать Время взрыва Время прибытия
P1 6 2
P2 3 5
P3 8 1
P4 3 0
P5 4 4

Шаг 6) В момент 11 P3 завершает свое выполнение.

Шаг 7) В момент времени = 11, P1 начинает выполнение. Он имеет время пакета 6. Он завершает выполнение через интервал времени 17

Шаг 8) В момент времени = 17, P5 начинает выполнение. Он имеет время пакета 4. Он завершает выполнение в момент времени = 21

Шаг 9) В момент времени = 21 P2 начинает выполнение. Он имеет время пакета 2. Он завершает выполнение через интервал времени 23

Шаг 10) Рассчитаем среднее время ожидания для приведенного выше примера.

Waiting time = Start time - Arrival time

Среднее время ожидания

Преимущества FCFS

Вот преимущества и преимущества использования алгоритма планирования FCFS:

  • Простейшая форма алгоритма планирования процессора
  • Легко программировать
  • Первым прибыл – первым обслужен Эквивалент в русском языке: поздний гость гложет и кость

Недостатки FCFS

Вот минусы / недостатки использования алгоритма планирования FCFS:

  • Это непланирующий алгоритм планирования ЦП, поэтому после выделения процесса ЦП он никогда не освободит ЦП, пока не завершит выполнение.
  • Среднее время ожидания высокое.
  • Короткие процессы, которые находятся в конце очереди, должны ждать завершения длинного процесса на фронте.
  • Не идеальная техника для систем с разделением времени.
  • Из-за своей простоты FCFS не очень эффективна.

Резюме:

  • Определение: FCFS – это алгоритм планирования операционной системы, который автоматически выполняет запросы и процессы, поставленные в очередь, в порядке их поступления
  • Поддерживает не вытесняющее и упреждающее планирование
  • алгоритм.
  • FCFS расшифровывается как First Come First Serve
  • Реальный пример метода FCFS – покупка билета в кино на кассе.
  • Это самая простая форма алгоритма планирования процессора
  • Это непланирующий алгоритм планирования ЦП, поэтому после выделения процесса ЦП он никогда не освободит ЦП, пока не завершит выполнение.

First-Come, First-Served (FCFS)

Простейшим алгоритмом планирования является алгоритм, который принято обозначать аббревиатурой FCFS по первым буквам его английского названия — First-Come, First-Served (первым пришел, первым обслужен).

Представим себе, что процессы, находящиеся в состоянии

готовность, выстроены в очередь. Когда процесс переходит в состояние готовность, он, а точнее, ссылка на его РСВ помещается в конец этой очереди. Выбор нового процесса для исполнения осуществляется из начала очереди с удалением оттуда ссылки на его РСВ. Очередь подобного типа имеет в программировании специальное наименование — FIFO, сокращение от First In, First Out (первым вошел, первым вышел)[2].

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

Преимуществом алгоритма FCFS является легкость его реализации, но в то же время он имеет и много недостатков.

Рассмотрим следующий пример. Пусть в состоянии готовность находятся три процесса — ро, pi и Р2, для которых известны времена их очередных CPU burst. Эти времена приведены в таблице 3.1 в некоторых условных единицах. Для простоты будем полагать, что вся деятельность процессов ограничивается использованием только одного промежутка CPU burst, что процессы не совершают операций ввода-вывода и что время переключения контекста так мало, что им можно пренебречь.

Если процессы расположены в очереди процессов, готовых к исполнению, в порядке ро, pi, Р2, то картина их выполнения выглядит так, как показано на рисунке 3.2.

Первым для выполнения выбирается процесс ро, который получает процессор на все время своего CPU burst, т. е. на 13 единиц времени. После его окончания в состояние исполнение переводится процесс pi, он занимает процессор на 4 единицы времени. И, наконец, возможность работать получает процесс Р2- Время ожидания для процесса ро составляет 0 единиц времени, для процесса pi — 13 единиц, для процесса Р2 — 13 + 4= 17 единиц. Таким образом, среднее время ожидания в этом случае — (0 + 13 + 17)/3 = 10 единиц времени. Полное время выполнения для процесса ро составляет 13 единиц времени, для процесса pi — 13 + 4 = 17 единиц, для процесса рг — 13 + 4 + 1 = 18 единиц. Среднее полное время выполнения оказывается равным (13 + 17 + 18)/3 = 16 единицам времени.

Если те же самые процессы расположены в порядке р2, рь ро, то картина их выполнения будет соответствовать рисунку 3.3. Время ожидания для процесса ро равняется 5 единицам времени, для процесса р] — 1 единице, для процесса Р2 — 0 единиц. Среднее время ожидания составит (5 + 1 + 0)/3 = 2 единицы времени. Это в 5 (!) раз меньше, чем в предыдущем случае. Полное время выполнения для процесса ро получается равным 18 единицам времени, для процесса р| — 5 единицам, для процесса Р2 — 1 единице. Среднее полное время выполнения составляет (18 + 5 + 1)/3 = 8 единиц времени, что в 2 раза меньше, чем при первой расстановке процессов.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *