Авторитетность издания
Добавить в закладки
Следующий номер на сайте
Разработка многозадачных ОСРВ встраиваемых систем на основе открытого кода
Аннотация:
Abstract:
Авторы: Шишкин В.В. () - , Улыбин В.В. () - | |
Количество просмотров: 10522 |
Версия для печати Выпуск в формате PDF (2.00Мб) |
Почти 90 % всех процессоров работают не непосредственно в компьютерах, а скрыто, в качестве так называемых встраиваемых систем, являющихся, по сути, специализированными системами контроля, управления и обработки информации. Мировой рынок встраиваемых систем оценивается экспертами в 138 миллиардов евро, а его рост – 9 % в год. Современные встраиваемые системы представляют собой сложные аппаратно-программные комплексы, функциональные требования к которым возрастают с каждым годом. Постоянное усложнение данных систем приводит к необходимости обеспечения эффективного управления аппаратным и программным обеспечением и к быстрой переносимости программного кода при переходе на новые аппаратные платформы без потери эффективности. Данные требования обеспечиваются в большей степени организацией операционной системы (ОС). Достаточно большой сегмент рынка встраиваемых систем занимают системы реального времени (РВ), оцениваемые по времени отклика системы на внешние события, называемого латентностью системы. В зависимости от значения латентности различают системы мягкого РВ (латентность – 1 мс) и жесткого РВ (латентность системы – 10-100 мкс, латентность ядра – 1-10 мкс) (Introduction to Linux for Real-Time Control. Tehnical Report. - National Institute of Standards and Technology. 2002). Несмотря на то что вся система позиционируется как система РВ, не все задачи требуют для своего выполнения режим РВ. Проведенный авторами анализ функциональных требований к авиационным комплексным системам электронной индикации и сигнализации (КСЭИС), показал, что в большинстве случаев только небольшая часть приложений (10-20 %) должна выполняться в масштабе РВ. Также зачастую этим задачам требуется только порядка 5-10 % тех сложных сервисов ОС, в которых нуждается остальная часть приложения. Данный факт может быть использован при оптимизации работы ОС РВ, что, в свою очередь, возможно лишь при реализации архитектуры ОС с многоуровневым планированием. В настоящее время наибольшими функциональными возможностями и средствами разработки обладают коммерческие ОС РВ. Некоторые из них, например LynxOS, сертифицированы для применения в системах военного и аэрокосмического назначения. Однако стоимость таких ОС РВ очень велика (до $150000 в год на одного разработчика), а закрытый исходный код ядра ОС, затрудняет его использование в системах с многоуровневым планированием. Альтернативным решением является разработка ОС РВ на основе систем, распространяемых по открытым лицензиям. Для решения поставленной задачи необходимо: разработать архитектуру ОС РВ, минимизировать размер образа ядра ОС, оптимизировать процесс загрузки ОС с целью минимизации времени старта системы. Для разработки и оценки архитектуры ОС РВ используем компонентную модель задачи РВ. Предлагаемая модель рассматривает исполняемую программу как фиксированный набор задач РВ {Ti}, каждая из которых представлена пятеркой вида Ti=<Pi,Di,Oi,Wi, pi> со следующими обязательными временными характеристиками: период выполнения Pi, предельный срок Di, начальное смещение Oi и время выполнения в наихудшем случае Wi. Кроме этого, каждой задаче назначается приоритет исполнения pi. Все эти атрибуты являются статическими в том смысле, что они определяются в процессе разработки и не изменяются во время функционирования системы. В свою очередь, задача Ti определяется как последовательность компонент {tij}, осуществляющих определенный набор действий и характеризующихся определенным временем отклика cij. По времени отклика следует различать компоненты РВ (КРВ), исполнение которых обязательно при любых обстоятельствах, и компоненты общего назначения (КОН), исполнение которых не является строго обязательным и осуществляется за счет резерва процессорного времени. Согласно данной модели планирование КОН осуществляется в соответствии с доступным резервным процессорным временем. Каждый компонент получает свой интервал времени, за пределами которого его исполнение невозможно. Если в процессе планирования выясняется, что КОН не может закончить свою работу в отведенное для него время, то он удаляется из очереди планирования. Согласно представленной модели задачи в ОС необходимо четко разделять два потока планирования – планирование РВ и планирование общего назначения. Построенная на этом принципе ОС РВ будет иметь два различных, иерархически связанных уровня планирования (рис. 1). Каждый уровень планирует и выполняет подмножество прикладных компонент, используя различные парадигмы планирования. Небольшая критичная часть компонент выполняется непосредственно на быстром микроядре с планированием в РВ, в то время как остальная часть приложений выполняется на имеющемся в наличии ядре общего назначения. Архитектура ОСРВ с двойным планированием имеет два главных преимущества перед одноядерными ОС: во-первых, использование различных уровней планирования обеспечивает высокую гибкость системы во время работы при гарантированном выполнении требований по временным ограничениям; во-вторых, иерархически подчиненное отношение между уровнями планирования гарантирует правильное исполнение КРВ независимо от политики планирования, используемой для КОН. Применение многоуровневого планирования позволяет существенно сократить стоимость разработки математического обеспечения встраиваемых систем за счет использования существующего программного обеспечения общего назначения. При этом архитектура ОС обладает высокой масштабируемостью, а эксплуатационные характеристики системы не уступают классическим одноядерным ОС РВ. В нашем случае в качестве ядра общего назначения было использовано стандартное ядро Linux (http://www.kernel.org/), поддерживающее большое количество аппаратных платформ, а в качестве ядра жесткого РВ – RTAI (http://www.rtai.org/), обеспечивающее интерфейс программирования для Linux разработчиков. Надежная и быстрая работа ядра RTAI обеспечивается его четырьмя политиками планирования: FIFO, RR, RMT (Rate Monotonic Scheduling – частотно-монотонное планирование), EFD (Earliest Deadline First – динамический алгоритм планирования). При таком решении возникает проблема организации совместного доступа двух ядер ОС к аппаратным средствам, которая в классической архитектуре ОС обеспечивается уровенем абстракции оборудования HAL (Hardware Abstraction Layer). Решением проблемы является замена стандартного HAL на RT-HAL, в качестве которого можно использовать, например, наноядро Adeos (http://www.adeos.org/).
Рис. 1. Программная архитектура ОСРВ с двойным планированием Минимизация размера образа ядра ОС заключается в правильном конфигурировании базовых модулей ядра, то есть во включении только тех функций, которые будут использованы в процессе работы, и исключении всех остальных. Процесс загрузки системы можно разделить на 2 этапа: исполнение BIOS и загрузка образа ядра в память встраиваемой системы (рис. 2).
Рис.2. Процесс загрузки ОС В качестве основы разрабатываемой BIOS была взята LinuxBIOS, которая полностью заменяет стандартную коммерческую базовую систему ввода-вывода компьютера, загрузка и настройка которой заменяется достаточно простой фазой инициализации аппаратного обеспечения, в которую входит и установка серийных консолей для вывода отладочной информации. По завершении инициализации оперативной памяти (DRAM) LinuxBIOS может продолжать загрузку уже посредством кода на C, что по сравнению с тысячами строк ассемблера является удачным решением. По окончании процесса инициализации LinuxBIOS просматривает содержимое ПЗУ (ROM) на наличие процедуры загрузки ядра ОС.
Использование базовой системы ввода-вывода на базе LinuxBIOS позволяет получить время старта системы порядка 1 секунды. Разработанный BIOS включает в себя три модуля: 1) vgacrt.bin – Video BIOS для инициализации встроенного видеоадаптера; 2) fxbios.img – Flash BIOS для инициализации встроенной flash-памяти; 3) atsysbio.bin – главный модуль BIOS, инициализирующий чипсет, и т.д. После завершения работы BIOS вызывается прерывание int19h и запускается загрузчик, в качестве которого можно использовать ROLO – загрузчик разработанный специально для применения во встраиваемых системах (http://rolo.sourceforge.net/). Основным достоинством данного загрузчика является прямой доступ к устройству хранения данных без использования промежуточных уровней трансляции. Программный пакет ROLO состоит из собственно загрузчика и программы для компоновки бинарного загрузочного образа. Бинарный загрузочный образ представляет собой комбинацию компонент ОС и специального заголовка:
Компоненты выравниваются по размеру дискового сектора (512 байт). Заголовок содержит контрольную сумму и карту загрузки. Карта представляет собой таблицу вида:
Вычисление всех адресов, а также установка значений переменных производится на стадии компоновки бинарного образа. Загрузчику остается только разместить все компоненты в оперативной памяти и передать управление блоку инициализации. Рассмотренный в статье подход к созданию ОС РВ встраиваемых систем был реализован в ОС РВ SandLinux (http://www.cybsysdev.com/products.php? section=sand_linux). Характеристиками ОС РВ являются: латентность ядра – 6 мкс, размер образа ОС РВ – 640 Кб, время загрузки ОС – 1 с. Универсальная среда разработки программного обеспечения для встраиваемых систем РВ SandLIX на базе ОС РВ SandLinux представлялась на международном салоне изобретений в Женеве в 2007 г., где была удостоена бронзовой медали. |
Постоянный адрес статьи: http://swsys.ru/index.php?page=article&id=49&lang= |
Версия для печати Выпуск в формате PDF (2.00Мб) |
Статья опубликована в выпуске журнала № 4 за 2007 год. |
Назад, к списку статей