1. Real-Time Systems. Design Principles for Distributed Embedded Applications, by Hermann Kopetz, 1997, ISBN 0-7923-9894-7
2. A Practitioner’s Handbook for Real-Time Analysis, by Mark H. Klein, Thomas Ralya, Bill Pollak, Ray Obenza, 1993, ISBN 0-7923-9361-9
3. Real-Time Systems, The International Journal of Time-Critical Computing Systems, ISSN 0922-6443
4. Программирование для вычислительных систем реального времени, Дж. Мартин, «Наука», 1975, УДК 519.95
5. Проектирование операционных систем для малых ЭВМ, С.Кейслер, «Мир», 1986, УДК 681.142.2
6. Разработка програмных средств для встроенных систем, Никифоров В. В., Учеб. пособие. СПб.: Изд-во СПбГЭТУ "ЛЭТИ", 2000, УДК 681.325.5-181.4, ISBN 5-7629-0340-0
Библиография
Встроенные системы
Не использующие ОС
Использующие ОС
Приложение
Операционная Система
Обогащение смеси
Открытие
Угол открытия
Подача выхлопа
Периферийные устройства (АЦП/ЦАП, цифровой ввод/вывод, и т.п.)
Система управления двигателем обеспечивает наилучшее потребление топлива и оптимальную мощность двигателя при соблюдении требований по защите окружающей среды на всех режимах работы двигателя. Работает в режимах с обратной связью и без обратной связи.
Таймер
Отклики
(Responses)
Responses = F( Events,T )
Система должна завершить обработку события (выработать отклик) не позднее заранее определенного момента времени.
Система управляет обработкой большого количества разных событий.
Время обработки (Computation Time, C)
Задержка (Jitter, J)
Обработка “в реальном времени” означает “вовремя”
Реальное время с допусками (soft real time) допускает флуктуации времени отклика при условии, что среднее время отклика равно сроку исполнения (т.е. R в среднем равно D).
Система работает хуже (деградирует), но сохраняет работоспособность даже если срок исполнения иногда просрочен.
Примеры:
экранный редактор
сеть передачи данных
сервер базы данных
Жесткий срок исполнения (Hard Deadline, Dhard)
Временные
события
(timed)
Фиксированный период возникновения T
Миниальный интервал между возникновением ограничен некоторым значением
Миниальный интервал между возникновением может быть любым
Системный таймер
Одновременное истечение тайм-аутов передачи нескольких сетевых сообщений
Коррекция курса самолета в случае предсказания коллизии (результат вычислений)
Нажатие клавиши на клавиатуре (аппаратная защита от слишком частого нажатия)
Периодическое поступление сетевого сообщения (напр. t° двигателя)
Сбой аппаратуры - генерация прерывания (Appolo-11)
Атака хакеров на Web-сервер
Программная защита от зацикливания - периодический опрос состояния задач
Ошибка программы - бит события задачи не сбрасывается (всегда установлен)
Программируеиый
интервальный таймер
Приоритетный планировщик с вытесненяемым диспетчированием (prioritized preemptive scheduler)
1960
1980
2000
Для того, чтобы ОС могла использоваться как основа приложения реального времени, она должна удовлетворять требованиям:
исполнимость: предсказуемость работы приложения жесткого реального времени при любой (допустимой) нагрузке
одновременная обработка событий различного типа и времени возникновения, и сроками исполнения (в том числе c существенно различными периодами и сроками исполнения)
относительная простота модификации приложения при добавлении событий или изменении параметров событий (например, при уменьшении периода событий)
надежность (отсутствие сбоев и крахов)
минимально возможное потребление ресурсов - памяти и процессорного времени
Преимущества:
- исполнимость (несложная проверка исполнимости худшего случая);
- надежность – обработчики вызываются как функции;
- небольшие расходы памяти процессора.
Недостатки:
- большие накладные расходы загрузки процессора - плохое его использование из-за частой проверки событий - особенно редких с коротким сроком исполнения (например, сигнала от датчика лобового удара);
- сложность модификации (при добавлении событий изменяется график, иногда нужно разбивать обработчик на несколько более коротких);
- невозможность приоритетного вытеснения обработки для обслуживания срочного события (по прерыванию).
running
Событие e1
T1 = 5
D1 = 5
C1 = 2
Отклик r1
Отклик r2
Для каждого события создается обработчик - например, функция на языке С.
Эта функция называется задачей (task).
Задачи не связаны друг с другом.
Задачи активизируются событиями, поддерживая концепцию «система управляется событиями» (event-driven).
Событие e2
T2 = 2
D2 = 2
C2 = 1
Пример обработки события e1
Пример обработки события e2
Для обработки каждого события можно построить пример временной диаграммы.
Task1
D1
Task2
D2
Обработка событий независимо друг от друга
Пример приложения реального времени с двумя периодическими событиями
e1
e1
e2
В том случае, если планировщик не поддерживает приоритетность выполнения задач, нет гарантии, что сроки исполнения будут выдержаны, потому что сценарий выполнения зависит от того, обработка какого события начнется раньше.
Следовательно, примитивный планировщик не годится для систем реального времени.
Примитивный
Планировщик
нарушение срока исполнения или пропуск обработки события
Task2
r2
e2
Приоритетный
Вытесняющий
Планировщик
e1
Task1
r1
Приоритеты должны назначаться правильно. Приоритет Task1 выше приоритета Task2: срок исполнения D2 нарушается, и даже может быть пропущена обработка события.
вытеснение
высокий
низкий
Анализ характеристик событий.
Анализ сроков исполнения.
Проектирование обработчиков событий (задач).
Оценка времен обработки событий.
Оценка накладных расходов.
Прогноз модификаций приложения.
Анализ стоимости.
Обычно используется метод назначения приоритетов “чем меньше срок исполнения, тем выше приоритет” (RMS).
Нет
Файловая
система
Система
ввода-вывода
“Привилегированные” условия для срочных задач
Реактивность
“Быстрый” усредненный отклик
Обеспечение ответа реального времени
Планирование
Разделение времени;
нестрого-“приоритетное”;
приоритет коротким задачам
Обычно приоритетное вытесняющее с большим количеством приоритетов
Объем занимаемой памяти
Несколько мегабайт кода, около мегабайта данных
Несколько килобайт кода, около сотни байт данных
Время исполнения сервисов
Сотни микросекунд
Единицы и десятки микросекунд
Предсказуемость
“Отсутствует” (при перегрузке)
Гарантируется всегда
Инверсия приоритетов задач
Возможна; в том числе неограниченная по времени (P/V семафоры)
Исключена (кроме ограниченной при доступе к разделяемым ресурсам)
t2
t1
Short Job First (приоритет t1 ниже приоритета t2): не выдерживается срок исполнения D1
Приоритетное вытесняющее планирование в ОСРВ и планирование «приоритет коротким задачам» в ОСОН
Планирование «приоритет коротким задачам» не учитывает сроки исполнения задач, и поэтому не применяется в ОСРВ.
Немедленное вытеснение: приложение всегда исполнимо
Планирование с немедленным вытеснением в ОСРВ и планирование по таймеру в ОСОН
t2
t1
t1: T1=D1=4, C1=3; t2: T2=D2=16, C2=4;
Планирование по таймеру с периодом равным 3: не выдерживается срок исполнения D1
t2
t1
Планирование по таймеру приводит к инверсии приоритетов, и, как следствие, к нарушению сроков исполнения. Обычно не применяется в ОСРВ.
5.1 Задачи
void TaskA_Entry( void )
{
/* processing */
Activate( TaskB );
Terminate();
}
void TaskB_Entry( void )
{
/* processing */
Terminate();
}
5.2 Обработчики прерываний
void interrupt Isr1( void )
{
ISREntry();
/* processing */
ISRActivate( TaskB );
ISRExit();
}
Int 08h
Int 09h
Addr. Of Isr1
Таблица векторов прерываний
5.3 Ресурсы
Задача
Задача
Ресурс
I/O
Сообщения (messages) предназначены для обмена данными любого типа между задачами и обработчиками прерываний.
Сообщения обычно копируются в системную область.
5.4 Сообщения
Задача
Задача
Сообщение
Задача
Сообщение
5.5 События (флаги, сигналы)
Задача
Задача
Задача
Таймеры (timers) предназначены для задания временных интервалов для задач, а также подсчета абсолютного значения времени.
Счетчики (counters) предназначены для отслеживания абсолютного значения или перемещения механических устройств (например, угла поворота вала).
5.6 Таймеры и счетчики
Событие
Событие
Задача
Тайм-аут
Таймер
HW
Print
Flag
Enter
PrntScrn
Other
Put CR, LF into
Character Queue
Activate Screen Task
Put Char into
Character Queue
Activate Screen Task
Activate Print Task
Wait ScanCode or Timeout Flag
Алгоритм Driver Task
Пример драйвера терминала
void TaskA_Entry(void)
{
Activate( TaskB );
}
Dispatcher
1
2
Scheduler
TaskA
TaskB
Запуск более приоритетной задачи
TaskA
TaskB
TaskA
TaskB
Уменьшение приоритета
running
running
running
Для гарантирования соблюдения сроков исполнения не должно быть инверсии приоритетов, поэтому диспетчеризация должна выполняться немедленно после планирования
(не по таймеру!).
TaskA
Prio = 0
TaskA
Prio = 5
TaskB
Prio = 5
TaskC
NULL
running
TaskB
TaskC
0
1
2
3
NULL
TaskB
NULL
TaskH
NULL
TaskA
TaskB
TaskA
TaskB
NULL
NULL
TaskD
TaskD
TaskF
TaskH
TaskD
TaskF
TaskH
«POSIX» планировщик поддерживает
списки задач для каждого приоритета
(+) быстрая постановка в очередь
(+) время постановки в очередь всегда одинаково
(-) большой расход ОЗУ
(-) требуется цикл сканирования очередей
Priority level
TaskB запускается
context
Prio=low
Переключение контекста задач при запуске высокоприоритетной задачи из низкоприоритетной задачи (вытеснение).
Prio=high
TaskB
context
Контекст
задачи B
TaskB стек
context
void TaskB_Entry(void)
{
}
«Кажущийся» вызов задачи В из задачи А осуществляется с помощью:
1. сохранения значений регистров процессора на стеке выполняющейся задачи А,
2. запоминания указателя стека в описателе задачи А (для того, чтобы впоследствии продолжить выполнение задачи А),
3. загрузки указателя стека процессора из описателя задачи B,
4. восстановления значений регистров процессора со стека задачи B.
Аппаратный
фрейм
прерывания
Scratch General
Purpose Registers
Preserved General
Purpose Registers
Scratch Floating
Point Registers
Preserved Floating
Point Registers
Special Registers
Контекст задачи для
типичного 32-битного
процессора (~64+ байта)
Preserved General
Purpose Registers
Preserved Floating
Point Registers
Return Address
Оптимизированный
контекст задачи для
вызова задачи как
функции (~2+ байта).
Применяется в случае использования «общего стека» для всех задач.
Контекст задачи обычно сохраняется на стеке задачи
Указатель на контекст (вершина стека) заносится в описатель задачи
Переключение контекста часто выполняется с помощью команд процессора, предназначенных для обработки прерываний («программное прерывание», «возврат из прерывания»)
Основной тип планирования в системах жесткого реального времени
7.2 Вытесняющее (full pre-emptive) планирование
Похоже на round-robin, но вытеснение задач происходит принудительно по истечении кванта времени (таким образом, ОС влияет на время выполнения задач)
Но: построение оптимального off-line графика выполнения в общем случае относится к классу NP-complete задач, и, следовательно, практически неосуществимо.
Европейский проект реализации в различных областях: http://www.setta.org
Dispatch To переводит выбранную задачу в состояние running (текущая), переключая контекст задачи (состояние процессора).
Terminate (itself) переводит текущую задачу в состояние неактивности, освобождая области ОЗУ.
Blocked
Ready
Сервисы для управления задачами
Stack / Context pointer
Context
Blocked
Ready
Дополнительные сервисы для управления
ждущими задачами
(TimeLink)
(Time-out)
Link
timer
Приложение неисполнимо, так как обработчик прерывания аппаратно вытесняет задачу с процессора, хотя и обрабатывает событие с большим сроком исполнения.
Task2
r2
ISR1,
C1 = 1
r1
highest
high
Внешнее событие e1
T1 = 5
D1 = 5
C = 2 = (C1=1) + (C3=1)
Внутреннее событие e2
T2 = 2
D2 = 2
C2 = 1
Task3,
С3 = 1
low
Обработка события распределена между обработчиком прерывания и задачей. Приложение стало исполнимым, потому что приоритетом задачи можно управлять.
activate
activate
Interrupts’
priority
levels
Tasks’
priority
levels
Interrupt
Service
Routines
Tasks
Схема приоритетов, поддерживающая
перекрытие приоритетов задач
и обработчиков прерывания
(например, ERCOS)
Overlapping
Highest priority
Lowest priority
Назначение приоритетов в соответствии со сроками исполнения может приводить к перекрытию приоритетов задач и обработчиков прерываний.
TaskA прерывается
Prio=low
TaskA
context
Аппаратный
фрейм
прерывания
(контекст
задачи)
TaskA стек
Prio=high
TaskB
context
Аппаратный
фрейм
прерывания
(контекст
задачи)
TaskB стек
Сохранение
регистров
Сохранение
указателя стека
Восстановление
указателя стека
Восстановление
регистров
TaskB запускается
context
Prio=low
Переключение контекста задач при запуске высокоприоритетной задачи из обработчика прерывания.
activation
interrupted
ready
Activation
(dispatching)
ready
Activation
(scheduling)
Dispatcher
1
2
Scheduler
TaskA
TaskB
Запуск более приоритетной задачи из обработчика прерывания
TaskA
TaskB
TaskA
TaskB
Уменьшение приоритета
running
running
running
В случае обработки нескольких вложенных обработчиков прерываний (т.е. прерывающих друг друга) диспетчирование выполняется по завершению самого внешнего обработчика прерывания.
void interrupt Isr1()
{
ISREntry();
ISRActivate( TaskB );
ISRExit();
}
Activation
(unstacking)
ready
Activation
(stacking)
OS
executing
executing
interrupted
10.6 Атомарные операции в ОС
Обычно атомарные (неделимые) операции в ядре выполняются с помощью запрещения / разрешения прерываний. Это сделано для того, чтобы обработчики прерываний не могли нарушить целостность данных ядра - например, списков планировщика.
void Activate( TASK task )
{
DisableInterrupts();
Schedule( task );
Dispatch();
EnableInterrupts();
}
void Activate( TASK task )
{
DisableInterrupts();
Schedule( task );
EnableInterrupts();
DisableInterrupts();
Dispatch();
EnableInterrupts();
}
В то же время для улучшения реактивности ядра желательно уменьшить время исполнения атомарных операций - например, разделив их на две операции.
void TaskB_Entry(void)
{
/* Entry Critical Section */
RequestResource( ResX );
/* read shared variable */
if( X == 1 ) Y = 0;
/* Exit Critical Section */
ReleaseResource( ResX );
}
Доступ к критической
секции управляется
семафором ресурса
ResX
Критическая секция кода
для доступа к разделяемым
переменным, устройствам ввода-вывода, и т.п.
P(S2)
semaphore S2 occupied
P(S2)
access to semaphore
S2 denied
waiting
Deadlock - both tasks are waiting forever
Unbounded
priority inversion
Bounded
inversion
Протокол маскирования прерываний (IMP)
Протокол наследования приоритетов (PIP)
Протокол потолка приоритетов (PCP)
Протокол высшего приоритета (HLP)
Механизм
Требование
Тупики
Затяжная инверсия приоритетов
Влияние на «другие» задачи
Потребление ресурсов
Предотвращает
Предотвращает
Значительное
Минимальное
Не предотвращает
Предотвращает
Незначительное
Незначительное
Предотвращает
Предотвращает
Умеренное
Значительное (сложный)
Предотвращает
Предотвращает
Умеренное
Незначительное
(+) нет затяжной инверсии приоритетов
(+) нет тупиков
(+) простота реализации
(+) минимальные накладные расходы
(-) ухудшается реакция на возникновение
прерывания (увеличивается latency)
(-) критическая секция распространяется на
все задачи!
latency
Inheritance of Task 0 priority by Task 1
Release resource вызывает диспетчирование задач!
request resource S2
request resource S2 denied
ready
Тупик при взаимном захвате двух семафоров (ресурсов) в случае протокола наследования приоритетов
Deadlock - both tasks are ready forever
(-) требуется вычисление приоритетов
до выполнения (т.е. off-line обработка).
(-) ограниченная инверсия приоритетов
При освобождении ресурса должна выполняться диспетчеризация задач!
running
Task 1
release resource low
release resource low
При освобождении ресурса high задача
Task2 ошибочно попадает в конец
подсписка задач приоритета low
Эта ошибка приводит к повторному
захвату ресурса low задачей Task1
Для корректной реализации протокола при захвате и освобождении вложенных ресурсов необходимо, чтобы при освобождении ресурса «высокого» приоритета задача помещалась в голову подсписка задач «низкого» приоритета - для того, чтобы она не вытеснялась задачей «низкого» приоритета, которая может захватить неосвобожденный ресурс низкого приоритета!
Ошибка реализации HLP при работе с вложенными ресурсами
HLP имеет много синонимов: Priority Protect Protocol (POSIX), Priority Ceiling Emulation Protocol, Immediate Priority Ceiling Protocol, OSEK Priority Ceiling Protocol.
Ho: Highest Locker Protocol - это не то же самое, что Priority Ceiling Protocol!
Методы
Для динамических приоритетов
Для фиксированных приоритетов
Rate Monotonic
Scheduling (RMS)
(задачам с более короткими периодами исполнения назначается более
высокий приоритет)
Deadline Monotonic
Scheduling
(задачам с более короткими сроками исполнения назначается более
высокий приоритет)
Earliest Deadline
First (EDF)
(задаче с более близким сроком исполнения назначается высший приоритет)
Least Laxity
(задаче, которой нужно больше времени чтобы завершить работу до истечения срока исполнения, назначается высший приоритет)
t1: T1=D1=3, C1=1; t2: T2=D2=2, C2=1;
U = 1/3 + 1/2 = 0.83(3)
t1
high
t2
low
t2
high
t1
low
Не-RMS: приложение исполнимо
RMS: приложение исполнимо
t2
low
t1
high
RMS: приложение исполнимо
t1: T1=D1=5, C1=2; t2: T2=D2=2, C2=1;
U = 2/5 + 1/2 = 0.9
t2
high
t1
low
Не-RMS: приложение неисполнимо!
RMS лучше, чем не-RMS!
нарушение срока исполнения
U() = 0,693 = ln(2)
(+) простая реализация
(назначение
фиксированных
приоритетов)
(-) плохое использование
процессора
(-) ОС должна
поддерживать много
уровней приоритетов
(на практике
достаточно 32 уровня)
Utilization Bound
t2
high
t1
low
t1: T1=D1=5, C1=2; t2: T2=D2=2, C2=1;
U = 2/5 + 1/2 = 0.9
Для t1 доступно только 40%!
Для t1 доступно 60%
В среднем задаче t1 доступно 50%, но с учетом срока исполнения - только 40%
(+) полное использование процессора
(-) сложная реализация (динамическое
назначение приоритетов)
t2
low
t1
high
t1: T1=D1=5, C1=2; t2: T2=D2=7, C2=4; U=2/5+4/7= 0.9714
RMS: приложение неисполнимо
t2
t1
EDF: приложение исполнимо!
перепланирование
нарушение срока исполнения
Можно заметить, что пример для EDF также исполним при невытесняющем планировании.
Следовательно, можно добиться улучшения планируемости, группируя задачи во взаимо-невытесняемые группы. Такие группы образуются с помощью назначения задачам группы порогового приоритета времени выполнения.
Задача из группы планируется с исходным приоритетом, а выполняется с пороговым приоритетом, исключая вытеснение задачи другой задачей группы.
Этот метод называется Preemptive Threshold™, и впервые был использован в ОСРВ ThreadX.
В реализации метод подобен HLP с критической секцией на все тело задачи.
t0: T0=D0=2, C1=1; t1: T1=D1=10, C1=2; t2: T2=D2=14, C2=4; U=1/2+2/10+4/14= 0.9857
(+) более полное использование процессора, чем в RMS
(+) реализация проще, чем EDF
(-) необходимость вычисления порогового значения приоритета (NP-полная задача)
нарушение срока исполнения
пороговое невытеснение
Полная версия: http://www.tech2.volvo.se/reportage/9811electrical/main.htm
http://www.tech2.volvo.se/reportage/9811electrical/anim.htm
Применяются аппаратные решения - сетевые
контроллеры.
(Например, CAN)
Применяется, если необходимо передавать «длинные» данные, или обеспечить постоянное
соединение (OSEK/VDX COM). Часто отсутствует во встроенных сетях.
Применяется, если необходимо обеспечить удобный прикладной программный интерфейс, или переносимость кода на другие платформы
(OSEK/VDX COM).
Встроенные системы обычно не поддерживают все уровни сетевой модели, так как требуется надежная быстрая передача «коротких» данных и минимальные накладные расходы.
t
Коллизия (столкновение)
Бракованный кадр (пакет)
Кадр (пакет)
Повторный кадр (пакет)
CSMA («ALOHA», ~1950), нет обнаружения коллизий; повтор обеспечивается транспортными протоколами
t
CSMA/CD (Ethernet, ~1980), есть обнаружение коллизий, нет разрешения коллизий; повтор через псевдо-случайный интервал времени
jam
jam
T
T
t
CSMA/CD+CR (CAN), есть обнаружение и разрешение коллизий
Отказ от передачи
CAN реализует метод доступа CSMA/CD+CR (Carrier Sense, Multiple Access/Collision Detection + Collision Resolution), т.е. CAN корректно разрешает конфликты множественного доступа.
Каждый узел «слушает» шину в процессе передачи заголовка сообщения. Если узел передал «1», а принял «0», то узел отказывается от дальнейшей передачи, так как это означает, что другой узел в этот же момент времени передает более приоритетное сообщение. Так реализуется разрешение конфликтов.
«1»
+V
R
Все выходные ключи закрыты - на шине +V (“1”)
«0»
«1»
«0»
«1»
+V
R
Один выходной ключ открыт - на шине 0 (“0”)
(Схема «Wired-AND» - «монтажное И»)
«1»
«1»
«1»
«1»
«1»
i
Длина 40 m - Скорость 1 Mbit/s
Длина 400 m - Скорость 0.1 Mbit/s (100 Kbit/s)
Длина 1000 m - Скорость 0.04 Mbit/s (40 Kbit/s)
S
O
F
1
Identifier
(Priority)
11 (29)
Control
(Length)
6
Data
0 - 8 bytes
CRC
16
A
C
K
2
E
O
F
7
Примерный формат кадра (frame) CAN.
(2/3)*Tbit > 2* ( Tline + Treceiver + Ttransceiver ),
где Tbit = 1 / (Скорость bit/s)
Treceiver = Ttransceiver = 25E-9 s
Tline = (Длина m) / (2E+8 m/s)
Start Of Frame
End Of Frame
Acknowledgment
bits
Узел #1
Узел #4
Узел #2
Узел #3
1 => 2
4 <= 3
2 => 3
4 => 1
Логическое кольцо (поддерживаются алгоритмы
установки и восстановления кольца).
#4 #3 #2 #1
1/0 1/0 1/0 1/0
Состояние узлов (1-доступен, 0-не доступен)
Копия хранится в каждом узле
Узел #1
Узел #4
Узел #2
Узел #3
1 <=> 2
4 <=> 1
Логическая звезда (один из узлов отслеживает
состояние остальных узлов).
1 <=> 3
Компилятор
с языка C
Компоновщик
Перемещаемые
объектные
файлы
(машинный
код)
[*.obj]
Библиотека
модулей ОС
(При поставке
без исходного
кода)
[*.lib *.obj]
Исполняемый
файл приложения вместе с ОС
[*.exe *.hex]
Упрощенная схема создания встроенного приложения с использованием ОС
Real-Time Linux
Модификации ОС общего назначения для применения в приложениях реального времени.
Существует несколько совершенно различных решений, в частности:
Архитектура со интегрированным ядром реального времени (dual-kernel architecture).
Архитектура с модифицированным планировщиком реального времени (single-kernel architecture).
The Real-time Linux Software Quick Reference Guide: http://www.linuxdevices.com/articles/AT8073314981.html
Приложение
Коммуникационная
подсистема
Управление
сетью
Операционная Система
Электронное управляющее устройство (ECU)
Приложение
Коммуникационная
подсистема
Управление
сетью
Операционная Система
Электронное управляющее устройство (ECU)
Шина передачи данных (например, CAN)
Планирование задач поддерживает принцип FIFO, т.е. равноприоритетные задачи планируются в том порядке, в котором они активизировались (как для первого запуска, так и для множественной активизации).
highest priority
lowest priority
Interrupts’
priority
levels
Tasks’
priority
levels
Interrupt
Service
Routines
Tasks
Overlapping
Overlapping
possible
as a result
of
Resource
Allocation
Схема приоритетов поддерживает
перекрытие приоритетов задач и
обработчиков только во время
исполнения задачи.
Задача всегда стартует
с приоритетом ниже приоритета
обработчиков прерывания.
Message
TaskA
TaskB
SendMessage
ReceiveMessage
OS
Msg
Msg
COM
Message’
TaskC
ReceiveMessage
OS
Msg
COM
Notification
on arrival
TaskC
ActivateTask
Msg
(-) не поддерживается реальное время
для процессов Linux
(+) поддерживается жесткое реальное время для RT задач
(+) сроки исполнения в микросекундном диапазоне
(+) используется (почти) немодифицированное ядро Linux
Dual-kernel architecture (Embedix from Lineo, RTLinux from FSMLabs)
(+) поддерживается жесткое реальное время для Linux задач
(+) возможна интеграция планировщиков
(+) сроки исполнения в диапазоне десятков микросекунд (+) используется механизмы защиты Linux
Single-kernel architecture (HardHat from MontaVista, KURT)
RT scheduler
RT API
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть