К содержанию

Подтема 6 из 6 · дополнительный урок

Задержки и ограниченные ресурсы

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

Задержка передачи

Это дополнительный урок: такие задачи есть в подборках, но не было на экзаменах. Что меняется, если результат доходит до получателя с задержкой?

Готовность поставщика сдвигается на задержку: начало — самое позднее «окончание + задержка». Пусть процессы 1 (3 мс) и 2 (5 мс) ни от кого не зависят, 3 (4 мс) ждёт оба, 4 (2 мс) ждёт 3, а каждый результат идёт 2 мс. Тогда 3 начнёт в max(3; 5) + 2 = 7 и закончит в 11, а 4 начнёт в 11 + 2 = 13 и закончит в 15.

Задержку прибавляют один раз к самому позднему окончанию, а не к каждому поставщику с последующим сложением. Независимым процессам она не нужна — им ничего не передают. В Excel это =МАКС(E2:F2)+2 для зависимых процессов.

Неизвестная длительность

Время работы одного процесса неизвестно, а общее время дано. Как его найти?

Выразить общее время через неизвестное x и решить уравнение. В учебном примере пусть процесс 6 работает x мс. Он начинает в 8 и заканчивает в 8 + x. Процесс 8 ждёт 6 и 7 (тот готов к 13): начинает в max(8 + x; 13), заканчивает на 1 мс позже. Общее время — max(9 + x; 14).

Если общее время 16, то 9 + x = 16 и x = 7. Если 14 — подходит любое x от 1 до 5: процесс 6 успевает раньше 7 и на итог не влияет. Если спрашивают наибольшее такое x, ответ 5. А общее время 13 невозможно при любом x: ветвь через 7 уже даёт 14.

Ограниченные ресурсы

Что, если одновременно может идти не больше двух процессов?

Тогда готовый процесс ждёт ещё и свободного места. Расписание строят по шагам: в момент, когда место освобождается, запускают готовый процесс по правилу из условия — например, с меньшим ID.

Процессы 1 (4 мс), 2 (4 мс) и 3 (3 мс) ни от кого не зависят, 4 (2 мс) ждёт 1, 5 (1 мс) ждёт 2 и 3. Мест два. В 0 готовы 1, 2 и 3 — запускаем 1 и 2. В 4 оба заканчиваются: готовы 3 и 4 — запускаем их. В 6 заканчивается 4, но 5 ещё ждёт процесс 3. В 7 заканчивается 3 — запускаем 5, всё готово к 8.

Два места: процесс 3 готов с самого начала, но ждёт свободного места до 4. Пунктир — где процессы шли бы без ограничения.

Правило выбора берут из условия дословно: «с меньшим ID», «тот, кто раньше стал готов». От правила зависит ответ.

Взаимное исключение

Два процесса не могут идти одновременно. Как это учесть?

Второй из них ждёт не только своих поставщиков, но и окончания первого. В учебном примере пусть 4 и 5 не могут идти вместе, первым идёт меньший ID. Оба готовы в 6: 4 идёт с 6 до 8, 5 — с 8 до 13. Процесс 7 ждёт 5 и начинает в 13, процесс 8 — в 15. Общее время 16 вместо 14.

Процесс 5 ждёт окончания 4 и сдвигается на 2 мс, за ним — 7 и 8. Пунктир — раннее расписание без запрета.

Итого

  • Задержканачало = самое позднее окончание + задержка
  • Неизвестное xобщее время через x, потом уравнение
  • Ограничение местготов и есть место — по правилу условия
  • Взаимное исключениевторой ждёт окончания первого

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1
Поставщики процесса заканчиваются в 4 и 6, задержка передачи — 5 мс. Когда процесс начнёт?
ОтветСкрыть ответ
Ответ
В 11: max(4; 6) + 5. Задержку прибавляют один раз.
Вопрос 2
Общее время выражено как max(12; x + 5). При каких натуральных x оно равно 12? А равно 15?
ОтветСкрыть ответ
Ответ
Равно 12 при x от 1 до 7. Равно 15 при x = 10.
Вопрос 3
Мест два, процессы 1, 2, 3 ни от кого не зависят и работают по 3 мс. Из готовых запускают меньший ID. Когда закончится процесс 3?
ОтветСкрыть ответ
Ответ
В 6: он ждёт свободного места до 3 и работает ещё 3 мс.
Вопрос 4
Почему при ограниченных местах начало процесса уже не равно «самому позднему окончанию поставщиков»?
ОтветСкрыть ответ
Ответ
Это только момент, когда процесс готов. Запустится он, когда появится свободное место, — может быть, позже.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Задержка 2 мс

Процессы: 1 — 3 мс, без поставщиков; 2 — 5 мс, без поставщиков; 3 — 4 мс, ждёт 1 и 2; 4 — 2 мс, ждёт 3. Каждый зависимый процесс запускается через 2 мс после готовности всех результатов, независимые — в 0. Найди начало процесса 4 и общее время.

Введите два числа через пробел в том порядке, в каком их спрашивают.

Две задержки

Поставщик A заканчивается в 6, задержка его результата 4 мс; поставщик B заканчивается в 8, задержка 1 мс. Когда может начать получатель?

Введите число.

Неизвестная длительность процесса 6

В учебном примере время работы процесса 6 — натуральное число x. Найди x, если общее время равно 16 мс, и наибольшее x при общем времени 14 мс.

Введите два числа через пробел в том порядке, в каком их спрашивают.

Два места, меньший ID

Два места, из готовых выбирают меньший ID, пауза внутри процесса запрещена: 1 — 4 мс, 0; 2 — 4 мс, 0; 3 — 3 мс, 0; 4 — 2 мс, ждёт 1; 5 — 1 мс, ждёт 2 и 3. Найди общее время.

Введите число.

Два места, пять процессов

Два места, меньший ID среди готовых: 1 — 3 мс, 0; 2 — 2 мс, 0; 3 — 4 мс, 0; 4 — 1 мс, ждёт 1 и 2; 5 — 2 мс, ждёт 3. Найди общее время.

Введите число.

Без ограничения мест

Для той же системы без ограничения мест найди общее время. На сколько ограничение его увеличило?

Введите два числа через пробел в том порядке, в каком их спрашивают.

Процессы 4 и 5 не вместе

В учебном примере процессы 4 и 5 не могут идти одновременно, первым идёт меньший ID. Каким станет общее время?

Введите число.