При наличии в системе ограниченных ресурсов обработки экземпляр выполнения задачи может не быть выполнен до начала следующего экземпляра задачи. Это переполнение задачи приводит к задержке начала следующего экземпляра выполнения задачи. В результате следующая задача должна догнать, чтобы избежать очередного перерасхода. На этой схеме показано упрощенное выполнение двух задач: высокоприоритетной задачи, управляемой событиями, и низкоприоритетной задачи, управляемой таймером.

Из-за длительного времени выполнения задачи, управляемой событиями, первый экземпляр выполнения задачи, управляемой таймером, переполняется в начале следующего экземпляра выполнения. Это переполнение переводит второй экземпляр выполнения в режим восполнения.
При многократном переполнении задач в приложении может возникнуть отставание в выполнении, потенциально нарушающее работу системы. В этих разделах рассматриваются типичные контрмеры для уменьшения вероятности переполнения задач или обработки ситуаций, когда задачи переполняются, предотвращая отставание в выполнении.
Для задач, управляемых таймером, уменьшите вероятность переполнения, предоставив задаче больше времени выполнения. Увеличьте доступное время выполнения, уменьшив скорость выполнения задачи, что эквивалентно увеличению времени между экземплярами выполнения задачи. Это дополнительное время предоставляет каждому экземпляру выполнения задачи больше шансов на выполнение даже при наличии других задач. Скорость выполнения задачи, управляемой таймером, может быть скорректирована в блоке диспетчера задач путем установки параметра Period.
Сокращение интервала выполнения задачи не может быть гарантировано во всех случаях. Некоторые из этих случаев включают в себя:
Для задач, управляемых событиями, одновременно может происходить несколько событий в зависимости от приоритета задачи, управляемой событиями. Этот случай вынуждает другие задачи перегружаться из-за нехватки ресурсов.
Требования реального времени, когда задача, таймер или управляемое событие, должны реагировать на последний сигнал триггера события и новые данные независимо от того, выполнены ли предыдущие экземпляры задачи. В этом случае интервал выполнения задачи устанавливается в соответствии с требованиями проекта.
В этих случаях распределение задач между несколькими процессорными ядрами или разрешение удаления задач может оказаться выгодным в зависимости от требований к конструкции.
Большинство современных встраиваемых процессоров имеют несколько ядер, в которых можно выполнять задачи. Распределяя задачи между этими несколькими ядрами процессора, задачи могут выполняться одновременно, не конкурируя напрямую за ресурсы обработки и снижая вероятность переполнения задач. В SoC Blockset™ задачу можно настроить на выполнение на определенном ядре процессора в блоке Диспетчер задач, установив для параметра Core значение core number. Дополнительные сведения о выборе, выполнении и визуализации задач на нескольких ядрах см. в разделах Многоядерное выполнение и визуализация ядра.
В некоторых конструкциях задача должна выполняться при возникновении сигнала запуска задачи или при последнем состоянии системы. Если задача была запущена и возник новый триггер задачи, новый экземпляр можно удалить или удалить. После удаления экземпляра выполнения задачи, которая переполняется, следующий экземпляр выполнения запускается, когда поступает сигнал запуска события. Чтобы удалить задачи при переполнении, в блоке диспетчера задач включите параметр Drop task that overrun.
В этом примере показано, как настроить задачу в блоке диспетчера задач на удаление при переполнении задачи во время моделирования.
Переполнение задачи без ее удаления
Эта модель моделирует программное приложение, работающее на процессоре ARM. Блок диспетчера задач планирует выполнение подсистемы, управляемой таймером, внутри блока ссылки на модель приложения программного обеспечения. Блок случайных чисел моделирует источник данных, который отсчитывает задача, управляемая таймером.

В этой модели длительность задачи 0,6 секунды превышает период задачи 0.5 секунд, что приводит к переполнению задачи. Нажмите кнопку Выполнить (Run), чтобы построить и запустить модель. По завершении работы модели инспектор данных моделирования показывает время выполнения задачи.

Проверка времени выполнения задач показывает, что начало каждого следующего экземпляра задачи задерживается от ожидаемого 0.5-секундный интервал по переполнению предыдущей задачи. Даже если для задач удаления, которые переполняются, установлено значение off, выполнение может переполняться не более чем 2 экземплярами задачи. Как показано на Timer_Task_drop сигнал, дополнительные экземпляры задачи, которые переполняются, автоматически сбрасываются.
Переполнение задачи при сбросе задачи
Используя ту же самую ранее показанную модель, а не перевыполняя задачу, управляемую таймером, задача падает, поэтому следующий экземпляр задачи начинается в 0.5-секундный интервал. Откройте маску диалогового окна «Блок диспетчера задач» и выберите «Удалить задачи, которые переполняются». Запустите модель еще раз. Откройте инспектор данных моделирования для просмотра выполнения задачи и удаленных экземпляров задачи.
