Среднее время ожидания в циклическом планировании
время ожидания определяется как то, как долго каждый процесс должен ждать, прежде чем он получит это срез времени. В алгоритмах планирования, таких как короткое задание первым и первым приходит первым, мы можем легко найти это время ожидания, когда мы просто выстраиваем задания в очередь и видим, как долго каждый из них должен был ждать, прежде чем он получил обслуживание.
когда дело доходит до Round Robin или любых других упреждающих алгоритмов, мы обнаруживаем, что длительные рабочие места проводят немного времени в CPU, когда они предварительно, а затем ждут когда-то в очередь, чтобы выполнить и в какой-то момент, в свою очередь, он выполняется до завершения. Я хотел найти лучший способ понять "время ожидания" заданий в таком алгоритме планирования.
нашел формула что дает время ожидания как:
Waiting Time = (Final Start Time - Previous Time in CPU - Arrival Time)
но я не понимаю рассуждения для этой формулы. Например, рассмотрим работу A, которая имеет время всплеска 30 единиц и круговой происходит на каждые 5 единиц. Есть еще два задания B(10) и C(15).
порядок, в котором они будут обслуживаться будет:
0 A 5 B 10 C 15 A 20 B 25 C 30 A 35 C 40 A 45 A 50 A 55
время ожидания для A = 40 - 5 - 0
- я выбираю 40, потому что после 40 A никогда не ждет. Он просто получает свои временные отрезки и продолжает и продолжает.
- выберите 5, потому что потраченный в процессе ранее между 30 и 35.
- 0-Время начала.
Ну, я сомневаюсь в этой формуле, почему было 15 A 20
не учитывается для?
Интуитивно я не могу понять, как это дает нам время ожидания для A, когда мы просто учитываем предпоследнее выполнение, а затем вычитаем время прибытия.
По моему мнению, время ожидания для A должно быть:
- Final Start time - (сумма всех раз, которые он тратит на обработку).
Если эта формула неверна, то почему?
пожалуйста, помогите прояснить мое понимание этого понятия.
2 ответов
вы неправильно поняли, что означает формула "предыдущее время в CPU". Это на самом деле означает то же самое, что и то, что вы называете "суммой всех раз, которые он тратит на обработку". (Я предполагаю, что" предыдущее время в CPU "должно быть коротким для" общего времени, ранее проведенного на CPU", где" ранее "означает"до окончательного запуска".)
вам все равно нужно вычесть время прибытия, потому что процесс, очевидно, не ждал до его прибытия. (На всякий случай это неясно: "Время прибытия" - это время, когда задание было отправлено планировщику.) В вашем примере время прибытия для всех процессов равно 0, поэтому это не имеет значения, но в общем случае время прибытия необходимо учитывать.
Edit: если вы посмотрите на пример на веб-странице, с которой вы связаны, процесс P1 занимает два временных среза из четырех единиц времени каждый до его окончательного запуска, а его "предыдущее время в CPU" рассчитывается как 8, в соответствии с интерпретацией выше.
последние ожидания
value - (Time quantum×(n-1))
здесь n
обозначает нет времени, когда процесс прибывает в диаграмму Ганта.