Курс№22. Многопроцессные системы0%
Теория · номер 22 из 27

Многопроцессные системы

Дана таблица процессов и их зависимостей. Считаем начало и конец каждого процесса в таблице и отвечаем на вопрос формулой.

5 разделов~30 минут1 первичный балл
  1. 1Что проверяет номер
  2. 2Шаги
  3. 3Вопросы и формулы подсчёта
  4. 4Ловушки
  5. 5Домашка
Раздел 1 из 5

Что проверяет номер

Весь номер держится на одной мысли: сначала для каждого процесса считаем, когда он начался и закончился. Как только эти два столбца готовы, любой вопрос решается одной формулой.

Таблица процессов: ID, время выполнения, от каких процессов зависит (через «;»). Процесс стартует сразу после окончания самого позднего из тех, от кого зависит. Спрашивают: сколько процессов идёт параллельно в какую-то миллисекунду, сколько завершится за N мс, или за какое минимальное время закончится всё.

Простыми словами

Представь стройку дома. Фундамент занимает 3 дня и не зависит ни от чего. Стены занимают 5 дней и ждут фундамент. Крыша занимает 2 дня и ждёт стены. Окна занимают 1 день и тоже ждут стены.

Фундамент идёт с момента 0 до 3. Стены начинаются в 3 и заканчиваются в 8. Крыша идёт от 8 до 10, окна от 8 до 9. На 9-й день одновременно делают и крышу, и окна. Весь дом готов к моменту 10.

Если работа ждёт несколько других, она начинается, когда закончится самая поздняя из них. В №22 всё то же самое, только вместо дней миллисекунды, а вместо работ процессы.

Раздел 2 из 5

Шаги

Разберём на маленькой таблице. Процесс без зависимостей стартует в момент 0. Процесс, который ждёт другие, стартует, когда закончился самый поздний из них. Посчитай столбцы начала и конца для таблицы ниже, она пригодится в заданиях.

  1. Раздели третий столбец по ; на отдельные столбцы (Данные → Текст по столбцам, разделитель ;). Получится до 4 столбцов зависимостей, пустые заменяем нулём.
  2. Добавь строку с ID 0 и нулями: так ВПР на зависимость «0» (нет зависимости) вернёт 0, а не ошибку.
  3. Начало процесса: =МАКС(ВПР(зав1; таблица; столбец_конца; 0); ВПР(зав2; …); …). Берём конец самой поздней зависимости.
  4. Конец процесса: = начало + время.
  5. Нумерация миллисекунд с 1: процесс со временем 3, начавшийся в момент 0, занимает мс 1, 2, 3; значит выполняется на мс t, если начало < t <= конец.
  6. Конец всего = МАКС по столбцу концов. Это минимальное время всей совокупности.
Попробуй самучебная задача

Дана таблица: ID, время (мс), зависимости. За какое минимальное время завершатся все процессы?

IDвремязависит от
140
230
321
451;2
513;4
632

Вся таблица с адресами ячеек

Пусть в строке 1 заголовки. После шагов 1 и 2 столбцы такие: A это ID, B время, D, E, F зависимости, G начало, H конец. Строка 2 это добавленный процесс с ID 0 и нулями везде, а настоящие процессы идут со строки 3.

В ячейке H3 считаем конец: =G3+B3. В ячейке G3 считаем начало:

код
=МАКС(ВПР(D3;$A$2:$H$8;8;0);ВПР(E3;$A$2:$H$8;8;0);ВПР(F3;$A$2:$H$8;8;0))

Что это значит:

Протяни G3 и H3 вниз, и таблица посчитается сама, даже если процесс зависит от того, что записан ниже.

Если таблица пишет про циклическую ссылку

Формула смотрит на всю таблицу, включая свою строку, и программа может принять это за цикл, хотя настоящего цикла нет. Тогда включи итеративные вычисления в настройках: в Excel это Файл → Параметры → Формулы, в LibreOffice Сервис → Параметры → Calc → Вычислить.

Таблица после расчёта

Так выглядят столбцы начала и конца для таблицы из задания.

IDвремязависит отначалоконец
14004
23003
32146
451;249
513;4910
63236

Процесс 4 ждёт процессы 1 и 2. Они заканчиваются в 4 и 3, берём большее, поэтому начало 4. Процесс 5 ждёт 3 и 4, они заканчиваются в 6 и 9, поэтому начало 9.

Раздел 3 из 5

Вопросы и формулы подсчёта

Формулы одинаковы для всех файлов, меняются только числа из вопроса.

Почему условия именно такие

Миллисекунды нумеруются с единицы: процесс с началом 4 и концом 9 занимает миллисекунды с 5-й по 9-ю. Отсюда правило: процесс идёт на миллисекунде t, если начало < t и конец >= t. При t = 4 он ещё не идёт, потому что начало 4 не меньше 4, а при t = 9 уже идёт, потому что конец 9 не меньше 9.

Для таблицы выше формула выглядит так: =СЧЁТЕСЛИМН(G3:G8;"<5";H3:H8;">=5"). Здесь t = 5, для другого вопроса поменяй только число.

Попробуй самучебная задача

Для той же таблицы: сколько процессов выполняется на 5-й мс?

Попробуй самучебная задача

Для той же таблицы: сколько процессов завершится за первые 6 мс?

Попробуй самучебная задача

Для той же таблицы: сколько процессов начнутся не ранее 2-й мс и завершатся не позднее 9-й?

Раздел 4 из 5

Ловушки

Ловушка

Строка с ID 0 обязательна: без неё ВПР даёт #Н/Д.

Ловушка

В ВПР последний аргумент 0 (точное совпадение), иначе при несортированных ID получишь мусор.

Ловушка

Не забудь, что нумерация мс с 1 (в нашей таблице процесс 3 начинается на 5-й мс, значит начало = 4).

Ловушка

Пустые зависимости заменить нулями, иначе МАКС получит пустые строки.

Раздел 5 из 5

Домашка

Задачи с настоящих экзаменов и из банка ФИПИ. Скачай файл к задаче, реши в Excel или LibreOffice и впиши ответ.

Задачи «Попробуй сам» учебные, в домашке задачи с настоящих экзаменов и из банка ФИПИ. Номер решается в Excel или LibreOffice.