exponenta event banner

Моделирование планировщика многоядерной системы управления

Обзор

В этом примере показано, как моделировать планирование задач управляющего приложения с использованием блоков SimEvents. SimEvents расширяет Simulink с возможностью моделирования и моделирования архитектурных компонентов системы реального времени.

Верхняя модель включает две области блоков:

  • Функциональные компоненты включают в себя две замкнутые системы. Каждый из них имеет пропорциональный контроллер, работающий на установке.

  • Архитектурные компоненты включают блоки SimEvents, моделирующие задачи и планировщик этой системы управления.

Задачи моделирования и планировщик

В этом примере контроллер моделируется как экспортированная функциональная модель Simulink. Он отображает выполнение контроллера на задачу программного обеспечения, которую операционная система периодически планирует и выполняет. Задача может быть разделена на несколько сегментов (или подзадач). Из-за зависимостей данных эти сегменты должны выполняться в последовательном порядке.

Задана задача со следующими параметрами:

  • ID: уникальный идентификатор задачи.

  • Период: как часто создается экземпляр задачи для выполнения.

  • Приоритет: приоритет задачи (меньшее значение указывает на более высокий приоритет).

  • Список запускаемых сегментов (функций): исполняемые файлы, связанные с каждым сегментом задачи. Эти исполняемые файлы представлены функциями Simulink экспортируемой модели функций.

  • Продолжительность выполнения сегмента: время завершения сегмента задачи, если он выполняется на процессоре без прерывания.

  • Требуется дисковый ресурс ввода-вывода для каждого сегмента: требует ли сегмент задачи использования защищенного от мьютекса общего ресурса (жесткого диска).

Например, блок Задача 2 определяет задачу для второго контроллера (блок Контроллер 2). Задача включает в себя два сегмента, «t2_run» и «t2_write,», оба смоделированные как функции Simulink в модели seSwcController2. В этих сегментах «t2_write» требует использования защищенного мьютексом общего ресурса.

Планировщик операционной системы моделируется со следующими компонентами:

  • Создание задачи: Блокировать задачу 1 и задачу 2 создавать задачи и управлять состояниями задач. Сущность SimEvents представляет экземпляр задачи. Свойства задачи (например, ее приоритет) моделируются как атрибуты сущности.

  • Очередь задач: После создания экземпляра задача присоединяется к очереди готовых задач, которая моделируется очередью задач OS блока очереди сущностей. Чтобы смоделировать политику планирования, основанную на непревзойденном приоритете, блок очереди настраивается для сортировки задач по атрибуту taskPriority.

  • CPU: Процессор системы моделируется как центральный процессор блока сервера сущностей. Он принимает объекты из очереди задач ОС и обрабатывает объект в течение длительности, указанной параметром продолжительности выполнения сегмента задачи. В конце этой задержки вызывается соответствующая функция Simulink этого сегмента задачи, как часть действия блока Service complete.

  • Lock/unlock Mutex: Прежде чем сегмент задачи войдет в блок CPU, он должен получить требуемый ресурс в предыдущем блоке Lock Mutex. После завершения сегмента задачи и выхода из блока CPU ресурс освобождается в блоке разблокировки Mutex.

  • Управление состояниями задачи: Блоки под маской Задачи 1 и Задачи 2 управляют состоянием выполнения задач. По завершении сегмента задачи, если задача имеет последующие сегменты для выполнения, задача направляется обратно в очередь задач OS. В противном случае этот экземпляр задачи будет завершен и удален.

Результаты и отображение

Блок CPU конфигурируется с двумя ядрами. При моделировании модели создается следующая диаграмма Ганта.

  • Задача более высокого приоритета, Задача 2 (красные полосы), запланирована на ядро 1 (y = 1).

  • Задача с более низким приоритетом, Задача 1 (синие полосы), запланирована на ядро 2 (y = 2).

  • Во втором сегменте задачи 2 используется мьютекс DiskLock. Зеленые полосы указывают на использование (y = 3).

Изучение модели

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

  • В блоке CPU настройте параметр Capacity для изменения количества ядер.

  • В блоках Задача 1 и Задача 2 настройте такие параметры, как Период и Приоритет, для изменения спецификаций задачи.

Например, если изменить значение параметра Need disk i/o resource для каждого сегмента блока Task 1 на [0 0 1], t1_write сегмент контроллера 1 должен получить значение mutex DiskLock, прежде чем он начнет работать. При моделировании создается диаграмма Ганта, иллюстрирующая это изменение.

  • Обе задачи имеют сегменты, использующие mutex DiskLock, как показано зелеными полосами (y = 3).

  • Третий сегмент задачи 1 теперь должен выполняться последовательно со вторым сегментом задачи 2 (см. y = 1), так как оба сегмента совместно используют мьютекс DiskLock.

Связанные примеры

См. также

| | | | |

Связанные темы