Что такое циклическое планирование? - PullRequest
10 голосов
/ 17 сентября 2008

В контексте многозадачной операционной системы иногда вы слышите термин циклическое планирование. К чему это относится?
Какие еще виды планирования существуют?

Ответы [ 7 ]

20 голосов
/ 17 сентября 2008

Круглое планирование Робина

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

Существует много других типов планирования, таких как основанное на приоритете (то есть, прежде всего, самые важные люди), «первым пришел - первым обслужен», «самый ранний срок - первым» (т. Е. Человек, ушедший первым, первым) и т. Д. отключить путем поиска в Google для алгоритмов планирования или проверить планирование в Википедии

7 голосов
/ 17 сентября 2008

Временное сечение присуще любой системе циклического планирования на практике, AFAIK.

Я не согласен с выводом InSciTek Jeff о том, что следующее - это циклическое планирование:

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

Я не понимаю, как это можно считать круговым. Это на самом деле упреждающее планирование. Тем не менее, возможно иметь алгоритм планирования, который имеет элементы как циклического, так и упреждающего планирования, что делает VxWorks, если включены циклическое планирование и вытеснение (циклическое переключение по умолчанию отключено). Способ включения циклического планирования заключается в предоставлении ненулевого значения в kernelTimeSlice .

Я согласен с этим утверждением:

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

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

Редактирование, направленное на InSciTek Джефф (у меня нет прав на комментарии) Да, я имел в виду блокировку задач / отключение прерываний, хотя я явно не очень хорошо это выразил. Вы опередили меня (ха!) Своим вторым комментарием. Я надеюсь обсудить более важный момент: вы полагаете, что циклическое планирование может существовать без сокращения времени. Или вы имели в виду равное время нарезки? Я не согласен с первым, но согласен с последним. Я стремлюсь учиться. Спасибо.

Edit2 направлено на Джеффа:

Round-robin может существовать без временной привязки. Это именно то, что происходит в VxWorks, когда kernelTimeSlice отключен (ноль).

Я не согласен с этим утверждением. См. этот документ раздел 2.2.3 с заголовком Планирование циклического перебора.

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

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

3 голосов
/ 17 сентября 2008

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

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

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

1 голос
/ 23 мая 2010

Мнение. Кажется, что мы объединяем два механизма в один. Если предположить только исходное утверждение OP «В контексте многозадачной операционной системы», то

1 - Планировщик циклического перебора всегда планирует следующий элемент в циклической очереди.

2 - то, как планировщик получает управление для выполнения планирования, является отдельным и не связанным.

Я не согласен с тем, что наиболее распространенный метод для 2 - это сокращение времени / ожидание выхода ресурса, но, как было отмечено, есть и другие. Если я не ошибаюсь, на первых компьютерах Mac не использовалось распределение времени, они использовали добровольный сбор урожая / доходность ресурсов (клетки мозга старше 20 лет могут иногда ошибаться;)

0 голосов
/ 16 февраля 2017

Планирование циклического перебора основано на распределении времени, также известном как квант (максимальное время, выделяемое ЦП для любого процесса за один раз). В очереди есть несколько процессов (которым требуется разное время для завершения пакета), и ЦПУ должен обрабатывать их все, поэтому он продолжает переключаться между процессами, чтобы дать каждому процессу равное время на основе квантового значения. Этот тип планирования известен как планирование Round Robin. Просмотрите это простое видео, чтобы легко понять планирование циклического перебора: https://www.youtube.com/watch?v=9hw-_qJ55K4

0 голосов
/ 09 апреля 2010

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

0 голосов
/ 17 сентября 2008

Round Roin - это простой алгоритм планирования, в котором время равномерно распределяется между заданиями без приоритета.

Например - если у вас запущено 5 процессов - каждому процессу будет разрешено работать в течение 1/5 единицы времени, прежде чем разрешится запуск другого процесса. Round Robin обычно легко реализовать в ОС.

...