При наличии ограниченных ресурсов обработки, доступных в системе, образец выполнения задачи может оказаться неспособным выполнить перед началом следующего образца задачи. Это переполнение задачи приводит к тому, что следующий образец выполнения задачи будет отложен. В результате следующая задача должна догнать, чтобы избежать очередного переполнения. Эта схема показывает упрощенное выполнение двух задач: высокоприоритетной событийно-управляемой задачи и низкоприоритетной таймер-управляемой задачи.
Из-за длительного времени выполнения управляемой событием задачи первый образец выполнения управляемой таймером задачи переполняется в начало следующего образца выполнения. Это переполнение переводит второй образец выполнения в режим догоняющего режима.
Когда задачи переполнены неоднократно, в приложении может возникнуть отставание от выполнения, потенциально нарушающее работу системы. В этих разделах рассматриваются типовые контрмеры, чтобы либо уменьшить вероятность переполнения задачи, либо решить ситуации, когда задачи переполнены, предотвращая отставание от выполнения.
Для задач, управляемых таймером, уменьшите вероятность переполнения, предоставив задаче больше времени выполнения. Увеличьте доступное время выполнения путем уменьшения скорости выполнения задачи, что эквивалентно увеличению времени между образцами выполнения задачи. Это дополнительное время предоставляет каждому экземпляру выполнения задачи больше шансов на выполнение, даже при наличии других задач. Скорость задачи, управляемой таймером, может быть скорректирована в блоке Task Manager путем установки параметра Period.
Сокращение интервала выполнения задачи не может быть гарантировано во всех случаях. Некоторые из этих случаев включают:
Для управляемых событиями задач может происходить несколько событий одновременно, в зависимости от приоритета управляемой событиями задачи. Этот случай заставляет другие задачи переполняться из-за нехватки ресурсов.
Требования в реальном времени, когда задача, таймер или событие управляются, должны отвечать на последний сигнал триггера события и новые данные независимо от того, завершены ли предыдущие образцы задачи. Этот случай фиксирует интервал выполнения задачи до значения, определенного требованиями проекта.
В этих случаях распределение задач между несколькими процессорными ядрами или разрешение на падение задач может быть выгодным в зависимости от требований проекта.
Большинство современных встраиваемых процессоров обеспечивают несколько ядер, где можно выполнять задачи. Путем распределения задач между этими несколькими процессорными ядрами, задачи могут запускаться одновременно, не конкурируя непосредственно за ресурсы обработки и уменьшая вероятность переполнения задач. В SoC Blockset™ можно задать задачу, чтобы запустить на определенном процессорном ядре в блоке Task Manager путем установки параметра Core на номер ядра. Для получения дополнительной информации о выборе, выполнении и визуализации задач на нескольких ядрах, смотрите Многоядерное выполнение и Визуализация ядра.
В некоторых проектах задача должна выполняться, когда возникает сигнал запуска задачи или с последним состоянием системы. Если задача была запущена и произошел новый триггер задачи, новый образец можно удалить или удалить. После удаления образца выполнения задачи, которая переопределяет следующий образец выполнения, начинается, когда приходит сигнал триггера события. Чтобы удалить задачи, когда происходит переполнение, в блоке Task Manager включите параметр Drop task that overrun.
В этом примере показано, как сконфигурировать задачу в блоке Task Manager, чтобы она удалялась, когда переполнение задачи происходит во время симуляции.
Переполнение задачи без перетаскивания задачи
Эта модель моделирует программное обеспечение, работающее на процессоре ARM. Блок Task Manager планирует выполнение Подсистемы, управляемой таймером, внутри блока Программного обеспечения Модели-ссылки. Блок Случайное число моделирует источник данных, который дискретизирует задача, управляемая таймером.
В этой модели длительность задачи 0,6 секунды превышает период задачи 0.5
секунд, вызывающих переполнение задачи. Нажмите кнопку Run, чтобы создать и запустить модель. Когда модель заканчивает работать, Данные моделирования Inspector показывают время выполнения задачи.
Проверка времени выполнения задач показывает, что начало каждого следующего образца задачи задерживается от ожидаемого 0.5
-секундный интервал переполнением предыдущей задачи. Даже когда задачи Drop, которые переполнены, установлены в off
, не более 2 образцы задачи могут переполнить выполнение. Как показано на Timer_Task_drop
сигнал, дополнительные образцы задачи, которые переполнены автоматически.
Переполнение задачи с перетаскиванием задачи
Используя ту же ранее показанную модель, а не переполнение управляемой таймером задачи, задача падает, поэтому следующий образец задачи начинается с 0.5
-секундный интервал. Откройте маску диалогового блока Task Manager и выберите Drop tasks that overrun. Еще раз запустите модель. Откройте Данные моделирования Inspector, чтобы просмотреть выполнение задачи и удалить образцы задачи.