Я пытаюсь понять логику c за расписанием ЦП и IO в параметре Round Robin.
Вопрос 1. Что произойдет, если я получу запрос IO в середине кванта времени процесса ?
Time Quantum: 500ms
IO Burst Times: 800ms
Вход теста:
Arrival, PID, Runtime, Exchange_i
100 43 1000 100 700
200 42 300 100 200 300
В вышеприведенном случае Exchange_i ссылается на время этого процесса, в течение которого процесс запросит 800 мс времени ввода-вывода.
Таким образом, для процесса 43, когда процесс выполняется в течение 100 мс, он запрашивает 800 мс времени ввода-вывода. Когда он работает в течение 700 мс, он запрашивает еще 800 мс времени ввода-вывода. Затем он будет работать в течение еще 300 мс, чтобы иметь общее время выполнения 1000 мс
Для процесса 42, когда процесс выполняется в течение 100 мс, он запросит 800 мс времени ввода-вывода. Когда он работает в течение 200 мс, он запрашивает еще 800 мс времени ввода-вывода. Когда он работает в течение 300 мс, он запрашивает еще 800 мс времени ввода-вывода.
Правильный вывод следующий:
PID, Total runtime, Total ready time, total block time
43 1000 0 1800
42 300 0 3800
Общее время готовности относится к общему времени, в течение которого процесс находился Готовая очередь. Общее время блокировки относится к общему времени, в течение которого процесс находился в заблокированной очереди.
Я пытался отобразить это на диаграмме Ганта, но я не уверен, что мои логики c правильны, как и я не получить правильное общее время блокировки для любого из процессов.
Из того, что я собрал, процесс 42 будет находиться в заблокированной очереди только тогда, когда он запрашивает время ввода-вывода, которое составляет 800 мс * 2 = 1600. Где оставшееся время пришло? Я также не знаю, как процесс 43 имеет общее время блокировки 3800.
Я пытался посмотреть это видео, но я все еще в замешательстве. https://www.youtube.com/watch?v=1d8r3M_tVXw
Примечание: мс - это просто единицы измерения, которые я использовал. На самом деле я просто имею в виду единицы времени, поскольку пытаюсь это запрограммировать.