Задание 22 ЕГЭ по информатике — Многопроцессорные системы: расписание процессов
Разбор номера «Многопроцессорные системы: расписание процессов»: как устроено задание, настоящие формулировки из тренажёра с подсказками и официальным решением. Окно практики открывается сразу — без регистрации и онбординга.
Задание 22 (№22 — Многопроцессорные системы: расписание процессов) — вопрос первой части экзамена по информатике: короткий ответ, который проверяется автоматически. Ниже — реальные формулировки из тренажёра с подсказками и разбором; проверка работает прямо на этой странице.
Окно примера ниже — то же, что на сайте: подсказки по одной, автопроверка ответа и разбор.
Примеры задания 22
№ 22Пример 1краткий ответ★★★★★1 первичный балл
В компьютерной системе необходимо выполнить некоторое количество вычислительных процессов, которые могут выполняться параллельно или последовательно. Для запуска некоторых процессов необходимы данные, которые получаются как результаты выполнения одного или нескольких других процессов – поставщиков данных. Если зависимый процесс получает данные от других процессов (поставщиков данных), то выполнение зависимого процесса не может начаться раньше завершения всех процессов поставщиков. Длительность процесса не зависит от других параллельно выполняемых процессов, приостановка выполнения процесса не допускается. В таблице представлены идентификатор (ID) каждого процесса, его длительность в мс и ID поставщиков данных для зависимых процессов. Для независимых процессов в качестве ID поставщика данных указан 0. В момент, когда процесс готов к запуску, он ставится в очередь. Если несколько процессов оказываются готовы к запуску одновременно, первым ставится в очередь тот процесс, у которого меньше ID. Одновременно может выполняться не более 3 процессов. Если в какой-то момент в системе работает менее 3 процессов, то при наличии готовых к запуску процессов выбирается и запускается первый…
Подсказка 1. Выпиши зависимости процессов: кто от кого ждёт данные, и длительности всех процессов.
Подсказка 2. Время окончания — это длительность процесса плюс максимум времён окончания его поставщиков; независимые процессы идут параллельно.
Подсказка 3. Ответ — максимум времён окончания или время старта последнего процесса; типичная ошибка — сложить все длительности, забыв про параллельность.
Разбор.
Решение. Нарисуем время выполняемых процессов: Начнем двигать вправо процессы так, чтобы всегда было только 3 выполняемых процесса и не больше, при этом соблюдая условие задачи. Все процессы будут выполнены за 42 мс. Приведем решение на языке Python. import collections def solve(): # Загрузка данных из файла with open("22dz.txt", "r") as f: processes_data = {} for line in f: parts = line.strip().split('\t') pid = int(parts[0]) duration = int(parts[1]) providers = [] if parts[2] == '0' else [int(p) for p in parts[2].split(',')] processes_data[pid] = {"duration": duration, "providers": providers} current_time = 0 running = {} # {pid: end_time} ready = collections.deque() completed = set() # Создаем зависимости для каждого процесса dependencies = {pid: set(data["providers"]) for pid, data in processes_data.items()} # Изначально запускаем процессы без зависимостей for pid, deps in dependencies.items(): if not deps: ready.append(pid) ready = collections.deque(sorted(ready)) while len(completed)
Ответ.
42
№ 22Пример 2краткий ответ★★★★★1 первичный балл
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Приостановка выполнения процесса не допускается. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы — время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс независимый, то в таблице указано значение 0. Типовой пример организации данных в файле ID процесса B | Время выполнения процесса B (мс) | ID процесса(-ов) A 1 | 3 | 0 2 | 4 | 1 3 | 2 | 2; 4 4 | 5 | 0 5 | 8 | 1; 4 6 | 3 | 1 Определите минимальное время (в мс), за которое завершится процесс 1016. В ответе укажите только число – количество мс. Выполните задания, используя данные из файла ниже: Задание 22
Подсказка 1. Выпиши зависимости процессов: кто от кого ждёт данные, и длительности всех процессов.
Подсказка 2. Время окончания — это длительность процесса плюс максимум времён окончания его поставщиков; независимые процессы идут параллельно.
Подсказка 3. Ответ — максимум времён окончания или время старта последнего процесса; типичная ошибка — сложить все длительности, забыв про параллельность.
Разбор.
Решение. Процесс 1016 зависит от процесса 1003, а процесс 1003 зависит от процессов 1009 и 1013. 1009 является независимым процессом. Процесс 1013 зависит от 1006, а процесс 1006 зависит от процесса 1021, который является независимым процессом. Минимальное время (в мс), за которое завершится процесс 1013 равно сумме времен процессов 63.
Ответ.
63
Как устроена практика в тренажёре
Опыт за каждое решение
Чистое решение без подсказок ценится выше: опыт, уровни и серии растут с каждым заданием, а не за клики.
Ошибки не пропадают
Нерешённое возвращается в работу над ошибками — тренажёр приведёт к заданию снова, пока оно не закроется без помощи.
Прогноз балла
После нескольких решённых номеров тренажёр показывает прогнозный балл и говорит, какие темы подтянуть, чтобы его поднять.
Закрепи задание 22 в тренажёре
Окно практики откроется сразу — без имени и онбординга. Прогресс сохранится, как только укажешь имя.