Проблема:
Пять пакетных заданий от A до E поступают в вычислительный центр почти одновременно. Они оценили время выполнения 10, 6, 2, 4 и 8 минут. Их (определяемые извне) приоритеты равны 3, 5, 2, 1 и 4 соответственно, причем 5 является наивысшим приоритетом. Определить среднее время оборота процесса. Игнорировать накладные расходы на переключение процессов. Для циклического планирования предположим, что система является мультипрограммной и что каждое задание получает свою справедливую долю ЦП. Все задания полностью привязаны к ЦП.
Решение №1 Следующее решение взято из этого страница :
Для циклического перебора в течение первых 10 минут каждое задание получает 1/5 часть ЦП. По истечении 10 минут С финиширует. В течение следующих 8 минут каждое задание получает 1/4 ЦП, после чего время D завершается. Затем каждое из трех оставшихся заданий получает 1/3 процессора на 6 минут, пока B не завершится и так далее. Время завершения пяти заданий составляет 10, 18, 24, 28, 30, в среднем 22 минуты.
Решение №2. Следующее решение предоставлено Корнельским университетом, его можно найти здесь, и явно отличается от предыдущей, хотя задача дана в точно виде (это решение, кстати, имеет больше смысла для меня) :
Помните, что время оборота — это количество времени, которое проходит между поступлением задания и завершением задания. Поскольку мы предполагаем, что все задания поступают в момент времени 0, время оборота будет просто временем их завершения. (a) Циклический алгоритм: в приведенной ниже таблице показано, какие задания будут обрабатываться в течение каждого кванта времени. * указывает, что задание завершается в течение этого такта.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
A B C D E A B C* D E A B D E A B D* E A B E A B* E A E A E* A A*
Результаты различаются: например, в первом C заканчивает через 10 минут, тогда как во втором C заканчивает через 8 минут.
Какой из них правильный и почему? Я в замешательстве.. Заранее спасибо!