Автор работы: Пользователь скрыл имя, 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. Сводные таблицы характеристик свойств ОСРВ
В системе VINO [SS97] также применяется программная локализация неисправностей. В этой системе каждое расширение в ядре имеет свои собственные стек и область памяти. Защиту памяти гарантирует программная локализация неисправностей. Кроме того, VINO использует систему облегченных транзакций для управления выполнением расширений и использованием ресурсов. Наращиваемость в VINO можно осуществить двумя способами:
К недостаткам метода программной локализации неисправностей можно отнести то обстоятельство, что каждый раз перед выполнением ненадежной инструкции должны выполняться накладные инструкции.
Другим распространенным способом сохранения целостности ядра является наложение ограничений на абстракции языка программирования. Наиболее интересным механизмом такого типа является метод проверки типов (type checking), который подразумевает, что безопасные языки являются типизированными и обладают типовой безопасностью.
Безопасные языки, широко используемые в исследовательских проектах, – это Modula-3, Java и ML. Язык ML имеет формальную типовую систему, известную как систему Hindley-Milner, и дает возможность осуществлять статическую проверку типов. Языки Modula-3 и Java обладают меньшим формализмом, поэтому, чтобы гарантировать в них политику безопасности, необходимо выполнять многочисленные проверки типов во время выполнения. Однако ML, как декларативный язык, обеспечивает недостаточную эффективность во время выполнения.
Система SPIN основана на языке Modula-3 [BSP95]. Все взаимодействия между приложением и ядром осуществляются с помощью расширений. Каждое расширение связывается с событием. Расширение должно быть зарегистрировано диспетчером, который инсталлирует расширения и передает события расширениям. С отдельным событием может быть связано несколько расширений. Расширения замещаются или добавляются диспетчером. Modula-3, в основном, используется для гарантирования защиты памяти. Дополнительные ограничения накладываются диспетчером и стандартными расширениями. Динамический компоновщик гарантирует, что расширение видит только санкционированные события.
Очевидным недостатком таких систем является их жесткая привязанность к определенному языку – весь системный код и расширения должны быть написаны на этом языке. Еще один недостаток состоит в том, что политика безопасности фиксирована и определяется выбранным языком. Кроме того, многочисленные проверки во время выполнения сильно понижают производительность системы.
Метод автоматической верификации основан на представлении кода в определенном формате, называемом PCC (Proof-Carrying Code) [Nec97]. PCC-модуль содержит формальное доказательство соответствия кода данной политике безопасности. Истинность доказательства гарантирует безопасность кода, и программный модуль может выполняться без проверок во время выполнения. Политика безопасности ядра описывается с помощью аксиом и правил вывода в доказательствах, а также формулируется в виде предикатов логики первого порядка для каждой инструкции, в которых указывается, при каких обстоятельствах выполнение каждой инструкции будет оставаться безопасным. Приложение использует предикаты политики безопасности для вычисления предиката безопасности. Затем доказывается безопасность этого предиката по правилам логики первого порядка с использованием аксиом и правил вывода политики безопасности. Доказательство присоединяется к расширению. Ядро, в свою очередь, также вычисляет предикат безопасности и проверяет истинность ассоциированного доказательства для этого предиката. Проверка достоверности может быть сделана через простую и эффективную проверку типов (type checking).
Несмотря на привлекательность этого подхода, применимость его пока остается проблемой. Большие трудности возникают при попытках автоматизировать генерацию доказательств и использовать доказательства для языков высокого уровня.
Автоматической адаптацией является адаптация, инициированная самой ОС. Можно рассматривать переносимость, реализуемую через условную компиляцию, как статическую форму автоматической адаптации. Обнаружив, на какой платформе операционная система должна быть скомпонована, система сама способна конфигурироваться, например, с помощью C препроцессора.
Наиболее интересную категорию составляют ОС, которые сами динамически или статически адаптируются к выполняющимся приложениям. С этой целью ОС должна быть способна отслеживать и анализировать приложения и автоматически изменять свое поведение, чтобы поддерживать приложения наилучшим образом. Промышленные ОС обычно поддерживают ограниченную форму динамической автоматической адаптации в специфических и хорошо понятных подсистемах, например, в файловой системе, которая может контролировать поведение пользовательских приложений для оптимизации своей производительности.
Создание автоматической динамически настраиваемой ОС общего назначения можно рассматривать как конечную цель исследований в области настраиваемости ОС. Однако в связи с трудностями, возникающими при компоновке таких систем, пока еще ничего не слышно об автоматических системах в полном смысле этого слова. Пока можно говорить только о нескольких проектах, обсуждаемых далее.
Система Synthetix предназначена для обеспечения специализированных реализаций сервисов операционной системы, генерируемых во время выполнения, на основании частичной оценки [CBK96]. Степень детализации и широта настраиваемости ограничены – проектировщик решает, какой сервис может быть конкретизирован и выбирает параметры конкретизации. Параметры сервиса вводятся с помощью инвариантов, с которыми связаны блоки защиты (guards). После проверки корректности параметров модуль сервиса замещается реализацией с новыми параметрами. Например, системный вызов открытия файла может возвращать конкретизированный код, обеспечивающий чтение файла. Такой код мог бы иметь инварианты, такие как размер блока на диске, последовательный доступ, монопольный доступ и т.п. Когда тот же самый файл позже открывается другим приложением, инвариант монопольного доступа становится некорректным из-за нарушения блока защиты, связанного с системным вызовом открытия файла.
Автоматический подход к настраиваемости исследовался в проекте VINO [SS97], который уже рассматривался выше, однако этот подход в VINO не был реализован. По мнению авторов для осуществления автоматической адаптации поведения системы необходимо получать сведения из следующих трех источников:
Вся
информация собирается в реальных обстоятельствах,
во время выполнения приложения. Затем
эта информация анализируется с целью
обнаружения чрезвычайных обстоятельств
– например, ситуаций, когда потребление
ресурсов превышает ожидаемую норму. В
таких ситуациях адаптация проводится
согласно известным эвристикам. Например,
пусть некое приложение интенсивно листает
страницы; тогда создаются трассы для
запрашиваемых страниц. Результирующие
трассы исследуются на предмет совпадения
с хорошо известными моделями подкачки
страниц. Если такая модель находится,
инсталлируется соответствующий алгоритм.
Проект VINO интересен тем, что в нем используются
эвристики для хорошо известных случаев.
В отличие от системы Synthetix, в которой адаптируются только
функции и параметры, определенные проектировщиком, VINO поддерживает механизм, с помощью
которого система могла бы разрабатывать
и тестировать новые алгоритмы для вновь
возникающих проблем.
Ниже следуют 4 таблицы.
|
Архитектура |
Предсказуемая производительность реального времени |
Что реализует микроядро, размер (мин., мах.) |
VxWorks |
Клиент-сервер, микроядро WIND Microkernel |
Приоритетное планирование в двух вариантах, наследование приоритетов |
Многозадачность, планирование, переключение контекста, взаимодействие /синхронизация задач, управление разделяемой и динамической памятью, управление прерываниями |
QNX |
Клиент-сервер, микроядро и взаимодействующие процессы |
Приоритетное планирование с выбором методов планирования. Наследование приоритетов |
Потоки, сигналы, передача сообщений, синхронизация, планирование, временные сервисы |
Windows CE |
Модульная с ядром и необязательными компонентами |
Приоритетное планирование |
|
pSOS |
Клиент-сервер, отсутствует протокол взаимодействия на основе сообщений, вместо него исппользуется программная шина |
Приоритетное планирование, отсутствует наследование приоритетов |
|
ChorusOS |
Многослойная |
Приоритетное планирование, мъютексы реального времени, таймеры с высокой разрешающей способностью, MIPC |
Многозадачность, поддержка акторов, управление потоками, управление LAP, управление исключительными ситуациями, минимальное управления прерываниями |
OSE |
Многослойная |
Приоритетное планирование, механизм предотвращения инверсии приоритетов |
Приоритетное планирование, асинхронная передача сообщений, управление памятью, размер – 6К, 80К |
OS-9 |
Приоритетное планирование, механизм предотвращения инверсии приоритетов |
размер – 128К, 4MB | |
C EXECUTIVE |
размер – 5К, 22К | ||
CMX-RTX |
Приоритетное планирование, механизм предотвращения инверсии приоритетов |
размер – 1К, 6К | |
Inferno |
|||
INTEGRITY |
Приоритетное планирование, механизм предотвращения инверсии приоритетов |
размер –70К | |
INtime |
|||
LynxOS |
размер –280К, 4М | ||
Nucleus |
|||
RTX |
Приоритетное планирование, наследование приоритетов |
||
CORTEX |
|||
DeltaOS |
размер – 10К |
ОСРВ |
Распределенная обработка |
Сетевые протоколы |
Файловые системы |
VxWorks |
TCP/IP, FTP, SMTP, NFS, PPP, RPC, Telnet, BSD 4.4 TCP/IP networking,IP, IGMP, CIDR, TCP, UDP, ARP, RIP v.1/v.2, Standard Berkeley sockets, zbufs, SLIP, CSLIP, BOOTP, DNS, DHCP, TFTP, NFS, ONC RPC, WindNet SNMP v.1/v.2c with MIB compiler - optional, WindNet OSPF |
DOS-FS, NFS, TrueFFS | |
QNX |
Прозрачный доступ к удаленным ресурсам. Упрощенное проектирование отказоустойчивых кластеров |
TCP/IP, FTP, SMTP, SNMP, NFS, PPP, ATM, ISDN, RPC, Telnet, Bootp, tiny TCP/IP |
RAM, Flash, QNX, Linux, DOS, CD-ROM, DVD, NFS, CIFS |
Windows CE |
|||
PSOS |
|||
ChorusOS |
Прозрачный доступ к удаленным ресурсам |
IPv4, IPv6, PPP, NTP, BFP, DHCP NFS, RPC, LDAP, FTP, Telnet |
UFS, FIFOFS, NFS, MSDOSFS, ISOFS, PROCFS, PDEVFS |
OSE |
Прозрачный доступ к удаленным ресурсам |
TCP/IP, FTP, SMTP, SNMP, PPP, ATM, ISDN, X25, Telnet, Bootp, http-server, FTP/TFTP, NTP, various routing protocols |
FAT, VFAT, FAT32 |
OS-9 |
TCP/IP, FTP, SMTP, SNMP, NFS, PPP, ATM, ISDN, X25, RPC, Telnet, Bootp, 802.11 |
||
C EXECUTIVE |
TCP/IP, SNMP, PPP, SNMP |
||
CMX-RTX |
TCP/IP, FTP, SMTP, SNMP, NFS, PPP, Telnet, Bootp |
||
Inferno |
TCP/IP, FTP, PPP, Telnet, Bootp |
||
INTEGRITY |
TCP/IP, FTP, SMTP, SNMP, NFS, PPP, ATM, X25, RPC, Telnet, Bootp, http, pop3, IGMP, UDP, ARP, RIP, sockets, zero-copy stack, tftp |
||
Intime |
TCP/IP |
||
LynxOS |
TCP/IP, SNMP, NFS |
||
Nucleus |
TCP/IP, SMTP, SNMP, PPP, Telnet |
||
RTX |
TCP/IP, все протоколы, поддерживаемые в. Windows |
||
CORTEX |
TCP/IP |
||
DeltaOS |
TCP/IP, FTP, SMTP, PPP, WAP, HTTP, HTML, XML, OSPF2, RIP2, CORBA |
|
POSIX |
Среда разработки |
Целевые платформы |
VxWorks |
POSIX 1003.1, .1b, .1c (включая pThreads) |
x86, PowerPC, ARM, MIPS, 68K, CPU 32, ColdFire, MCORE, Pentium, i960, SH, SPARC, NEC V8xx, M32 R/D, RAD6000, ST 20, TriCore | |
QNX |
POSIX 1003.1-2001, с потоками и расширенным. РВ |
Windows, Solaris, Self-Hosted, QNX4, Linux |
ARM, MIPS, PowerPC, SH4, Strong ARM, XScale, x86 |
Windows CE |
ARMV4, SH3, SH4, MIPS, X86 | ||
pSOS |
|||
ChorusOS |
POSIX-сигналы, сигналы реального времени, потоки, таймеры, очереди сообщений, семафоры. сокеты, разделяемая память |
UltraSPARC II (CP1500 и CP20x0), Intel x86, Pentium, Motorola PowerPC 750 и 74x0 (mpc7xx), Motorola PowerQUICC I (mpc8xx) и PowerQUICC II (mpc8260) | |
OSE |
Windows, Solaris, Linux |
PowerPC, ARM, MIPS, StrongARM, Intel IXP2400, TI OMAP ARM7/C55, PowerQUICC, XScale, M-Core, Coldfire, Infineon C16x, Xc16x, E-Gold, Tricore, NEC V850, Atmel AVR, Mitusbishi M16C, Intel 8051, DSPs (TI C5/C6, Starcore, Agere 16k, LSI Logic ZSP, TigerShark, ST Micro) | |
OS-9 |
Windows |
Motorola 68K, ARM/StrongARM, Intel IXP1200 Network Processor, MIPS, PowerPC, Hitachi SuperH, x86 or Intel Pentium, Intel IXC1100 XScale | |
C EXECUTIVE |
Windows, Solaris |
x86, PowerPC, ARM, MIPS, 68K, i960,SH,TI | |
CMX-RTX |
Windows |
x86, PowerPC, ARM, MIPS, практически все 8-, 16-, 32-бит. процессоры | |
Inferno |
Windows, Solaris, Linux |
x86, PowerPC, ARM, MIPS, Sparc | |
INTEGRITY |
POSIX 1003.1-2003 |
Windows, Solaris, Linux, HPUX |
x86, PowerPC, ARM, MIPS, ColdFire, StrongARMXScale |
INtime |
Windows |
x86 | |
LynxOS |
POSIX.1/.1b/.1c |
Sun Solaris, SunOS, RS6000, LynxOS Native/Hosted |
x86, 68k, PPC, microSPARC, microSPARC II, PA-RISC |
Nucleus |
Windows |
x86, PowerPC, ARM, MIPS, Nios, Nios II, ColdFire, 68k, H8S, SH, DSP, OMAP, XScale, MCore | |
RTX |
Windows |
x86 | |
CORTEX |
Windows, Solaris, Linux |
Hitach H8/300H, H8/S и SH-1/2/3, TI TMS320C3X, POSIX.4 ( SUN SPARC) | |
DeltaOS |
Windows, Linux |
x86, PowerPC, ARM, MIPS, Dragonball |
Таблица 1. Характеристики ОСРВ
ОСРВ |
Модель |
Число уровн. приор. |
Мах. число задач |
Политики планирования |
Состояния процесса/потока |
Механизмы синхронизации/ взаимодействия |
VxWorks |
Задачи имеют 1 поток, все задачи выполняются в одном адресном пространстве без какой-либо защиты. Компонент VxVMI дает возможность каждой задаче выполняться в собственном. адресном пространстве |
256 |
Ограничено размером доступной памяти |
POSIX и Wind планирование, каждый вариант имеет Preemptive priority и Round-robin |
9 |
семафоры, мьютексы, условные переменные, флаги событий, POSIX-сигналы, очереди сообщений, почтовые ящики |
QNX |
процессы/потоки |
64 |
4095 процессов, в каждом процессе до 32767 потоков |
FIFO с приоритетами, циклическое, адаптивное, спорадическое планирование |
14 |
передача сообщений (очереди и почтовые. ящики), семафоры, мьютексы, флаги событий, сигналы POSIX |
Windows CE |
процессы/потоки, нити (fiber), неуправляемые ядром |
256 |
32 процесса, число потоков внутри процесса ограничено доступной RAM |
с приоритетами, циклическое между потоками на одном приоритетном уровне, если квант установлен в 0, поток выполняется до завершения |
5: выполняется (running), приостановлен (suspended), спящий (sleeping), заблокирован (blocked), завершен (terminated) |
критические секции, мьютексы, семафоры, условные переменные, события, передача сообщений (очереди, почтовые ящики), сигналы POSIX |
pSOS |
только потоки |
256 |
Ограничено памятью |
FIFO с приоритетами, циклическое |
4: создан (created), готов (ready), выполняется (running), заблокирован (blocked) |
семафоры, флаги событий, сигналы POSIX, очереди сообщений |
ChorusOS |
процессы/акторы/потоки |
FIFO с приоритетами, циклическое, планирование реального времени, опция одновремен. выполнения различных политик планирования, возможность создания собственного планировщика |
мьютексы, мьютексы реального времени, семафоры, флаги событий, LAP (Local Access Point), IPC (Inter-Process Communication) – сообщения, порты, группы портов, MIPC (почтовые. ящики), разделяемая память, очереди сообщений | |||
OSE |
32 |
FIFO с приоритетами |
||||
OS-9 |
процессы/потоки |
65535 |
С приоритетами |
|||
C EXE-CUTIVE |
32000 |
FIFO с приоритет., квантование времени |
||||
CMX-RTX |
FIFO с приоритет., циклическое с приоритетами |
|||||
INTEG-RITY |
255 |
циклическое с приоритетами,ARINC 653 |
семафоры, мьютексы, | |||
INtime |
255 |
FIFO с приоритетами, циклическое с приоритетами |
||||
LynxOS |
512 |
FIFO с приоритетами, циклическое с приоритетами, фиксированные приоритеты, квантование времени, динамические приоритеты |
||||
RTX |
128 |
|||||
CORTEX |
62 |
FIFO с приоритетами, циклическое с приоритетами, разделение времени, другие |
мьютексы и условия, мониторы и условия, вычислительные семафоры, события | |||
DeltaOS |
256 |