INTEGRITY
Продукт INTEGRITY (компания Green Hills Software) [INTEGRITY] – это ОСРВ с предсказуемым временем отклика, рассчитанная на применение в тех ситуациях, когда необходимы масштабируемость ОС, её компактность и возможность работы в режиме реального времени. Платформа INTEGRITY построена на базе микроядра velOSity [Velosity] и хорошо подходит для использования в недорогих устройствах с ограниченными аппаратными ресурсами (сюда относится большая часть потребительской электроники). Для своей операционной системы компания Green Hills предлагает интегрированную среду разработки MULTI, полностью автоматизирующую процесс создания ПО. Поддерживая многоязыковую разработку и отладку, графический интерфейс пакета MULTI дает пользователю быстрый и удобный доступ к оптимизирующим C/C++ компиляторам и функциям MISRA C. В этом инструментальном пакете содержится отладчик уровня входного языка, компоновщик, анализатор событий, профилировщик производительности, программа обнаружения ошибок периода исполнения и средство отладки, не нарушающее основного режима функционирования.
Объектно-ориентированный подход к проектированию INTEGRITY обеспечивает строгий контроль доступа и верификацию безопасности и целостности данных, взаимодействий, компонентов и системы в целом. INTEGRITY использует аппаратную защиту памяти и обеспечивает поддержку многочисленных защищенных виртуальных адресных пространств, каждое из которых может содержать несколько задач приложения. Ядро INTEGRITY оперирует в своем собственном защищенном адресном пространстве.
Для управления памятью INTEGRITY использует механизм виртуальной памяти. Чтобы гарантировать абсолютное минимальное время обработки прерываний, ядро никогда не блокирует прерывания, даже при обработке критических структур данных. Ядро также избегает длинных обработок прерываний. В качестве примера таких прерываний упоминаются операции деления и обработки строк.
Рис. 11. Структура INTEGRITY.
ОСРВ INTEGRITY включает двухуровневый планировщик ARINC-653, основанный на сегментации (Partition Scheduler), который обеспечивает гарантированное временное окно центрального процессора для каждой выполняющейся задачи. Например, если выполняются две задачи, A и B, и каждой предоставлено по 50% времени, то порождение задачей B задач B1 и B2 не повлияет на выполнение задачи A, поскольку время центрального процессора, выделенное для задачи В (50%), разделится на 3 для задач В, B1 и B2, а для задачи A останутся ее прежние 50%. Таким образом, действия одной задачи никогда не смогут повлиять на выполнение других задач, что позволяет избегать воздействия злоумышленного кода, вирусов, проникновения хакера или просто ошибок в других адресных пространствах.