Написать обработчик прерываний по таймеру handler:, который переключает контекст выполнения между двумя «задачами», а после истечения тайм-аута — выполняет третью. Написать также подпрограмму init:, которая подготавливает «задачи» к запуску и настраивает прерывание по таймеру соответственно такту первой задачи. Ей передаётся шесть параметров (через регистры a*):

  1. Адрес первой задачи
  2. Продолжительность такта (квант работы) первой задачи
  3. Адрес второй задачи
  4. Продолжительность такта (квант работы) второй задачи
  5. Адрес завершающей задачи
  6. Время, по истечении которого надо запустить завершающую задачу

Требования и допущения:

Значения ощутимо отличаются от запуска к запуску и зависят от производительности компьютера (привет Java?). В тестах проверка округляется аж до целого.

58
29
3000

То же замечание, что и для прошлой задачи: на ноутбуке скорость работы процессора может повышаться под нагрузкой (на EJudge подобного поведения не ожидается). Либо запускайте тест подряд несколько раз, либо поставьте вместо 3000 (три секунды чистого времени) число побольше.

2.0491511441101125


CategoryHomework

LecturesCMC/ArchitectureAssembler2024/Homework_TwoTasks (последним исправлял пользователь FrBrGeorge 2024-04-13 18:04:14)