Отличие механизма современных ОСРВ

Концепции, лежащие в основе большинства существующих в наши дни ОСРВ, уходят своими корнями в конец 70-х начало 80-х годов прошлого столетия. Эти концепции разрабатывались с учетом требований того времени, и по мере увеличения сложности, масштабов, скорости систем и повышения требований к их надежности все чаще проявлялись недостатки традиционных ОСРВ.

Принципиальные отличия ОСРВ от ОС общего назначения заключаются в следующем:

1. Если ОС общего назначения, такие, как UNIX, ориентированы на оптимальное распределение ресурсов компьютера между пользователями и задачами, то в ОСРВ подобная задача отходит на второй план, т.е. главной становится успеть среагировать на событие, происходящее на объекте.

2. Применение ОСРВ всегда связано с аппаратурой, с объектом, с событиями, происходящими на объекте. СРВ, как аппаратно-программный комплекс, включает в себя датчики, регистрирующие события на объекте, модули ввода/вывода, преобразующие показания датчиков в цифровой вид, пригодный для обработки этих показаний на компьютере, и, наконец, компьютер с программой, реагирующей на события, происходящие на объекте. ОСВР ориентирована на обработку внешних событий, и это приводит к коренным отличиям в структуре системы, в функциях ядра, построении системы ввода/вывода. ОСРВ может быть похожа по пользовательскому интерфейсу на ОС общего назначения. Однако устроена она совсем иначе.

3. Применение ОСРВ всегда конкретно. ОС общего назначения воспринимается пользователями как готовый набор приложений. ОСРВ служит только инструментом для создания конкретного аппаратно-программного комплекса. Проектируя конкретную СРВ, программист всегда должен знать точно, какие события могут произойти на объекте, а также критические сроки обслуживания каждого из таких событий.

4. Коренное отличие СРВ от систем общего назначения – четкое разграничение программных систем (среды) разработки и исполнения.

Система исполнения ОСРВ – набор инструментов (ядро, драйверы, исполнительные модули), обеспечивающих функционирование приложений РВ. Современные ОСРВ поддерживают целый спектр аппаратных архитектур, на которых работают системы исполнения (Intel, Motorola, RISC, MIPS[1], PowerPC и другие), поскольку набор аппаратных средств – часть комплекса РВ, и аппаратура должна быть адекватна задачам СРВ. Ведущие ОСРВ покрывают целый ряд наиболее популярных архитектур, удовлетворяя разным требованиям в части аппаратуры. Систему исполнения ОС РВ и компьютер, на котором она исполняется, называют "целевой" (target) системой.

Система разработки – набор средств, обеспечивающих создание и отладку приложений РВ, т.е. компиляторы, отладчики, всевозможные вспомогательные инструменты, которые работают в популярных и распределенных ОС (Windows, UNIX и др.).

Кроме того, многие ОСРВ имеют и так называемые резидентные средства разработки, исполняющиеся в среде самой ОСРВ.

Функционально средства разработки ОСРВ отличаются от привычных систем разработки (Developers Studio, TaskBuilder), так как они содержат средства удаленной отладки, средства профилирования (измерение времен выполнения отдельных участков кода), средства эмуляции целевого процессора, специальные средства отладки взаимодействующих задач, а иногда и средства моделирования.

5. Межпроцессное взаимодействие. В традиционных ОСРВ для межпроцессного взаимодействия (IPCInter-Process communication) используется модель "разделяемой памяти" (share memory). Проблема обеспечения стабильности работы системы с IPC через разделяемую память вполне разрешима, однако в общем случае такая задача требует весьма аккуратного управления разработкой и сопровождением программного обеспечения и достаточно длительного периода выявления ошибок. Перечисляя недостатки межпроцессного взаимодействия через разделяемую память, следует упомянуть также о том, что данный метод плохо подходит для распределенных систем и не характеризуется высокой степенью совместимости с управлением памятью. Работоспособность системы с IPC через разделяемую память достижима и в этих случаях, однако есть способы лучше.

Рис.1.2. Два типа межпроцессного взаимодействия

В ряде современных ОСРВ модель межпроцессного взаимодействия реализована через "передачу сообщений" (message passing). Согласно этой модели (рис.1.2), акт взаимодействия заключается в том, что один процесс посылает другому процессу сообщение; при этом может потребоваться лишь четыре системных вызова. Данный подход прост и надежен; прохождение сообщений в процессе работы системы может легко отслеживаться, что придает разработке и отладке ПО свободу и непринужденность. Прямым следствием межпроцессного взаимодействия через передачу сообщений является возможность распределять приложение между многочисленными центральными и DSP-процессорами, может быть разделено на несколько задач, создаваемых разными разработчиками.

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

6. Распределение памяти.В традиционных ОСРВ для динамического распределения памяти используется механизм, подобный вызову функции malloc в языке Си. При выполнении этой команды исследуется весь массив памяти в поисках свободной области достаточно большого размера. При возникновении потребности в памяти ОСРВ берут из всего объема памяти кусок наиболее подходящего размера. Когда блок памяти перестает быть нужным, он отходит в связанный список свободных буферов. Преимущества такого решения состоят в том, что степень фрагментации памяти равна нулю, время распределения памяти строго детерминировано, а незанятый блок всегда находится либо в связанном списке, либо в начале области свободной памяти.

7. Обработка ошибок.В классических ОСРВ используется установленный порядок обработки ошибок. Для выявления ошибок по совершении системного вызова проверке подвергается каждое возвращаемое значение, и всю полноту ответственности за надежность работы системы несет каждый участвующий в проекте специалист. Дополнительным неудобством является то, что значительная часть приложения будет состоять из кодов ошибок, из-за чего оно увеличивается в размерах, его труднее документировать и отлаживать.

В большинстве современных ОСРВ обработчики ошибок связаны с системными вызовами. Если начинает исполняться следующая строка кода, значит все в порядке. Если же происходит ошибка, в дело вступает "центральный обработчик ошибок". В ОС OSE обработка ошибок ведется на трех уровнях: уровне процесса, уровне блока и уровне системы, что даёт высокую степень гибкости в выборе разрешения связанных с ошибками проблем (рис. 1.3). Такой механизм обработки ошибок не только намного надёжнее, он позволяет создавать более компактный и простой программный код.

8. Распределенные многопроцессорные системы.Большинство традиционных ОСРВ разрабатывались с прицелом на единственный центральный процессор, установленный на единственной плате. В наши дни все чаще требуется поддержка многопроцессорных систем, в том числе с поддержкой процессоров цифровой обработки сигналов (DSP-процессоры). В современной ОС OSE обработчик связей (link handler) позволяет распределять приложение по многочисленным центральным и/или DSP-процессорам, беря сообщение от одного процесса, работающего на одном процессоре, и вручая его другому процессу, исполняющемуся на другом центральном или DSP-процессоре.

Рис.1.3. Модель обработки ошибок в традиционной ОСРВ и в операционной системе OSE

9. Высокая готовность и безопасность.Сейчас ОСРВ все чаще применяются в критичных к безопасности приложениях и в системах с высоким коэффициентом готовности, и большинство поставщиков ОС РВ ищут способы решения возникающих в этой связи проблем. Если с процессом что-нибудь будет "не так", ядро будет обязательно об этом проинформировано. Используя эти системные вызовы, разработчик может реализовать "горячую" замену и дублирование (резервирование) аппаратных средств. При отказе или удалении какого-либо устройства происходит уведомление об этом ядра, после чего ядро может провести поиск (hunt) второго подобного устройства и начать работать (attach) с этим устройством в том случае, если последнее окажется работоспособным.

Рассмотрим системный инструментарий современных ОСРВ.

Симуляторы ОСРВ. По принципу своей работы инструментальные средства Soft Kernel и Soft Environment, созданные компанией OSE, напоминают пакет, служащий буфером между ОС и тем или иным аппаратным модулем (BSPboard support package), только в данном случае в роли такого модуля выступает интерфейс 32-разрядных Windows-приложений (Win32 Api). Инструмент Soft Environment способен использовать функциональные возможности хост-машины и, с другой стороны, взаимодействовать с внешним миром. Запустив одновременно несколько инструментов Soft Kernel на одной хост-машине, можно создать модель сетевой или многопроцессорной среды и вести разработку соответствующего проекта.

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

Браузер системы.Многие поставщики ОСРВ предлагают работающие на хост-машине средства просмотра, показывающие все запущенные процессы, а также приоритет, состояние и другие важнейшие характеристики каждого процесса в отдельности. Для ОС OSE такого рода инструмент называется Illuminator.

Профилировщик центрального процессора.В процессе разработки и отладки предназначенного для встраиваемой системы программного обеспечения необходимо иметь точные данные относительно загрузки центрального процессора, поскольку наличие подобной информации способствует оптимизации производительности программного кода. В комплектах инструментальных средств ОСРВ имеются такие профилировщики. Средство CPU Profiler (профилировщик центрального процессора) для ОС OSE позволяет выбрать одну или несколько определенных задач и получить ясную картину того, насколько эти задачи загружают центральный процессор, а также того, как влияет эта загрузка на работу системы в целом. Качество подобной информации зависит от скорости связи между хостом и целевой машиной.

Профилировщик памяти. Оптимальное использование памяти является решающим моментом, поэтому разработанный для ОС OSE инструмент Memory Profiler (профилировщик памяти) предлагает исчерпывающую динамическую информацию об использовании памяти каждой конкретной задачи, о прохождении сигналов, а также статистическую информацию и иные данные, которые могут помочь оптимизировать использование памяти.

Трассировка событий. Некоторые поставщики ОСРВ предлагают средства "трассировки событий", способные динамически отображать работающие задачи и межпроцессные взаимодействия. Регистрация может производиться через определенные интервалы времени (например, через 50 мкс), в случае наступления определенных событий, по прерываниям и т.п.