Операционные системы реального времени

Автор работы: Пользователь скрыл имя, 19 Января 2015 в 18:43, реферат

Краткое описание

Операционные системы реального времени (ОСРВ) предназначены для обеспечения интерфейса к ресурсам критических по времени систем реального времени. Основной задачей в таких системах является своевременность (timeliness) выполнения обработки данных.
В качестве основного требования к ОСРВ выдвигается требование обеспечения предсказуемости или детерминированности поведения системы в наихудших внешних условиях, что резко отличается от требований к производительности и быстродействию универсальных ОС. Хорошая ОСРВ имеет предсказуемое поведение при всех сценариях системной загрузки (одновременные прерывания и выполнение потоков).

Содержание

1. Введение: Особенности операционных систем реального времени
1.1. Процессы, потоки, задачи
1.2. Планирование, приоритеты
1.3. Память
1.4. Прерывания
1.5. Часы и таймеры
1.6. Стандарты ОСРВ
1.6.1. POSIX
1.6.2. DO-178B
1.6.3. ARINC-653
1.6.4. OSEK
1.6.5. Стандарты безопасности
1.7. Настраиваемость операционных систем
2. Краткие характеристики наиболее распространенных ОСРВ
2.1. VxWorks
2.2. QNX Neutrino RTOS
2.3. RTEMS
2.4. ChorusOS
2.5. Расширения реального времени для Windows NT
2.5.1. RTX для Windows NT
2.5.2. INtime
2.5.3. Microsoft Windows Embedded
2.6. TinyOS
2.7. OSEK/VDX
2.8. OSE RTOS
2.9. Contiki
2.10. pSOS
2.11. INTEGRITY
2.12. LynxOS
2.13. Microware OS-9
2.14. GRACE-OS
2.15. C EXECUTIVE
2.16. CMX-RTX
2.16.1. CMX-TINY+
2.17. Inferno
3. ОС, разработанные специально для портативных устройств
3.1. ITRON
3.2. Windows CE
3.3. JavaOS
3.4. Jbed
3.5. Nucleus RTOS
3.6. EMERALDS
3.7. CORTEX
3.8. DeltaOS
3.9. Palm OS
3.10. Symbian OS (EPOC)
4. Настраиваемость операционных систем
4.1. Адаптация, осуществляемая человеком
4.1.1. Статическая адаптация, инициированная проектировщиком
4.1.2. Динамическая адаптация, инициированная администратором
4.2. Адаптация, инициированная приложением
4.2.1. Адаптация с уровня приложения
4.2.2. Адаптация на уровне ядра
4.3. Автоматическая адаптация
5. Сводные таблицы характеристик свойств ОСРВ

Прикрепленные файлы: 1 файл

Операционные системы реального времени.doc

— 1.25 Мб (Скачать документ)

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

4.2.1.1. Микроядерные ОС

Микроядерный подход существует довольно давно. Однако первые поколения микроядерных ОС показали результаты, далекие от ожидаемых. На практике так и не была реализована желаемая адаптируемость из-за низкой производительности и недостаточного уровня детализации настройки в ранних микроядерных ОС. Попытки улучшить показатели привели к тому, что фундаментальные библиотеки ОС, такие как файловая система Unix, были опять интегрированы в ядро, что улучшило производительность, но совсем не помогло увеличить настраиваемость.

Новое поколение микроядерных ОС намного больше отвечает целям настраиваемости. Однако критическим остается вопрос производительности, связанный со значительным количеством переключений между доменами (как между пользовательским уровнем и ядром, так и между адресными пространствами), а также с местоположением основной памяти [Lie93].

Выбранный набор абстракций, интегрированных в ядро, существенным образом влияет на производительность и гибкость. Чем меньше абстракций, тем большая гибкость остается для приложений. В ядре должны присутствовать только те абстракции, которые необходимы для деятельности самого ядра. Это хорошо сформулировано в работах Лидке [Lie95, Lie96] о системе L4 – в ней ядерными абстракциями являются адресные пространства, потоки, IPC и уникальные идентификаторы. На основе этих абстракциями в L4 поддерживается рекурсивная конструкция адресных пространств – исходное адресное пространство включает всю память и порты ввода/вывода и принадлежит исходной подсистеме или приложению.

Результатом приближения микроядерной философии к ее логической крайности становится ОС, в которой все системные сервисы выведены за пределы ядра и реализованы в виде библиотек, а само ядро представляет собой попросту абстракцию аппаратных ресурсов. Такой экстрим реализован в ОС Exokernel [EKO95]. В ядре Exokernel отсутствуют какие-либо абстракции ОС и весь его интерфейс сведен к надстройке над аппаратурой. Единственная функция, которая оставлена в Exokernel – это выделение, возврат и мультиплексирование физических ресурсов (страниц памяти, квантов времени процессора, блоков дисков и т.п.) безопасным образом. Композиция наиболее используемых интерфейсов в Exokernel до сих пор остается большой проблемой [SSF99].

К микроядерным ОС можно отнести систему 2K [2K]. Система 2K основана на компонентах, и ее основной задачей является обеспечение настраиваемого каркаса для поддержки адаптации в сетевом окружении. Способность к адаптации регулируется параметрами, такими как пропускная способность сети, связность, доступность памяти, протоколы взаимодействия и компоненты аппаратных средств. ОС 2K основывается на технологии Corba, и в ней для адаптации используются данные метауровня и методы, которые предлагает уровень ORB (object request broker). Компонент 2K – это динамически загружаемый программный модуль, который хранится в динамически подключаемой библиотеке (DLL). Следует отметить, что в системе 2K используется крупный уровень детализации.

4.2.1.2. Портал-ориентированные системы

Портал-ориентированная система – это микроядро, которое имеет минимально возможный код и работает в самом доступном привилегированном режиме. Такие системы обладают доменами защиты, которые обеспечивают безопасность работы пользователя. Порталы используются для взаимодействия между доменами. Домен защиты состоит из набора страниц и совокупности порталов, причем порталы могут разделять и страницы, и порталы.

Примером портал-ориентированной системы служит Kea – портал-ориентированное микроядро, которое обеспечивает низкоуровневые концепции для конструирования высокоуровневых сервисов [VH96]. Под низкоуровневыми концепциями понимаются домены (виртуальные адресные пространства), обращения доменов друг к другу (IPC) и порталы. Портал ассоциирован с определенным сервисом – это точка входа для обращения к домену. Каждый сервис обязан регистрировать в ядре свой идентификатор, а ядро управляет доступом к интерфейсу этого сервиса. В отличие от истинных микроядерных ОС Kea не дает полной свободы для проектирования и реализации сервисов. Но все же в Kea обеспечивается возможность динамической реконфигурации. При обращении к сервису (через его портал) ядро может решать, какую реализацию выбрать. Например, при использовании файлового сервиса администратор может наложить обязательный вызов сервиса сжатия данных перед передачей их файловому сервису. Более сложная реконфигурация возникает в случае, когда приложение ассоциирует новый портал с идентификатором некоторого сервиса. Например, при использовании менеджером виртуальной памяти портала для сервиса замещения страниц приложение может заставить его использовать для своих страниц собственный сервис замещения страниц. В Kea уровень детализации адаптации определяется реализацией сервисов. Если менеджер виртуальной памяти фиксирует политику замещения страниц (вместо использования для нее портала, как в примере), никто не может ее изменить, пока не заменит весь сервис.

В системе SPACE [PBK91] единственной абстракцией, присутствующей в ядре, является обобщение управления исключительными ситуациями, т.е. механизм управления прерываниями. Если бы такой обобщенный механизм управления исключительными ситуациями мог бы быть реализован на аппаратном уровне, операционную систему можно было бы считать “безъядерной”.

Система Pebble [MBG00], так же, как и SPACE, поддерживает взаимодействие через домены защиты, реализованное как обобщение управления прерываниями. Как и Kea, Pebble осуществляет взаимодействие доменов через порталы и допускает реконфигурацию порталов. Порталы реализуются как обобщенные обработчики прерываний. Ядро Pebble содержит только код, реализующий передачу потоков от одного домена защиты другому, и небольшое количество функций поддержки режима ядра. Как и Exokernel, Pebble отдает реализацию абстракций ресурсов на уровень пользователя, но, в отличие от Exokernel, Pebble обеспечивает совокупность высокоуровневых абстракций, которые реализуются компонентами пользовательского уровня, что упоминалось в разделе о статической адаптации, инициированной проектировщиком. Каждый компонент уровня пользователя выполняется в своем собственном домене защиты, изолированном аппаратными средствами защиты памяти.

4.2.1.3. Системы мандатов (Capability Systems)

Системы Fluke и EROS являются системами мандатов, которые структурированы вокруг микроядра. Здесь под мандатом понимается пара, состоящая из идентификатора объекта и набора санкционированных операций над этим объектом (его интерфейс). Примером таких мандатов могут служить дескрипторы файлов в UNIX. В системах мандатов каждый процесс содержит мандаты и может совершать только те операции, которые санкционированы этими мандатами. Мандаты – единственные средства инициации операций над объектами, и единственные операции, которые могут выполняться с помощью мандата — это операции, разрешенные этим мандатом. Это означает, что каждый ресурс обслуживается через посредника и полностью инкапсулирован.

Архитектура вложенных процессов системы Fluke сочетает микроядро с виртуальными машинами [FHL96]. Ядро обеспечивает базовые сервисы и интерфейс к ним. Виртуальные машины используют этот интерфейс и реэкспортируют его на следующий уровень. Каждый слой полностью симулирует среду для вышележащего уровня – интерфейс между слоями всегда один и тот же, что позволяет компоновать сервисы с помощью наложения (stacking) виртуальных машин. Благодаря такому наложению, или многоуровневому представлению Fluke поддерживает вертикальную декомпозицию сервисов, в то время как микроядро обеспечивает горизонтальную декомпозицию, перенося традиционную функциональность ядра на серверы пользовательского уровня, расположенные как бы рядом (side-by-side).

Необходимость поддерживать согласованность интерфейсов между виртуальными машинами вносит большие трудности при добавлении новых методов или параметров. Несмотря на то, что архитектура Pebble близка к архитектуре вложенных процессов системы Fluke, Pebble дает возможность расширять систему с большим уровнем детализации благодаря механизму замещения порталов.

Система EROS (Extremely Reliable Operating System) состоит из ядра, которое реализует небольшой набор примитивных мандатных типов [SSF99]. Возможности, которые предлагает ядро EROS, относятся к довольно низкому уровню. Большинство системных функций реализуется приложениями уровня пользователя. Например, ядро EROS напрямую предоставляет страницы дисковой памяти, но не файловой системы. Файловая абстракция полностью строится на уровне приложений, и файловое приложение просто хранит содержимое файла в адресном пространстве, увеличивая адресное пространство по мере необходимости так, чтобы оно могло содержать весь файл. Обязанность файлового приложения состоит в том, чтобы реализовать такие операции, как чтение и запись, которые выполняются над файлом.

Такой метод проектирования – создание высокоуровневых функций за счет объединения базовых примитивов операционной системы в повторно используемые компоненты – основная стратегия для создания приложений EROS. Каждый экземпляр компонента реализуется с помощью отдельного процесса, а ядро обеспечивает высокопроизводительный механизм связи между процессами, позволяющий эффективно объединять эти компоненты. Фактически, крайне редко приложения EROS работают с предлагаемыми ядром объектами напрямую. Большинство приложений повторно использует компоненты, предоставляемые системой, или реализуют новые компоненты, которые обеспечивают необходимую функцию структурированным способом.

Приложения EROS структурируются как защищенные, связанные мандатами компоненты. Каждый экземпляр компонента работает с индивидуально указанными мандатами, определяющими его полномочия. Мандаты защищены ядром, как и объекты, на которые они указывают. Единственные операции, которые могут выполняться с мандатом – это операции, определяемые объектом. Благодаря этому сочетанию защиты и посредничества приложение, которое выполняет злоумышленный код, не может повредить систему в целом или нанести ущерб другим пользователям, а также не может использовать привилегии пользователя для того, чтобы повредить другие части пользовательской среды. Точно так же, мандаты управляют доступом к ресурсам, не позволяя злоумышленному коду злоупотреблять ресурсами или вывести остальную часть системы из работоспособного состояния.

4.2.1.4. Операционные системы с кэшированием

Cache Kernel – это ядро операционной системы V++ [CD94]. В этой системе приложения выполняются поверх ядер приложений, либо в том же самом, либо в другом адресном пространстве. Ядра приложений реализуют сервисы операционной системы. Они выполняются на уровне пользователя и обеспечивают загрузку и разгрузку объектов ОС (потоков, адресных пространств и других ядер приложений) в соответствии с их собственными политиками. Собственно ядро Cache Kernel функционирует как кэш для таких объектов. В его интерфейс включены операции для загрузки и разгрузки системных объектов. Для указания того, должен ли некоторый объект быть загружен или разгружен, используются сигналы.

4.2.1.5. Рефлективные операционные системы

В рефлективных операционных системах вводится явная парадигма, которая дает возможность приложениям динамически настраивать свою среду выполнения. Приложение должно быть явно структурировано как совокупность объектов, а системные сервисы представляются в виде совокупности мета-объектов.

MetaOS – это объектно-ориентированная ОС, основанная на использовании языка Java [HPM98]. Архитектура этой ОС состоит из трех уровней. Объекты приложений располагаются на базовом уровне. На уровне ниже находятся мета-объекты, динамически сгруппированные в мета-пространства. Каждое мета-пространство поддерживает ряд приложений с похожими требованиями. Этот уровень носит название мета-уровня. В самом низу находится мета-мета-уровень, который сжат до единственного мета-пространства – главного (master) мета-пространства. Это мета-пространство распределяет ресурсы согласно динамически замещаемой политике. В MetaOS используется открытая реализация для поддержки определения и конструирования объектов, мета-объектов и их интерфейсов. Через эти интерфейсы мета-пространства могут быть адаптированы и расширены динамическим и безопасным образом. Когда приложение начинает выполняться, оно выбирает наиболее подходящее доступное мета-пространство, в котором оно может инициировать ряд изменений с большим уровнем детализации. Если этого окажется недостаточно, приложение может клонировать мета-пространство и мигрировать в него. После этого приложение будет иметь полный контроль над мета-пространством и, таким образом, над собственной средой выполнения.

4.2.2. Адаптация на уровне ядра

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

Политика безопасности в ОС проводится в жизнь через верификацию или через защиту (protection). Защита пытается гарантировать корректное поведение приложения после его инсталляции или ограничить последствия нанесенного вреда. Защита достигается как аппаратными, так и программными средствами.

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

Верификация гарантирует корректное поведение расширения до инсталляции и развертывания. При обсуждении ОС рассматриваются два вида верификации – верификация источника и верификация поведения.

При верификации источника код считается безопасным, если он введен в систему удостоверенной стороной (например, администратором). Такая практика применяется в промышленных ОС (UNIX, Windows NT), где такой подход носит название метода загружаемого модуля ядра. Загрузка модуля может выполняться как администратором, так и приложением с правами root, или даже приложениями с правами пользователя, которому разрешена такая загрузка, если он является удостоверенной третьей стороной (например, производитель данной ОС).

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

4.2.2.1. Программная защита

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

.4.2.2.1.1 Программная локализация неисправностей

Программная локализация неисправностей обеспечивает защиту памяти в едином адресном пространстве (например, внутри ядра) [WLA93]. Она осуществляется в два этапа. Сначала ненадежный код загружается в собственный изолированный домен (так называемый “неисправный” домен), который является областью памяти, логически разделенной с ядром. Затем код модифицируется таким образом, что из него нельзя осуществить запись или выполнить команду перехода за пределы этого изолированного домена. Одним из способов реализации этого подхода является sandboxing (механизм обеспечения безопасности подкачанных из сети или полученных по электронной почте программ, предусматривающий изоляцию на время выполнения загружаемого кода в ограниченную среду – "песочницу"). Изолированный домен состоит из сегмента кода и сегмента данных. В старших битах адреса содержится идентификатор сегмента. Перед каждой ненадежной инструкцией в сегменте кода вставляются инструкции, которые записывают в старшие биты адреса в ненадежной инструкции идентификатор изолированного сегмента, не давая ей возможности обратиться по адресу за пределы этого домена. Взаимодействие между изолированными сегментами осуществляется через RPC-интерфейс (remote procedure calls).

Информация о работе Операционные системы реального времени