Как реализовать алгоритм циклического перебора?
Я смотрю много уроков на YouTube по планированию RR, и у меня был этот вопрос на экзамене, но я не знаю, что я сделал неправильно, решение профессора отличалось от моего решения, и я теперь запутался.
Job | Arrival | Burst
P1 | 0 | 4
P2 | 2 | 5
P3 | 3 | 3
P4 | 8 | 4
QT = 1
Ее ответ был: P1,P1,P2,P3,P1,P2,P3,P1,P4,P2,P3,P4,P2,P4,P2,P4
Мой ответ был: P1,P1,P2,P1,P3,P2,P1,P3,P2,P4,P3,P2,P4,P2,P4,P4
Так какой из них правильный ответ, и если это была она, то почему?
4 ответа
Оба верны!!!
Я скажу, что ваше решение выглядит правильно (но вы не рассматриваете приоритетную очередь планирования). Но это зависит от того, как подойдет твой профессор. Ниже приведены подходы:
Ваш подход:
Вы выполняете обычные операции с очередями. Только enque() и deque(). Таким образом, используя эти 2, ваш подход правильный!
Подход вашего профессора:
Всякий раз, когда приходит новый процесс, он помещает его в начало очереди. Вместо этого он рассматривает приоритетную очередь, где каждый новый процесс имеет высший приоритет.
Так что лучше, если вы обсудите это со своим профессором. Я бы сказал, что вы не ошиблись!!!
Наивысший приоритет отдается новому прибытию, а второй приоритет рассматривается через FIFO в очереди ожидания.
Queue
front P1 P2 P3 P4
-----------------------------------
0 P1 | [3]
1 P1 | [2] >>
2 P2 | 2 [4] >> <- P2 arrives
3 P3 | 2 4 [2] <- P3 arrives
4 P1 | [1] >> 4 2
5 P2 | 1 [3] >> 2
6 P3 | 1 3 [1]
7 P1 | [0] >> 3 1
8 P4 | 3 1 [3] <- P4 arrives. FIFO disrupted.
9 P2 | [2] >> 1 3 <- FIFO regained.
10 P3 | 2 [0] >> 3
11 P4 | 2 [2]
12 P2 | [1] >> 2
13 P4 | 1 [1]
14 P2 | [0] >> 1
15 P4 | [0]
Ее ответ был правильным.
Вы можете подойти к проблеме следующим образом:
- Откройте новую страницу блокнота
- Пронумеруйте каждую строку 0-15 (всего 16 строк; столбец SUM(Burst))
- Начните с записи задания в строку, в которую оно поступило (P1 в строке с номером 0, P2 в строке с номером 2, P3 в строке с номером 3, P4 в строке с номером 8)
- Теперь вы знаете, что каждая работа может выполняться только после этой строки.
- Затем начните заполнять оставшиеся строки в последовательном порядке, когда в строках не заданы задания и где задания оказались меньше количества пакетов, определенных для этого задания.
Надеюсь это поможет!
У вашего учителя другой подход. Всякий раз, когда в систему поступает новый процесс, он имеет более высокий приоритет, чем процессы, завершившие пакетную обработку.