Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системы реального времени.-7

.pdf
Скачиваний:
43
Добавлен:
05.02.2023
Размер:
1.57 Mб
Скачать

 

Название ОС

тексты

 

 

 

 

 

(Компания)

Исходные

 

 

 

 

 

Продолжение табл. 5.3

 

Software

 

 

 

Systems)

 

 

 

Nucleus

 

 

 

Plus/RTX

X

 

(Accelerated

 

 

 

 

Technology)

 

 

 

Allegro

 

 

 

(Allegro

X

 

Systems

 

 

 

 

Limited)

 

 

 

ARTK

X

 

(Alsys GmBH)

 

 

 

 

VCOS

 

 

 

(AT&T)

 

 

 

BOX

 

 

Поддержка WinAPI

150

WindowsРазработка под

POSIX APIПоддержка

Работа из ПЗУ

приоритетыФиксированные

многозадачностьПриоритетная

З а памяти

льность

Многопроцессорность

Сетевые средства

коммуникацииМежзадачные

общую памятьСвязь через

синхронизацияМежзадачная

процедурУдаленный вызов

задачУдаленный запуск

мониторингУдаленный

Удаленная отладка

X

 

X

 

X

 

X

 

X

X

 

X

 

 

 

 

 

 

 

 

X

X

X

 

X

X

X

 

 

 

 

 

 

X

X

X

X

X

X

X

X

X

X

 

X

 

 

X

 

 

 

X

 

 

X

X

 

X

X

X

 

 

 

 

X

 

X

X

X

X

X

X

X

X

X

X

X

X

X

X

741

Название ОС

тексты

WinAPI

 

 

(Компания)

 

 

Окончание табл. 5.3

Поддержка

 

Исходные

 

(Brainstorm

 

 

Engineering)

 

 

MIPS Kernel

X

 

(CAC)

 

 

 

UNOS

 

 

(Charles River

X

 

Data Systems)

 

 

CMX (CMX

X

X

Company)

 

 

RTXC

 

 

Embedded

X

 

Systems

 

 

 

Products)

 

 

HP RT

X

 

(Hewlett

 

 

151

WindowsРазработка под

POSIX APIПоддержка

Работа из ПЗУ

приоритетыФиксированные

многозадачностьПриоритетная

а памяти

ульность

Многопроцессорность

Сетевые средства

коммуникацииМежзадачные

общую памятьСвязь через

синхронизацияМежзадачная

процедурУдаленный вызов

задачУдаленный запуск

мониторингУдаленный

Удаленная отладка

 

 

 

 

X

X

X

X

 

X

X

X

 

X

 

X

 

X

X

X

X

X

 

X

X

X

X

X

X

X

X

X

X

 

X

 

X

X

X

 

X

X

X

X

 

 

X

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

X

X

X

X

X

 

X

X

X

X

X

X

X

X

 

X

 

 

X

X

X

X

X

 

X

 

X

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

841

152

Название ОС (Компания)

Packard) OS/Open

(IBM) VRTX

(Microtec

Research) RMOS

(Siemens)

Исходные тексты

Поддержка WinAPI

WindowsРазработка под

POSIX APIПоддержка

Работа из ПЗУ

приоритетыФиксированные

многозадачностьПриоритетная

Защита памяти

Модульность

Многопроцессорность

Сетевые средства

коммуникацииМежзадачные

общую памятьСвязь через

синхронизацияМежзадачная

процедурУдаленный вызов

задачУдаленный запуск

мониторингУдаленный

Удаленная отладка

 

 

X

X

X

X

 

 

X

 

X

X

 

X

X

 

 

X

 

 

X

 

X

 

X

 

 

X

X

X

 

X

X

 

 

 

 

X

X

 

X

 

X

X

X

X

X

X

X

X

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

153

Существующие ОСРВ обслуживают довольно внушительный парк микропроцессоров. Приведем некоторые наименования микропроцессоров из этого парка: Intel Pentium, Intel 80x86, NEV V53, NEV V25, Z 80 (180), 80x96, 80x51, i960, i860, 68060, 68040, 68030, 68020, 68010, 68000, Z180, 68340, 68332, 68331, 68302, PowerPC6604, PowerPC6603, PowerPC6601, Power PC 403, 68HC16, 68HC11, MIPS R4000, 68360, AM294xx, AM292xx, AM290xx, SPARC, VA X family, Alpha, Inmos T4xx, T8xx, ARM, ARM THUMB, TMS320C5x, TMS320C4x, TMS320C3x, TMS320C2x, 56xxx DSP, AD2106x и др.

Вопросы для самопроверки

1.На каких процессорах может работать OC Linux?

2.Какие способы существуют для реализации механизма preemption?

3.В чем особенность системы RT-Linux?

4.Приведите основные аргументы за и против использования Windows NT в качестве ОСРВ.

5.Какие расширения Windows NT, которые поддерживают реальное время, вы знаете?

6.Классифицируйте в виде таблицы собственно ОСРВ по категориям: self-hosted, host/target и те, которые могут выступать

ив том и другом варианте.

7.Опишите основные функциональные возможности ОС LynxOS.

8.Какие механизмы синхронизации реализованы в ОС LynxOS 5.0?

9.Опишите реализацию атомарных переменных и операций в ОС LynxOS 5.0.

10.Какие барьеры памяти реализованы в ОС LynxOS 5.0?

11.Опишите ОС функциональные возможности OS-9.

12.Опишите ОС функциональные возможности VxWorks.

13.Опишите уровневую структуру VSPWorks.

14.Опишите ОС функциональные возможности SoftKernel.

15.Опишите ОС функциональные возможности CHORUS.

154

16.Опишите ОС функциональные возможности pSOS.

17.Опишите ОС функциональные возможности ОС2000.

18.Приведите преимущества и недостатки специализированных ОСРВ.

155

6МИКРОЯДРО ОС QNX NEUTRINO 6.1 Введение

Микроядро ОС QNX Neutrino реализует основные функции стандартов POSIX, используемые во встраиваемых системах реального времени, а также базовые службы обмена сообщениями. Те функции, которые не реализованы в микроядре, выполняются дополнительными процессами или разделяемыми библиотеками.

На самых нижних уровнях микроядра расположено всего несколько базовых объектов, а также четко отрегулированные процедуры для управления ими. Это является основой, на которой строится ОС QNX (рис. 6.1).

Интерфейс

Микроядро

Объекты

Поток

 

Соединение

Планирование

 

 

Синхронизация

 

Поток

 

Диспетчер

 

 

Сигнал

 

сообщения

 

 

Сообщение

 

 

Канал

 

Таймер

 

Вектор

 

 

Таймер

 

 

Часы

 

Импульс

 

 

Прерывания

 

Канал

Рис. 6.1 — Микроядро ОС QNX Neutrino

156

ВОС QNX Neutrino большинство служб по обеспечению работы в реальном времени и по планированию потоков реализовано прямо в микроядре. Эти службы могут работать без использования дополнительных модулей.

Вмикроядре ОС QNX существуют системные вызовы (kernel calls), которые служат для управления следующими объектами:

потоками;

сообщениями;

сигналами;

часами;

таймерами;

обработчиками прерываний;

семафорами;

блокировками взаимного исключения, мьютексами;

условными переменными;

барьерами.

ОС QNX целиком построена на основе таких вызовов, причем ядро ОС полностью вытесняемо (preemtable), в том числе и во время обмена сообщениями между процессами.

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

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

157

На рис. 6.2 показан механизм вытеснения в ядре для процессоров с архитектурой Intel x86 без поддержки SMP. Запрет прерываний или отсутствие вытеснения происходит только на короткие периоды времени (как правило, эти периоды не превышают порядка сотен наносекунд).

SYSCALL Вход

Операции

ядра, в том числе передача сообщ ений

Заверш ение

SYSEXIT Выход

Микро -

секунды

От ми кро-

секунддо ми ллис е- кунд

Микро -

секунды

Микро -

секунды

Прерывания

запрещены

Прерывания ра з-

решены, полное вытеснение

Прерывания

разрешены, в ы- теснения нет

Прерывания

запрещены

Рис. 6.2 — Механизм вытеснения в ОС QNX

 

158

6.2процессы

Потоки и

6.2.1Вызовы по управлению потоками

Вядре ОС QNX минимальной планируемой и выполняемой единицей является поток. Процесс можно рассматривать как объект, который содержит в себе эти потоки и определяет для их выполнения свое адресное пространство.

Вмикроядре ОС QNX реализован ряд вызовов по управлению потоками POSIX и соответствующие им вызовы микроядра (табл. 6.1).

Таблица 6.1 — Вызовы по управлению потоками POSIX и соответствующие вызовы микроядра [9]

POSIX-вызов

Вызов микроядра

Описание

pthread_create()

ThreadCreate()

Создать поток

pthread_exit()

ThreadDestroy()

Уничтожить поток

pthread_detach()

ThreadDetach()

Отсоединить по-

 

 

ток, чтобы не

 

 

ждать его завер-

pthread_join()

ThreadJoin()

шения

Присоединить

 

 

поток и ждать

 

 

его кода завер-

pthread_cancel()

ThreadCancel()

шения

Завершить поток

 

 

в следующей точ-

отсутствует

ThreadCtl()

ке завершения

Изменить харак-

 

 

теристики пото-

pthread_mutex_init()

SyncTypeCreate()

ка

Создать мьютекс

pthread_mutex_destroy()

SyncDestroy()

Уничтожить

pthread_mutex_lock()

SyncMutexLock()

мьютекс

Блокировать

pthread_mutex_trylock()

SyncMutexLock()

мьютекс

Условно блоки-

159

Продолжение табл. 6.1

Вызов микроядра

Описание

POSIX-вызов

pthread_mutex_unlock()

SyncMutexUnLock()

ровать мьютекс

Снять блокиров-

pthread_cond_init()

SyncTypeCreate()

ку мьютекса

Создать услов-

pthread_cond_destroy()

SyncDestroy()

ную переменную

Уничтожить

 

 

условную пере-

pthread_cond_wait()

SyncCondvarWait()

менную

Ожидать услов-

pthread_cond_signal()

SyncCondvarSignal()

ную переменную

Разблокировать

 

 

один из потоков,

 

 

блокированных

 

 

на условной

pthread_cond_broadcast()

SyncCondvarSignal()

переменной

Разблокировать

 

 

все потоки, бло-

 

 

кированные на

 

 

условной пере-

pthread_getschedparam()

SchedGet()

менной

Получить пара-

 

 

метры планиро-

 

 

вания и дисци-

pthread_setschedparam()

SchedSet()

плину потока

Установить па-

 

 

раметры плани-

 

 

рования и дисци-

pthread_sigmask()

SignalProcMask()

плину потока

Проверить и вы-

 

 

вести маску сиг-

pthread_kill()

SignalKill()

налов потока

Отправить сиг-

sem_post()

SyncSemPost()

нал потоку

Увеличить зна-

 

 

чение счетчика

sem_wait()

SynSemWait()

на семафоре

Уменьшить зна-

 

 

чение счетчика