Расчет среднего времени ожидания в алгоритме SJF
Я понимаю, как работает упреждающее планирование SJF, но я не знаю, как рассчитать среднее время ожидания..
Этот пример взят из "Принципов ОС" Гальвина, Ганга и Зильбершаца.
Они рассчитывают среднее время ожидания как:((10-1)+(1-1)+(17-2)+(5-3)) / 4 = 6.5ms
Как это рассчитывается? Пожалуйста, упростите.
Кроме того, было бы здорово, если бы вы могли решить ту же задачу, используя алгоритм RR с квантом времени, скажем... 5 мс (для простого расчета) и объяснить, как рассчитать среднее время ожидания
1 ответ
Достаточно взглянуть на диаграмму и рассчитать для каждого процесса, сколько времени он ждал:
P1 запускается в начале 1 раз (он единственный), поэтому он ждет 0 здесь. Затем он ждет от времени 1 до времени 10 -> общее время ожидания = (10-1).
P2 прибывают во время 1, и начинают бежать сразу же. Значит, он совсем не ждал -> (1-1).
P3 прибывают во время 2 и начинают работать во время 17 -> (17-2).
P4 прибывают во время 3 и начинают работать во время 5 -> общее время ожидания = (5-3).
Таким образом, среднее время ожидания = ((10-1)+(1-1)+(17-2)+(5-3))/4 = 6,5 мс.
РЕДАКТИРОВАТЬ: Для RR с 5 квантами, это то, что произойдет:
Прибывает P1 и получает кванты 5 мс -> во время 5, он останавливается с оставшимся взрывом 3. Затем, P2 начнет работать со времени 5 до времени 9 (его импульс только 4). Таким образом, вы получите P2 в ожидании (5-1).
P3 начнет работать со времени 9 до времени 14 с оставшимся всплеском 4. Затем P4 начнет работать со времени 14 до времени 19 и закончится. Общее время ожидания для P4 (14-3).
Чем P1 продолжит работать с 19 до 22 и закончится. Общее время ожидания для P1 (19-5). Затем P3 продолжает работать со времени 22 во время 26. Общее время ожидания для P3 составляет (9-2) + (22-14).
Таким образом, вы получите среднее время бега = ((5-1)+(14-3)+(19-5)+(9-2)+(22-14))/4 = 10,5 мс