В компьютерной системе необходимо выполнить некоторое количество задач, которые могут выполняться параллельно или последовательно. Для запуска некоторых задач необходимы данные, которые получаются как результаты выполнения другой задачи — поставщика данных. Если зависимая задача получает данные от другой задачи (поставщика данных), то выполнение зависимой задачи не может начаться раньше завершения задачи поставщика. Длительность выполнения задачи не зависит от других параллельно выполняемых задач, приостановка выполнения не допускается.
Для выполнения некоторых задач в системе необходимо запустить несколько параллельно выполняемых процессов. Все такие процессы запускаются в момент старта соответствующей задачи и заканчиваются в момент её завершения.
В таблице представлены идентификатор (ID) каждой задачи, её длительность в секундах и количество процессов, а также ID поставщика данных для зависимых задач. Для независимых задач в качестве ID поставщика данных указан 0.
Одновременно может выполняться не более 5 процессов. Задача может стартовать только, если возможен запуск всех необходимых для этой задачи процессов. Например, если в какой-то момент времени выполняется 4 процесса, то можно начать выполнение задачи, требующей запуска одного процесса, но нельзя начать выполнение задачи, требующей запуска двух и более процессов.
Если в какой-то момент к запуску готовы несколько задач, в первую очередь запускается задача с меньшим ID.
За какое время будут выполнены все задачи?
В ответе напишите число — требуемое время в секундах.
Добавим в таблицу столбец «Время окончания процесса» и запишем туда длительности независимых процессов. Затем рассчитаем время окончания зависимых процессов. В результате получим таблицу.
Нарисуем время выполняемых процессов. Если количество требуемых процессов более 1, покрасим процесс в красный цвет:
Начнем двигать вправо процессы так, чтобы всегда было только 4 выполняемых процесса. Первыми будут выполняться процессы 1,2 и 3. Больше запустить процессов нельзя, так как 1 и 2 процессы занимают по 2 процесса. Как только завершиться самый короткий процесс (в этой задаче процесс 3), запускаем следующий процесс. Помним, что запущенный процесс должен иметь минимальный ID. Запускаем следующий по ID процесс 5. Расставляем далее процессы, следя за тем, чтобы одновременно выполнялось не более 5 процессов (с учетом количества процессов), запускались независимые процессы от текущих и с минимальным ID. Получаем следующую таблицу:
Все процессы будут выполнены за 34 мс.
Ответ: 34.

