Разделы презентаций


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

Содержание

MT, v1.4, 2002План (1)1. Введение2. Определение “реального времени” 2.1 Жесткое реальное время (hard) 2.2 Реальное время с допусками (soft) 2.3 Комбинированное реальное время (firm) 2.4 Классификация и примеры событий3. История развития встроенных ОС 3.1 Временной циклический

Слайды и текст этой презентации

Слайд 1MT, v1.4, 2002
Операционные Системы Реального Времени
Максим Петрович Червинский
email: Maxim.Tchervinsky@motorola.com

(8 академических

часов)

MT, v1.4, 2002Операционные Системы Реального ВремениМаксим Петрович Червинскийemail: Maxim.Tchervinsky@motorola.com(8 академических часов)

Слайд 2MT, v1.4, 2002
План (1)
1. Введение
2. Определение “реального времени”
2.1 Жесткое реальное

время (hard)
2.2 Реальное время с допусками (soft)
2.3 Комбинированное реальное время

(firm)
2.4 Классификация и примеры событий
3. История развития встроенных ОС
3.1 Временной циклический исполнитель (cyclic executive)
3.2 Система, управляемая прерываниями (interrupt-driven executive)
3.3 Приоритетный планировщик, управляемый событиями (event-driven priority-based scheduler)
4. Характеристики встроенных ОС

MT, v1.4, 2002План (1)1. Введение2. Определение “реального времени”	2.1 Жесткое реальное время (hard)	2.2 Реальное время с допусками (soft)	2.3

Слайд 3MT, v1.4, 2002
План (2)
5. Базовые объекты
5.1 задачи
5.2 обработчики прерываний
5.3 ресурсы

(семафоры)
5.4 сообщения
5.5 события (флаги, сигналы)
5.6 таймеры и счетчики
6. Планирование и

Диспетчеризация
7. Типы планирования:
7.1 невытесняющее (non pre-empted)
7.2 вытесняющее (pre-empted)
7.3 круговое (round-robin)
7.4 квантование времени (time-sliced)
7.5 переключения по времени (time-triggered)
8. Управление задачами
9. Ждущие задачи
MT, v1.4, 2002План (2)5. Базовые объекты5.1 задачи5.2 обработчики прерываний5.3 ресурсы (семафоры)5.4 сообщения5.5 события (флаги, сигналы)5.6 таймеры и

Слайд 4MT, v1.4, 2002
План (3)
10. Обслуживание прерываний:
10.1 вложенные прерывания
10.2 немедленное выполнение

сервиса ОС
10.3 задержанное выполнения сервисов ОС
10.4 отложенное выполнение сервисов ОС
10.5

ограничение сервисов ОС
10.6 атомарные операции в ОС
11. Разделяемые ресурсы (семафоры)
11.1 P/V семафоры и связанные с ними проблемы
11.2 Протокол маскирования прерываний (IMP)
11.3 Протокол наследования приоритетов (PIP)
11.4 Протокол высшего приоритета (HLP)
MT, v1.4, 2002План (3)10. Обслуживание прерываний:10.1 вложенные прерывания10.2 немедленное выполнение сервиса ОС10.3 задержанное выполнения сервисов ОС10.4 отложенное

Слайд 5MT, v1.4, 2002
План (4)
12. Техника назначения приоритетов:
12.1 Последовательное увеличение приоритетов

(RMA)
12.2 Приоритетное планирование с учетом ближайших сроков (EDF)
13. Приоритетное планирование

с пороговым вытеснением (PTS)
14. Сетевая передача данных
14.1 Физический уровень и уровень доступа на примере CAN
14.2 Управление сетью
15. Примеры Операционных Систем:
15.1 OSEK OS
15.2 Real-Time Linux
MT, v1.4, 2002План (4)12. Техника назначения приоритетов:12.1 Последовательное увеличение приоритетов (RMA)12.2 Приоритетное планирование с учетом ближайших сроков

Слайд 6MT, v1.4, 2002
Ресурсы Интернет
A. News: comp.realtime, comp.arch.embedded
B. http://www.embedded.com (Embedded System

Programming, ESP)
C. http://www.dedicated-systems.com (including Dedicated Systems Magazine)
D. “Deadline Monotonic Analysis”,

Ken Tindell, ESP, vol. 13, #6, june 2000: http://www.embedded.com/2000/0006/0006feat1.htm
E. “Get by Without RTOS”, Michael Melkonian, ESP, vol. 13, #10, september 2000: http://www.embedded.com/2000/0009/0009feat4.htm
F.“Операционные системы реального времени”, Жданов А.А., ЗАО "РТСофт", Москва, "PCWeek", N 8, 1999: http://www.rtsoft.ru/pressa/text027.html
G. “Full” list of RTOS: http://www.realtime-info.be/encyc/market/rtos/rtos.htm
H. OSEK Official Web site: www.osek-vdx.org

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

Библиография

MT, v1.4, 2002Ресурсы ИнтернетA. News: comp.realtime, comp.arch.embeddedB. http://www.embedded.com (Embedded System Programming, ESP)C. http://www.dedicated-systems.com (including Dedicated Systems Magazine)D.

Слайд 7MT, v1.4, 2002
1. Введение (1)
Встроенные системы (embedded systems) - программные

системы, встраиваемые в оборудование (автомобили, бытовую технику, аудио и видео

технику, станки, и т.п.)

Встроенные системы

Не использующие ОС

Использующие ОС

Приложение

Операционная Система

MT, v1.4, 20021. Введение (1)	Встроенные системы (embedded systems) - программные системы, встраиваемые в оборудование (автомобили, бытовую технику,

Слайд 8MT, v1.4, 2002
1. Введение (2)
Электронный карбюратор
Датчик давления во входном коллекторе
Двигатель
Лямбда датчик
Катали- затор
Управление дроссельной заслонкой
Воздух
Топливо
Выхлоп для дожигания
Микроконтроллер
Подача топлива
Давление

смеси
Температура двигателя
Угол поворота коленвала
Обороты двигателя
Зажигание в

цилиндрах

Обогащение смеси

Открытие

Угол открытия

Подача выхлопа

Периферийные устройства (АЦП/ЦАП, цифровой ввод/вывод, и т.п.)

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

Таймер

MT, v1.4, 20021. Введение (2)Электронный карбюраторДатчик давления во входном коллектореДвигательЛямбда датчикКатали- заторУправление дроссельной заслонкойВоздухТопливоВыхлоп для дожиганияМикроконтроллерПодача топливаДавление

Слайд 9MT, v1.4, 2002
2. Определение «реального времени» (1)
События (Events)
T (time)
Система (приложение) реального

времени - программная система, в которой корректность работы зависит не

только от результатов вычислений, но также от времени получения этих результатов.

Отклики (Responses)

Responses = F( Events,T )

Система должна завершить обработку события (выработать отклик) не позднее заранее определенного момента времени.

Система управляет обработкой большого количества разных событий.

MT, v1.4, 20022. Определение «реального времени» (1)События (Events)T (time)	Система (приложение) реального времени - программная система, в которой

Слайд 10MT, v1.4, 2002
2. Определение «реального времени» (2)
Обработка
Событие (event)
Отклик (service, response)
t
Время отклика (Response

Time, R)
Срок исполнения (Deadline, D)
Реальное время определяется соотношением срока исполнения

и временем отклика.
Реальное время не зависит от того, “быстрая” система или “медленная” (то есть не зависит от единиц измерения времени).

Время обработки (Computation Time, C)

Задержка (Jitter, J)

Обработка “в реальном времени” означает “вовремя”

MT, v1.4, 20022. Определение «реального времени» (2)ОбработкаСобытие (event)Отклик (service, response)tВремя отклика (Response Time, R)Срок исполнения (Deadline, D)Реальное

Слайд 11MT, v1.4, 2002
2.1 Жесткое реальное время
t
Время отклика (Response Time, R)
Жесткий

срок исполнения (Hard Deadline, D)
событие
Время обработки (Computation Time, C)
Жесткое реальное

время (hard real time) требует, чтобы время отклика никогда не превышало срок исполнения (т.е. R меньше либо равно D).

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

Примеры:
система управления двигателем
система торможения
подушка безопасности

Требуется в большинстве встроенных приложений!
MT, v1.4, 20022.1 Жесткое реальное времяtВремя отклика (Response Time, R)Жесткий срок исполнения (Hard Deadline, D)событиеВремя обработки (Computation

Слайд 12MT, v1.4, 2002
2.2 Реальное время с допусками
t
Время отклика (Response Time,

R)
Срок исполнения c допуском (Soft Deadline, D)
событие
Время обработки (Computation Time,

C)

Реальное время с допусками (soft real time) допускает флуктуации времени отклика при условии, что среднее время отклика равно сроку исполнения (т.е. R в среднем равно D).

Система работает хуже (деградирует), но сохраняет работоспособность даже если срок исполнения иногда просрочен.

Примеры:
экранный редактор
сеть передачи данных
сервер базы данных

MT, v1.4, 20022.2 Реальное время с допускамиtВремя отклика (Response Time, R)Срок исполнения c допуском (Soft Deadline, D)событиеВремя

Слайд 13MT, v1.4, 2002
2.3 Комбинированное реальное время
t
Время Отклика (Response Time, R)
Срок

исполнения с допуском (Soft Deadline, Dsoft)
событие
Время обработки (Computation Time, C)
Комбинированное

реальное время (firm real time) комбинирует два срока выполнения - короткого «с допуском» и более длинного «жесткого» (т.е. R в среднем равно Dsoft, но меньше либо равно Dhard).

Примеры:
мульти-медиа приложения
высоко-скоростные сети передачи данных

Жесткий срок исполнения (Hard Deadline, Dhard)

MT, v1.4, 20022.3 Комбинированное реальное времяtВремя Отклика (Response Time, R)Срок исполнения с допуском (Soft Deadline, Dsoft)событиеВремя обработки

Слайд 14MT, v1.4, 2002
2.4 Классификация и примеры событий
По времени возникновения
По типу

возникновения
Периодические
(periodic)
Спорадические
(sporadic)
Апериодические
(aperiodic)
t
T
T
t


t
Внешние события - изменения состояния внешней среды
(environmental)
Внутренние события - изменения состояния внутри

системы.
(internal)

Временные события
(timed)

Фиксированный период возникновения T

Миниальный интервал между возникновением ограничен некоторым значением 

Миниальный интервал между возникновением может быть любым

Системный таймер

Одновременное истечение тайм-аутов передачи нескольких сетевых сообщений

Коррекция курса самолета в случае предсказания коллизии (результат вычислений)

Нажатие клавиши на клавиатуре (аппаратная защита от слишком частого нажатия)

Периодическое поступление сетевого сообщения (напр. t° двигателя)

Сбой аппаратуры - генерация прерывания (Appolo-11)
Атака хакеров на Web-сервер

Программная защита от зацикливания - периодический опрос состояния задач

Ошибка программы - бит события задачи не сбрасывается (всегда установлен)

Программируеиый интервальный таймер

MT, v1.4, 20022.4 Классификация и примеры событийПо времени  возникновенияПо типу  возникновенияПериодические(periodic)Спорадические(sporadic)Апериодические(aperiodic)tTTttВнешние события - изменения состояния

Слайд 15MT, v1.4, 2002
3. История развития встроенных ОС
Общий цикл выполнения


(great executive loop)
Система, построенная на обработчиках прерываний (interrupt-driven executive)
Временной

циклический исполнитель
(time slot scheduler, cyclic executive)

Приоритетный планировщик с вытесненяемым диспетчированием (prioritized preemptive scheduler)

1960

1980

2000

Для того, чтобы ОС могла использоваться как основа приложения реального времени, она должна удовлетворять требованиям:

исполнимость: предсказуемость работы приложения жесткого реального времени при любой (допустимой) нагрузке

одновременная обработка событий различного типа и времени возникновения, и сроками исполнения (в том числе c существенно различными периодами и сроками исполнения)

относительная простота модификации приложения при добавлении событий или изменении параметров событий (например, при уменьшении периода событий)

надежность (отсутствие сбоев и крахов)

минимально возможное потребление ресурсов - памяти и процессорного времени

MT, v1.4, 20023. История развития встроенных ОС Общий цикл выполнения (great executive loop)Система, построенная на обработчиках прерываний

Слайд 16MT, v1.4, 2002
3.1 Временной циклический исполнитель
EventD (каждые 8мс)
EventC (каждые 4мс)
EventB (каждые 2мс)
EventA (каждую 1мс)
Временной

циклический исполнитель
(cyclic executive).

Обработка событий привязана к временным промежуткам

(таймерным слотам).

Преимущества:
- исполнимость (несложная проверка исполнимости худшего случая);
- надежность – обработчики вызываются как функции;
- небольшие расходы памяти процессора.

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

MT, v1.4, 20023.1 Временной циклический исполнительEventD (каждые 8мс)EventC (каждые 4мс)EventB (каждые 2мс)EventA (каждую 1мс)Временной циклический исполнитель (cyclic

Слайд 17MT, v1.4, 2002
3.2 Система, управляемая прерываниями
Background task
Interrupt2 (event2)
Interrupt1 (event1)
Interrupt3 (event3)
executing
BG task
interrupt1
interrupt2
interrupt3
executing
executing
executing
executing
executing
running
Система, построенная на обработчиках прерываний

(interrupt-driven executive).

Обработка событий выполняется вложенными обработчиками прерываний.
Преимущества:
- управляется событиями;
-

небольшое потребление памяти и процессорного времени.

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

running

MT, v1.4, 20023.2 Система, управляемая прерываниямиBackground taskInterrupt2 (event2)Interrupt1 (event1)Interrupt3 (event3)executingBG taskinterrupt1interrupt2interrupt3executingexecutingexecutingexecutingexecutingrunningСистема, построенная на обработчиках прерываний (interrupt-driven executive).

Слайд 18MT, v1.4, 2002
3.3 Приоритетный планировщик (1)
void Task1( void )
{
/* processing

e1 */ Response( r1 );
}
void Task2( void )
{
/* processing e2 */ Response(

r2 );
}

Событие 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

MT, v1.4, 20023.3 Приоритетный планировщик (1)void Task1( void ){/* processing e1 */ Response( r1 );}void Task2( void

Слайд 19MT, v1.4, 2002
3.3 Приоритетный планировщик (2)
Task2
r2
e2
Примитивный Планировщик
e1
Task1
r1
Task2 «случайно» начинается раньше, чем

Task1 : все сроки исполнения выдерживаюся
Task2
r2
e2
e1
Task1
r1
Task2 «случайно» начинается позже, чем

Task1 : срок исполнения D2 нарушается и даже может быть пропущена обработка события.

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

Примитивный Планировщик

нарушение срока исполнения или пропуск обработки события

MT, v1.4, 20023.3 Приоритетный планировщик (2)Task2r2e2Примитивный Планировщикe1Task1r1Task2 «случайно» начинается раньше, чем Task1 : все сроки исполнения выдерживаюсяTask2r2e2e1Task1r1Task2

Слайд 20MT, v1.4, 2002
3.3 Приоритетный планировщик (3)
Task2
r2
e2
Приоритетный Вытесняющий Планировщик
e1
Task1
r1
низкий
высокий
Приоритет Task2 выше приоритета Task1:

все сроки исполнения выдерживаюся
Приоритетный вытесняющий планировщик для задач с

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

Task2

r2

e2

Приоритетный Вытесняющий Планировщик

e1

Task1

r1

Приоритеты должны назначаться правильно. Приоритет Task1 выше приоритета Task2: срок исполнения D2 нарушается, и даже может быть пропущена обработка события.

вытеснение

высокий

низкий

MT, v1.4, 20023.3 Приоритетный планировщик (3)Task2r2e2Приоритетный Вытесняющий Планировщикe1Task1r1низкийвысокийПриоритет Task2 выше приоритета Task1: все сроки исполнения выдерживаюся Приоритетный

Слайд 21MT, v1.4, 2002
3.3 Приоритетный планировщик (4)
Анализ требований реального времени
(real-time requirements

and situations)
Использовать приоритетный планировщик ?
Проверка исполнимости приложения (schedulability analysis)
Назначение приоритетов задач
Приложение
исполнимо ?
Да
Да
Нет
Преимущества:
- математически доказанные

методы, гарантирующие выполнение требований реального времени (для периодических и спорадических событий);
- поддержка концепции «система управляется событиями»;
- простота модификации приложения.

Недостатки:
- накладные расходы на работу собственно планировщика.

Анализ характеристик событий.
Анализ сроков исполнения.
Проектирование обработчиков событий (задач).
Оценка времен обработки событий.

Оценка накладных расходов.
Прогноз модификаций приложения.
Анализ стоимости.

Обычно используется метод назначения приоритетов “чем меньше срок исполнения, тем выше приоритет” (RMS).

Нет

MT, v1.4, 20023.3 Приоритетный планировщик (4)Анализ требований реального времени(real-time requirements and situations)Использовать приоритетный планировщик ?Проверка исполнимости приложения

Слайд 22MT, v1.4, 2002
4. Характеристики встроенных ОС (1)
Управление
задачами
Управление
прерываниями
Управление синхронизацией
задач
Планировщик и Диспетчер
Сообщения
Сеть
Таймеры
Счетчики
Ядро ОСРВ

(Real-Time Kernel)
Операционная система реального времени - программа, распределяющая вычислительные ресурсы

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

Файловая система

Система ввода-вывода

MT, v1.4, 20024. Характеристики встроенных ОС (1)УправлениезадачамиУправлениепрерываниямиУправление синхронизациейзадачПланировщик и ДиспетчерСообщенияСетьТаймерыСчетчикиЯдро ОСРВ  (Real-Time Kernel)	Операционная система реального времени

Слайд 23MT, v1.4, 2002
4. Характеристики встроенных ОС (2)
Характеристика
Производительность
ОС общего

назначения (ОСОН) (Windows NT, Unix)
Встроенные ОС реального времени
“Равные” условия для

всех задач

“Привилегированные” условия для срочных задач

Реактивность

“Быстрый” усредненный отклик

Обеспечение ответа реального времени

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

Разделение времени; нестрого-“приоритетное”; приоритет коротким задачам

Обычно приоритетное вытесняющее с большим количеством приоритетов

Объем занимаемой памяти

Несколько мегабайт кода, около мегабайта данных

Несколько килобайт кода, около сотни байт данных

Время исполнения сервисов

Сотни микросекунд

Единицы и десятки микросекунд

Предсказуемость

“Отсутствует” (при перегрузке)

Гарантируется всегда

Инверсия приоритетов задач

Возможна; в том числе неограниченная по времени (P/V семафоры)

Исключена (кроме ограниченной при доступе к разделяемым ресурсам)

MT, v1.4, 20024. Характеристики встроенных ОС (2)Характеристика Производительность ОС общего назначения (ОСОН) (Windows NT, Unix)Встроенные ОС реального

Слайд 24MT, v1.4, 2002
4. Характеристики встроенных ОС (3)
t2
t1
RMS (приоритет t1 выше

приоритета t2): приложение всегда исполнимо
t1: T1=D1=4, C1=3; t2: T2=D2=8,

C2=2;

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

Планирование по таймеру приводит к инверсии приоритетов, и, как следствие, к нарушению сроков исполнения. Обычно не применяется в ОСРВ.

MT, v1.4, 20024. Характеристики встроенных ОС (3)t2t1RMS (приоритет t1 выше приоритета t2): приложение всегда исполнимо t1: T1=D1=4,

Слайд 25MT, v1.4, 2002
5. Базовые объекты (1)
Задача
Задача
Задача
Прерывание
Прерывание
Ресурс
Сообщение
Сигнал
Таймеры
Задачи

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

Семафоры для доступа к

разделяемым ресурсам

Сообщения

События (флаги, сигналы)

Таймеры и счетчики

MT, v1.4, 20025. Базовые объекты (1)ЗадачаЗадачаЗадачаПрерываниеПрерываниеРесурсСообщениеСигналТаймерыЗадачиОбработчики прерыванийСемафоры для доступа к разделяемым ресурсамСообщенияСобытия (флаги, сигналы)Таймеры и счетчики

Слайд 26MT, v1.4, 2002
Задача (task) - единица обработки, выполняющаяся конкурентно с

другими задачами.

Задачи являются основным средством обработки внутренних событий.

Задача имеет

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

Задача имеет точку входа (entry point).

Задача обычно является функцией, записанной на языке C (C++) и идентифицируется некоторым идентификатором (языка С).

Задача обычно выполняет вызовы ОС для взаимодействия с другими задачами (хотя бы один вызов завершения задачи).

Обычно задача встроенной ОС эквивалентна thread обычных ОС, т.е. работает в одном адресном пространстве с другими задачами.

5.1 Задачи

void TaskA_Entry( void )
{
/* processing */

Activate( TaskB );

Terminate();
}

void TaskB_Entry( void )
{
/* processing */

Terminate();
}

MT, v1.4, 2002Задача (task) - единица обработки, выполняющаяся конкурентно с другими задачами. Задачи являются основным средством обработки

Слайд 27MT, v1.4, 2002
Обработчик прерываний (interrupt service routine, software interrupt handler)

- единица обработки, инициированная аппаратным прерыванием асинхронно по отношению к

выполнению задач и самой ОС.

Обработчики прерываний являются основным средством обнаружения возникновения внешних и временных событий.

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

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

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

5.2 Обработчики прерываний

void interrupt Isr1( void )
{
ISREntry();

/* processing */

ISRActivate( TaskB );

ISRExit();
}

Int 08h

Int 09h

Addr. Of Isr1

Таблица векторов прерываний

MT, v1.4, 2002Обработчик прерываний (interrupt service routine, software interrupt handler) - единица обработки, инициированная аппаратным прерыванием асинхронно

Слайд 28MT, v1.4, 2002
Семафоры предназначены для взаимосключающего доступа задач (и обработчиков

прерываний) к критическим секциям кода, т.е. к разделяемым ресурсам.

Специальные

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

5.3 Ресурсы

Задача

Задача

Ресурс

I/O

Сообщения (messages) предназначены для обмена данными любого типа между задачами и обработчиками прерываний.

Сообщения обычно копируются в системную область.

5.4 Сообщения

Задача

Задача

Сообщение

Задача

Сообщение

MT, v1.4, 2002Семафоры предназначены для взаимосключающего доступа задач (и обработчиков прерываний) к критическим секциям кода, т.е. к

Слайд 29MT, v1.4, 2002
События (events) предназначены для обмена двоичными данными между

задачами и обработчиками прерываний.

События также реализуются в виде флагов (masks,

flags) или сигналов (signals).

Cобытия обычно принадлежат задачам (не разделяются между задачами).

5.5 События (флаги, сигналы)

Задача

Задача

Задача

Таймеры (timers) предназначены для задания временных интервалов для задач, а также подсчета абсолютного значения времени.

Счетчики (counters) предназначены для отслеживания абсолютного значения или перемещения механических устройств (например, угла поворота вала).

5.6 Таймеры и счетчики

Событие

Событие

Задача

Тайм-аут

Таймер

HW

MT, v1.4, 2002События (events) предназначены для обмена двоичными данными между задачами и обработчиками прерываний.События также реализуются в

Слайд 30MT, v1.4, 2002
5.7 Базовые объекты (пример)
Driver Task
Screen Task
Разделяемый Ресурс (ОЗУ экрана)
ScanCode Flag
Print Task
Scan-code
Scan-code
Scan-code
Character
Character
Character
Timeout Flag
Wait

Request
Wait Print Flag
End of Request
Init ScanCode Queue Init Character Queue Init Timer
Read

ScanCode from Queue

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

Пример драйвера терминала

MT, v1.4, 20025.7 Базовые объекты (пример)Driver TaskScreen TaskРазделяемый Ресурс (ОЗУ экрана)ScanCode FlagPrint TaskScan-codeScan-codeScan-codeCharacterCharacterCharacterTimeout FlagWait RequestWait  Print

Слайд 31MT, v1.4, 2002
6. Планирование и диспетчеризация (1)
Running
Ready
1. Schedule
2. Dispatch
Inactive
Состояния задач
Планирование

состоит из двух шагов, выполняющихся друг за другом:
1. Собственно планирование

(scheduling), т.е. составления расписания.
2. Диспетчеризация (dispatching) - выбора задачи из списка и назначения ей процессора (переключение контекста).

void TaskA_Entry(void)
{
Activate( TaskB );
}

Dispatcher

1

2

Scheduler

TaskA

TaskB

Запуск более приоритетной задачи

TaskA

TaskB

TaskA

TaskB

Уменьшение приоритета

running

running

running

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

MT, v1.4, 20026. Планирование и диспетчеризация (1)RunningReady1. Schedule2. DispatchInactiveСостояния задачПланирование состоит из двух шагов, выполняющихся друг за

Слайд 32MT, v1.4, 2002
6. Планирование и диспетчеризация (2)
Планирование и диспетчеризация в

системах реального времени должно удовлетворять следующим требованиям:

строгое соблюдение дисциплины

планирования

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

сохранение контекста задачи при вытеснении ее с процессора

восстановление контекста задачи при назначении ей процесоора

минимально возможное потребление ресурсов - памяти и процессорного времени
MT, v1.4, 20026. Планирование и диспетчеризация (2)Планирование и диспетчеризация в системах реального времени должно удовлетворять следующим требованиям:

Слайд 33MT, v1.4, 2002
6. Планирование и диспетчеризация (3)
Простой планировщик - список
готовых

задач, упорядоченных
по убыванию приоритета
(+) простота реализации
(+) универсальность
(+) малый

расход ОЗУ
(+) простое сканирование очереди (первая)
(-) время постановки в очередь варьируется
в зависимости от приоритета задачи и числа
задач в очереди

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

MT, v1.4, 20026. Планирование и диспетчеризация (3)Простой планировщик - списокготовых задач, упорядоченных по убыванию приоритета (+) простота

Слайд 34MT, v1.4, 2002
6. Планирование и диспетчеризация (4)
void TaskA_Entry(void)
{


Activate( TaskB );


}
TaskA

вытесняется
Prio=low
TaskA
context
Контекст задачи A

TaskA стек
1. Сохранение
регистров
2. Сохранение указателя стека
3.Восстановление указателя стека
4.

Восстановление
регистров

TaskB запускается

context

Prio=low

Переключение контекста задач при запуске высокоприоритетной задачи из низкоприоритетной задачи (вытеснение).

Prio=high

TaskB

context

Контекст задачи B

TaskB стек

context

void TaskB_Entry(void)
{

}

«Кажущийся» вызов задачи В из задачи А осуществляется с помощью:
1. сохранения значений регистров процессора на стеке выполняющейся задачи А,
2. запоминания указателя стека в описателе задачи А (для того, чтобы впоследствии продолжить выполнение задачи А),
3. загрузки указателя стека процессора из описателя задачи B,
4. восстановления значений регистров процессора со стека задачи B.

MT, v1.4, 20026. Планирование и диспетчеризация (4)void TaskA_Entry(void){Activate( TaskB );}TaskA вытесняется Prio=lowTaskAcontextКонтекст задачи ATaskA стек1. Сохранениерегистров2. Сохранение

Слайд 35MT, v1.4, 2002
6. Планирование и диспетчеризация (5)
Program Counter
Accumulator B
Index Register
CPU

status
Compiler Reg 2
Accumulator A
Compiler Reg 1
Контекст задачи для
типичного 8-битного
процессора

(~9 байт)

Аппаратный
фрейм
прерывания

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+ байта). Применяется в случае использования «общего стека» для всех задач.

Контекст задачи обычно сохраняется на стеке задачи
Указатель на контекст (вершина стека) заносится в описатель задачи
Переключение контекста часто выполняется с помощью команд процессора, предназначенных для обработки прерываний («программное прерывание», «возврат из прерывания»)

MT, v1.4, 20026. Планирование и диспетчеризация (5)Program CounterAccumulator BIndex RegisterCPU statusCompiler Reg 2Accumulator ACompiler Reg 1Контекст задачи

Слайд 36MT, v1.4, 2002
7. Типы планирования (1)
7.1 Невытесняющее (non pre-emptive) планирование
terminate

or yield
Latency time
TaskB (high)
TaskA (low)
running
inactive
inactive
running
ready
activate
terminate
TaskB (high)
TaskA (low)
running
running
inactive
inactive
running
activate
ready
TaskA is pre-empted due to higher priority task

Обычно применяется для быстрой обработки события (чтобы не тратить время на «лишнии» переключения контекста)

Основной тип планирования в системах жесткого реального времени

7.2 Вытесняющее (full pre-emptive) планирование

MT, v1.4, 20027. Типы планирования (1)7.1 Невытесняющее (non pre-emptive) планированиеterminate or yieldLatency timeTaskB (high)TaskA (low)runninginactiveinactiverunningreadyactivateterminateTaskB (high)TaskA (low)runningrunninginactiveinactiverunningactivatereadyTaskA

Слайд 37MT, v1.4, 2002
7. Типы планирования (2)
7.3 Круговое (Round-Robin) планирование
terminate
TaskA, TaskB,

TaskC (high)
TaskD (low)
running
inactive
A
activate
7.4 Планирование с квантованием (time-sliced)
B
C
A
B
A
A
terminate
terminate
ready
Round-Robin tasks
terminate
TaskA, TaskB, TaskC (high)
TaskD (low)
running
inactive
A
activate
B
C
A
B
A
A
terminate
terminate
ready
Time-sliced tasks
quantums
yield
yield
yield
yield
Обычно

применяется как замена «общего цикла выполнения»
ОС не влияет на вытеснение задач и на время выполнения задач

Похоже на round-robin, но вытеснение задач происходит принудительно по истечении кванта времени (таким образом, ОС влияет на время выполнения задач)

MT, v1.4, 20027. Типы планирования (2)7.3 Круговое (Round-Robin) планированиеterminateTaskA, TaskB, TaskC (high)TaskD (low)runninginactiveAactivate7.4 Планирование с квантованием (time-sliced)BCABAAterminateterminatereadyRound-Robin

Слайд 38MT, v1.4, 2002
7. Типы планирования (3)
7.5 Time-triggered scheduling (X-by-wire)
TaskD
TaskC
TaskB
TaskA
Свойства time-triggered

планирования:
1. Детерминированность (replica determinism).
2. Двойное и тройное исполнение задачи для

сравнения результата вычислений.
3. Жесткий (непериодический) график задач строится до исполнения (off-line).
4. Прерывания разрешаются только в определенные моменты времени или не разрешаются во время полного цикла выполнения.
5. Возможна исключительно эффективная реализация исполнителя графика.

Но: построение оптимального off-line графика выполнения в общем случае относится к классу NP-complete задач, и, следовательно, практически неосуществимо.
Европейский проект реализации в различных областях: http://www.setta.org

MT, v1.4, 20027. Типы планирования (3)7.5 Time-triggered scheduling (X-by-wire)TaskD TaskC TaskB TaskA Свойства time-triggered планирования:1. Детерминированность (replica

Слайд 39MT, v1.4, 2002
8. Управление задачами (1)
Для того, чтобы обработка внутренних

событий выполнялась в реальном времени, механизмы управления задачами должны удовлетворять

следующим требованиям :

поддержка задач однократного выполнения (без состояния ожидания)

поддержка задач с состоянием ожидания (нужны для естественной реализация машины состояний)

статическое создание задачи (обычно off-line)

минимально возможное потребление ресурсов - памяти и процессорного времени
MT, v1.4, 20028. Управление задачами (1)Для того, чтобы обработка внутренних событий выполнялась в реальном времени, механизмы управления

Слайд 40MT, v1.4, 2002
8. Управление задачами (2)
Inactive
Terminate (itself)
Activate
Dispatch To
Running
Yield
Dispatch From
Kill (optional)
ROM
RAM
Ready

List
Activate создает в ОЗУ управляющий блок задачи пользуясь описателем, находящимся

в ПЗУ (подобно загрузке исполняемого файла с диска в память).

Dispatch To переводит выбранную задачу в состояние running (текущая), переключая контекст задачи (состояние процессора).

Terminate (itself) переводит текущую задачу в состояние неактивности, освобождая области ОЗУ.

Blocked

Ready

MT, v1.4, 20028. Управление задачами (2)InactiveTerminate (itself)ActivateDispatch ToRunningYieldDispatch FromKill (optional)ROMRAMReady ListActivate создает в ОЗУ управляющий блок задачи

Слайд 41MT, v1.4, 2002
8. Управление задачами (3)
Link
Entry Point (*f)()
Priority
TaskID
TaskID
TaskID
Link
running
Структуры данных для

управления
задачами
Activate( TaskID ) - планирует задачу (inactive -> ready),

и вызывает диспетчер.

Terminate() - задача завершает саму себя (running -> inactive), и вызывает диспетчер.

Yield() - задача освобождает процессор для более приоритетной задачи, (running -> ready), и вызывает диспетчер.

IdleLoop() - “for(;;) { }” (в некоторых системах эту роль выполняет низкоприоритетная задача) («jump *»)

Сервисы для управления задачами

Stack / Context pointer

Context


MT, v1.4, 20028. Управление задачами (3)LinkEntry Point (*f)()PriorityTaskIDTaskIDTaskIDLinkrunningСтруктуры данных для управлениязадачами Activate( TaskID ) - планирует задачу

Слайд 42MT, v1.4, 2002
8. Управление задачами (4)
terminate
TaskB (high)
TaskA (low)
running
running
inactive
inactive
activate
ready
Tactivation
Ttermination
TaskB (high)
TaskA (low)
running
running
yield
Tcontext switch
Pre-emptive scheduling
Non Pre-emptive scheduling

Tactivation latency
Ttermination latency
Tcontext switch
Базовые временные
характеристики управления задачами
running
ready
ready

MT, v1.4, 20028. Управление задачами (4)terminateTaskB (high)TaskA (low)runningrunninginactiveinactiveactivatereadyTactivationTterminationTaskB (high)TaskA (low)runningrunningyieldTcontext switchPre-emptive schedulingNon Pre-emptive scheduling Tactivation latency Ttermination

Слайд 43MT, v1.4, 2002
9. Ждущие задачи (1)
Inactive
Terminate itself
Activate
Dispatch To
Running
Dispatch From
Kill
Waiting
WaitFlags (Flags,

Time)
SetFlags(Flags)
Waiting означает, что задача ждет какого-то события (флага или момента

времени). В этом состоянии задача сохраняет свой контекст и локальные переменные для максимально быстрого перевода в состояние готовности (ready) и затем продолжения выполнения (running).

Blocked

Ready

MT, v1.4, 20029. Ждущие задачи (1)InactiveTerminate itselfActivateDispatch ToRunningDispatch FromKillWaitingWaitFlags (Flags, Time)SetFlags(Flags)Waiting означает, что задача ждет какого-то события

Слайд 44MT, v1.4, 2002
9. Ждущие задачи (2)
Waited Flags
Set Flags
TaskID
TaskID
TaskID
Дополнительные структуры данных

для управления ждущими задачами
WaitFlags( Flags ) - сравнивает состояние установленных

флагов и аргумента. Если они совпадают, то задача продолжает выполнение. Если нужные флаги не установлены, задача переходит в состояние ожидания (running -> waiting), и вызывает диспетчер.

SetFlags( Flags ) - сравнивает состояние ожидаемых флагов и аргумента. Если они не совпадают, то задача остается в состоянии ожидания. Если ожидаемые флаги установлены, задача планируется (waiting -> ready), и вызывается диспетчер.

Если состояние ожидания связано с тайм- аутом, ожидающая задача находится в таймерной очереди.



Дополнительные сервисы для управления ждущими задачами

(TimeLink)

(Time-out)

Link

timer

MT, v1.4, 20029. Ждущие задачи (2)Waited FlagsSet FlagsTaskIDTaskIDTaskIDДополнительные структуры данных для  управления ждущими задачами WaitFlags( Flags

Слайд 45MT, v1.4, 2002
10. Обслуживание прерываний (1)
Task2
r2
ISR1
r1
highest
high
Внешнее событие e1
T1 = 5
D1

= 5
C1 = 2
Внутреннее событие e2
T2 = 2
D2 = 2
C2

= 1

Приложение неисполнимо, так как обработчик прерывания аппаратно вытесняет задачу с процессора, хотя и обрабатывает событие с большим сроком исполнения.

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

MT, v1.4, 200210. Обслуживание прерываний (1)Task2r2ISR1r1highesthighВнешнее событие e1T1 = 5D1 = 5C1 = 2Внутреннее событие e2T2 =

Слайд 46MT, v1.4, 2002
10. Обслуживание прерываний (2)
Highest priority
Lowest priority
Interrupts’ priority levels Планируются аппаратно
Tasks’

priority levels Планируются программно
Interrupt Service Routines
Tasks
Схема приоритетов, не поддерживающая перекрытие приоритетов задач и обработчиков прерывания

(например, OSEK/VDX OS)

Interrupts’
priority levels

Tasks’
priority levels

Interrupt Service Routines

Tasks

Схема приоритетов, поддерживающая перекрытие приоритетов задач и обработчиков прерывания (например, ERCOS)

Overlapping

Highest priority

Lowest priority

Назначение приоритетов в соответствии со сроками исполнения может приводить к перекрытию приоритетов задач и обработчиков прерываний.

MT, v1.4, 200210. Обслуживание прерываний (2)Highest priorityLowest priorityInterrupts’ priority levels Планируются аппаратноTasks’ priority levels Планируются программно Interrupt

Слайд 47MT, v1.4, 2002
10. Обслуживание прерываний (3)
Для того, чтобы обработка внешних

и таймерных событий выполнялась в реальном времени, механизмы обслуживания прерываний

должны удовлетворять следующим требованиям:

выполнение сервисов ОС- включая запуск задач - из обработчиков прерываний (позволяет перенести значительную часть обработки события из обработчика прерывания в задачу, улучшив исполнимость приложения)

исключение инверсии приоритетов между обработчиками прерываний и задачами

целостность данных и операций операционной системы при возникновении и обработки прерываний (атомарные операции ядра системы)

высокая реактивность, т.е. минимально возможное время реакции системы на возникновение внешнего прерывания (interrupt latency)

обработка нескольких десятков источников прерываний
MT, v1.4, 200210. Обслуживание прерываний (3)Для того, чтобы обработка внешних и таймерных событий выполнялась в реальном времени,

Слайд 48MT, v1.4, 2002
10. Обслуживание прерываний (4)
void interrupt Isr1()
{

ISREntry();



ISRActivate( TaskB );



ISRExit();

“Return

From Interrupt”
}

TaskA прерывается

Prio=low

TaskA

context

Аппаратный
фрейм
прерывания (контекст задачи)

TaskA стек

Prio=high

TaskB

context

Аппаратный
фрейм
прерывания (контекст задачи)

TaskB стек

Сохранение
регистров

Сохранение указателя стека

Восстановление указателя стека

Восстановление
регистров

TaskB запускается

context

Prio=low

Переключение контекста задач при запуске высокоприоритетной задачи из обработчика прерывания.

MT, v1.4, 200210. Обслуживание прерываний (4)void interrupt Isr1(){    ISREntry();  ISRActivate( TaskB );

Слайд 49MT, v1.4, 2002
10. Обслуживание прерываний (5)
Task A (low)
Task B (high)
ISR (high)
running
executing
running
interrupted
interrupt
running
Activation (dispatching)
ready
Activation (scheduling)
Tinterrupt entry latency
Tinterrupt

switch latency
Tinterrupt entry latency
Tinterrupt switch latency
Базовые временные
характеристики обслуживания прерываний

MT, v1.4, 200210. Обслуживание прерываний (5)Task A (low)Task B (high)ISR (high)runningexecutingrunninginterruptedinterruptrunningActivation (dispatching)readyActivation (scheduling)Tinterrupt entry latencyTinterrupt switch latency

Слайд 50MT, v1.4, 2002
10.1 Вложенные прерывания
Task
ISR 2
ISR 1
running
executing
running
interrupted
interrupt
interrupted
executing
executing
interrupt
Вложенные прерывания улучшают возможность

системы по одновременной обработки нескольких источников прерываний.
Вложенные прерывания обычно поддерживаются

операционной системой в случае, если аппаратура имеет многоуровневую приоритетную систему прерываний (Motorola 68K, PowerPC, Siemens C167), так как при этом фактически выполняется приоритетное вытесняющее планирование обработчиков прерываний (т.е. контроллер прерываний работает как аппаратный планировщик и диспетчер).
Вложенные обработчики без поддержки приоритетов ухудшают исполнимость приложений, так как фактически выполняются в режиме “случайного” вытеснения.
MT, v1.4, 200210.1 Вложенные прерыванияTaskISR 2ISR 1runningexecutingrunninginterruptedinterruptinterruptedexecutingexecutinginterruptВложенные прерывания улучшают возможность системы по одновременной обработки нескольких источников прерываний.Вложенные

Слайд 51MT, v1.4, 2002
10.2 Немедленное выполнение сервиса ОС
Task A (low)
Task B (high)
ISR (med)
running
executing
running
interrupted
interrupt
pre-empted
executing
running
Немедленное выполнение

сервиса ОС необходимо в ОС, где поддерживается схема приоритетов, которая

позволяет задачам иметь приоритет выше, чем приоритет обработчика прерывания (например, ERCOS) - потому что гарантирует отсутствие инверсии приоритетов. Задача, планируемая из обработчика прерываний, может быть приоритетнее самого обработчика, и должна немедленно вытеснить его с процессора.

Обычно не поддерживается во встроенных ОС из-за сравнительно сложной реализации.

activation

interrupted

ready

MT, v1.4, 200210.2 Немедленное выполнение сервиса ОСTask A (low)Task B (high)ISR (med)runningexecutingrunninginterruptedinterruptpre-emptedexecutingrunningНемедленное выполнение сервиса ОС необходимо в

Слайд 52MT, v1.4, 2002
10.3 Задержанное выполнение сервисов ОС (1)
Task A (low)
Task B (med)
ISR (high)
running
executing
running
interrupted
interrupt
running
Задержанное

выполнение сервиса ОС обычно означает, что планирование задачи выполняется во

время выполнения обработчика прерывания, а переключение (диспетчирование) задачи выполняется по завершению обработчика прерывания.

Такая схема поддерживается многими ОС (например, OSEK/VDX OS), так как соответствует схеме приоритетов “обработчик прерывания имеет более высокий приоритет, чем задача”. Конечно, правильное назначение приоритетов - ответственность разработчика приложения.

Activation (dispatching)

ready

Activation (scheduling)

MT, v1.4, 200210.3 Задержанное выполнение сервисов ОС (1)Task A (low)Task B (med)ISR (high)runningexecutingrunninginterruptedinterruptrunningЗадержанное выполнение сервиса ОС обычно

Слайд 53MT, v1.4, 2002
10.3 Задержанное выполнение сервисов ОС (2)
Планирование в случае

задержанного выполнения сервиса состоит из двух раздельных шагов:

1. Собственно планирование,

т.е. составление расписания.

2. Диспетчирование (dispatching) - выбор задачи из списка и назначения ей процессора (переключение контекста). Выполняется по завершению обработчика прерывания!

Dispatcher

1

2

Scheduler

TaskA

TaskB

Запуск более приоритетной задачи из обработчика прерывания

TaskA

TaskB

TaskA

TaskB

Уменьшение приоритета

running

running

running

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

void interrupt Isr1()
{

ISREntry();



ISRActivate( TaskB );



ISRExit();


}

MT, v1.4, 200210.3 Задержанное выполнение сервисов ОС (2)Планирование в случае задержанного выполнения сервиса состоит из двух раздельных

Слайд 54MT, v1.4, 2002
10.4 Отложенное выполнение сервисов ОС
Task A (low)
Task B (med)
ISR (high)
running
executing
running
interrupt
running
Отложенное

выполнение сервиса ОС обычно означает, что вызов сервиса ОС откладывается

до момента окончания обработчика прерывания или завершения прерванного выполнения сервиса ОС. По окончании выполнения обработчика выполняется вызов сервиса.

Такая схема позволяет разрешать прерывания во время выполнения сервиса ОС, уменьшая interrupt latency, и поддерживается многими встроенными ОСРВ (например, RTXC).

Activation (unstacking)

ready

Activation (stacking)

OS

executing

executing

interrupted

MT, v1.4, 200210.4 Отложенное выполнение сервисов ОСTask A (low)Task B (med)ISR (high)runningexecutingrunninginterruptrunningОтложенное выполнение сервиса ОС обычно означает,

Слайд 55MT, v1.4, 2002
10.5 Ограничение сервисов ОС
Многие ОС не позволяют выполнять

все сервисы ядра из обработчиков прерывания.
Например, разрешается только переводить

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

10.6 Атомарные операции в ОС


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

void Activate( TASK task )
{
DisableInterrupts();

Schedule( task );


Dispatch();

EnableInterrupts();

}

void Activate( TASK task )
{

DisableInterrupts();
Schedule( task );
EnableInterrupts();

DisableInterrupts();
Dispatch();
EnableInterrupts();

}


В то же время для улучшения реактивности ядра желательно уменьшить время исполнения атомарных операций - например, разделив их на две операции.

MT, v1.4, 200210.5 Ограничение сервисов ОСМногие ОС не позволяют выполнять все сервисы ядра из обработчиков прерывания. Например,

Слайд 56MT, v1.4, 2002
11. Разделяемые ресурсы (семафоры)
void TaskA_Entry(void)
{

/* Entry

Critical Section */
RequestResource( ResX );
/* write

shared variable */
X = 1;

/* Exit Critical Section */
ReleaseResource( ResX );
}

void TaskB_Entry(void)
{

/* Entry Critical Section */
RequestResource( ResX );
/* read shared variable */
if( X == 1 ) Y = 0;

/* Exit Critical Section */
ReleaseResource( ResX );
}

Доступ к критической секции управляется
семафором ресурса
ResX

Критическая секция кода для доступа к разделяемым переменным, устройствам ввода-вывода, и т.п.

MT, v1.4, 200211. Разделяемые ресурсы (семафоры)void TaskA_Entry(void){  /* Entry Critical Section */  RequestResource( ResX );

Слайд 57MT, v1.4, 2002
11.1 P/V семафоры и проблемы (1)
Task 2 (low)
Task 0 (high)
running
running
running
ready
P(S1) access

to semaphore S1 denied
P(S1) semaphore S1 occupied
activation
inactive
waiting
Тупик при взаимном захвате

двух P/V семафоров

P(S2) semaphore S2 occupied

P(S2) access to semaphore S2 denied

waiting

Deadlock - both tasks are waiting forever

MT, v1.4, 200211.1 P/V семафоры и проблемы (1)Task 2 (low)Task 0 (high)runningrunningrunningreadyP(S1) access to semaphore  S1

Слайд 58MT, v1.4, 2002
11.1 P/V семафоры и проблемы (2)
Полная версия http://www.wrs.com/products/html/jpl.html
Комментарий

http://www.embedded.com/2000/0006/0006feat1.htm
Исправление дефектов на Марсе.

4 Июля 1997 года Mars Pathfinder приземлился

на Марсе.
Ключевым компонентом системы была ОС реального времени VxWorks® (WindRiver).

Для сбора данных в реальном времени использовались камеры, управление которыми программно синхронизировалось. Вскоре после начала сбора данных система стала переходить в состояние сброса (reset).

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

Высоко-приоритетная задача с коротким сроком исполнения через pipe обменивалась данными с низкоприоритетной задачей. Pipe была реализована с помощью семафора.

VxWorks поддерживает протокол наследования приоритетов для разделяемых ресурсов как опцию, но эта опция не была выбрана специалистами NASA. Теория стала реальностью.

Решение: cпециалисты NASA послали команду “установить бит” в глобальной переменной для использования протокола наследования приоритетов. После этого система работала без сбоев до истечения срока службы батарей.
MT, v1.4, 200211.1 P/V семафоры и проблемы (2)Полная версия http://www.wrs.com/products/html/jpl.htmlКомментарий http://www.embedded.com/2000/0006/0006feat1.htmИсправление дефектов на Марсе.4 Июля 1997 года

Слайд 59MT, v1.4, 2002
11.1 P/V семафоры и проблемы (3)
Task 2 (low)
Task 0 (high)
Task

1 (med)
running
running
running
running
running
inactive
ready
inactive
ready
P(S1) access to semaphore S1 denied
P(S1) semaphore S1 occupied
activation
inactive
V(S1) semaphore S1 released
ready
waiting
activation
Затяжная

инверсия приоритетов (Unbounded Priority Inversion)

Unbounded priority inversion

Bounded inversion

MT, v1.4, 200211.1 P/V семафоры и проблемы (3)Task 2 (low)Task 0 (high)Task 1 (med)runningrunningrunningrunningrunninginactivereadyinactivereadyP(S1) access to semaphore

Слайд 60MT, v1.4, 2002
11.1 P/V семафоры и проблемы (4)
Для того, чтобы

семафоры могли использоваться во встроенных приложениях реального времени, механизм поддержки

семафоров должен удовлетворять следующим требованиям:

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

Протокол маскирования прерываний (IMP)

Протокол наследования приоритетов (PIP)

Протокол потолка приоритетов (PCP)

Протокол высшего приоритета (HLP)

Механизм

Требование

Тупики

Затяжная инверсия приоритетов

Влияние на «другие» задачи

Потребление ресурсов

Предотвращает

Предотвращает

Значительное

Минимальное

Не предотвращает

Предотвращает

Незначительное

Незначительное

Предотвращает

Предотвращает

Умеренное

Значительное (сложный)

Предотвращает

Предотвращает

Умеренное

Незначительное

MT, v1.4, 200211.1 P/V семафоры и проблемы (4)Для того, чтобы семафоры могли использоваться во встроенных приложениях реального

Слайд 61MT, v1.4, 2002
11.2 Interrupt Masking Protocol (IMP)
Task 1 (low)
Disabled Interrupts
Task 0 (high)
running
running
running
inactive
ready
enable interrupts
disable

interrupts
Task 1
activate (event)
running
enable interrupts
Task 0
running
disable interrupts
activation
В некоторых операционных системах вместо

запрещения прерывания используется запрещение вытеснения задач (disable preemption).

(+) нет затяжной инверсии приоритетов
(+) нет тупиков
(+) простота реализации
(+) минимальные накладные расходы
(-) ухудшается реакция на возникновение прерывания (увеличивается latency)
(-) критическая секция распространяется на все задачи!

latency

MT, v1.4, 200211.2 Interrupt Masking Protocol (IMP)Task 1 (low)Disabled InterruptsTask 0 (high)runningrunningrunninginactivereadyenable interruptsdisable interruptsTask 1activate (event)runningenable interruptsTask

Слайд 62MT, v1.4, 2002
11.3 Priority Inheritance Protocol (PIP) (1)
Task 1 (low)
Inherited priority
Task

0 (high)
running
running
running
running
inactive
ready (blocked)
ready
release resource
request resource
Task 1
activation
request resource (denied)
ready
Is
equal to Task 0
(+) нет затяжной

инверсии приоритетов (+) в отсутствии реального разделения нет ограниченной инверсии приоритетов (не очень важно, так как при анализе всегда интересует худший случай, а он подразумевает разделение)
(+) не требуется вычислений до выполнения (т.е. нет off-line обработки).
(-) тупиковые ситуации возможны

Inheritance of Task 0 priority by Task 1

Release resource вызывает диспетчирование задач!

MT, v1.4, 200211.3 Priority Inheritance Protocol (PIP) (1)Task 1 (low)Inherited priorityTask 0 (high)runningrunningrunningrunninginactiveready (blocked)readyrelease resourcerequest resourceTask 1activationrequest

Слайд 63MT, v1.4, 2002
11.3 Priority Inheritance Protocol (2)
Task 1 (low)
Inherited priority
Task 0 (high)
running
running
running
inactive
ready (blocked)
request

resource S1
Task 1
activation
request resource S1 (denied)
ready
Is
equal to Task 0
Inheritance of Task

0 priority by Task 1

request resource S2

request resource S2 denied

ready

Тупик при взаимном захвате двух семафоров (ресурсов) в случае протокола наследования приоритетов

Deadlock - both tasks are ready forever

MT, v1.4, 200211.3 Priority Inheritance Protocol (2)Task 1 (low)Inherited priorityTask 0 (high)runningrunningrunninginactiveready (blocked)request resource S1Task 1activationrequest resource

Слайд 64MT, v1.4, 2002
11.4 Highest Locker Protocol (HLP) (1)
Task 2 (low)
Ceiling priority (med)
Task

1 (med)
inactive
inactive
running
running
running
running
running
running
running
running
inactive
ready (blocked)
inactive
ready
release resource
release resource
request resource
request resource
ready
Task 2
Task 1
activation
activation
Task 0 (high)
(+) нет затяжной

инверсии приоритетов (+) нет тупиковых ситуаций
(+) относительная простота реализации (+) нет влияет на более приоритетные задачи

(-) требуется вычисление приоритетов до выполнения (т.е. off-line обработка).
(-) ограниченная инверсия приоритетов

При освобождении ресурса должна выполняться диспетчеризация задач!

MT, v1.4, 200211.4 Highest Locker Protocol (HLP) (1)Task 2 (low)Ceiling priority (med)Task 1 (med)inactiveinactiverunningrunningrunningrunningrunningrunningrunningrunninginactiveready (blocked)inactivereadyrelease resourcerelease resourcerequest

Слайд 65MT, v1.4, 2002
11.4 Highest Locker Protocol (2)
Task 2 (low)
Ceiling priority (low)
Task 1 (low)
running
running
running
running
running
inactive
ready
inactive
ready
request

resource low
request resource low
Task 2
activation
Ceiling priority (high)
running
release resource high
request resource high
Task

2

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!

MT, v1.4, 200211.4 Highest Locker Protocol (2)Task 2 (low)Ceiling priority (low)Task 1 (low)runningrunningrunningrunningrunninginactivereadyinactivereadyrequest resource lowrequest resource lowTask

Слайд 66MT, v1.4, 2002
12. Техника назначения приоритетов
Задачи применения техники назначения приоритетов:
1.

Обеспечить исполнимость (schedulability) приложения на протяжении всего времени выполнения (до

нескольких лет!).
2. Обеспечить максимальное использование (utilizing) процессорного времени (т.е. экономию вычислительных ресурсов).
3. Рассчитать действительное значение сроков исполнения.

Существуют различные методы, дающие оптимальные результаты для разных наборов задач.

Методы

Для динамических приоритетов

Для фиксированных приоритетов

Rate Monotonic Scheduling (RMS) (задачам с более короткими периодами исполнения назначается более
высокий приоритет)

Deadline Monotonic Scheduling
(задачам с более короткими сроками исполнения назначается более
высокий приоритет)

Earliest Deadline
First (EDF) (задаче с более близким сроком исполнения назначается высший приоритет)

Least Laxity (задаче, которой нужно больше времени чтобы завершить работу до истечения срока исполнения, назначается высший приоритет)

MT, v1.4, 200212. Техника назначения приоритетовЗадачи применения техники назначения приоритетов:1. Обеспечить исполнимость (schedulability) приложения на протяжении всего

Слайд 67MT, v1.4, 2002
12.1 Rate Monotonic Algorithm (1)
Rate Monotonic Scheduling

(RMS) оптимален для независимых периодических задач имеющих срок исполнения равным

периоду (т.е. задача должна завершиться в пределах периода исполнения, D=T).
Задачам с меньшими периодами назначается больший приоритет.
Теорема Liu и Layland (1973): независимые периодические задачи, планируемые с помощью RMS, всегда удовлетворяют срокам исполнения, если сумма загрузок процессора задачами (C/T) не превышает предела использования (utilization bound).

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!

нарушение срока исполнения

MT, v1.4, 200212.1 Rate Monotonic Algorithm (1) Rate Monotonic Scheduling (RMS) оптимален для независимых периодических задач имеющих

Слайд 68MT, v1.4, 2002
12.1 Rate Monotonic Algorithm (2)
C1 —— +
T1

C2 —— +


T2

... +


Cn ——
Tn

0,720

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%

MT, v1.4, 200212.1 Rate Monotonic Algorithm (2)C1 —— + T1 C2 —— + T2   ...

Слайд 69MT, v1.4, 2002
12.2 Earliest Deadline First
Earliest Deadline First оптимален

для независимых периодических задач имеющих срок исполнения равным периоду (т.е.

задача должна завершиться в пределах периода исполнения, D=T).
EDF используется для приложений, для которых оптимален RMA, но выполняется динамически (и позволяет добиться 100% использования процессора).
Принцип работы: после любого события в системе, которое изменяет набор задач в состоянии готовности (ready), диспетчер назначает высший приоритет задаче с ближайшим сроком исполнения (earliest deadline).
Liu и Layland (1973): независимые периодические задачи, планируемые с помощью EDF, всегда удовлетворяют срокам исполнения, если сумма загрузок (C/T) не превышает 100%.

(+) полное использование процессора
(-) сложная реализация (динамическое назначение приоритетов)

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: приложение исполнимо!

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

нарушение срока исполнения

MT, v1.4, 200212.2 Earliest Deadline First Earliest Deadline First оптимален для независимых периодических задач имеющих срок исполнения

Слайд 70MT, v1.4, 2002
13. Preemptive Threshold Scheduling
t2
t1
t0
t2
t1
t0
PT1,2




PTS для группы t1 и

t2: приложение исполнимо! (показано только для двух периодов Т2)
RMS: приложение

неисполнимо уже на первом периоде T2

Можно заметить, что пример для 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-полная задача)

нарушение срока исполнения

пороговое невытеснение

MT, v1.4, 200213. Preemptive Threshold Schedulingt2t1t0t2t1t0PT1,2…………PTS для группы t1 и t2: приложение исполнимо! (показано только для двух

Слайд 71MT, v1.4, 2002
14. Сетевая передача данных (1)
Volvo S80 имеет две

сети передачи данных: высокоскоростную для управления двигателем и подвеской, и

низкоскоростную для кузовной электроники. Обе CAN сети соединяются шлюзом, и объединяют 18 узлов. Кроме того, в машине есть еще четыре низкоскоростных подсети на основе последовательного интерфейса типа RS232, включенного по схеме шины.

Полная версия: http://www.tech2.volvo.se/reportage/9811electrical/main.htm
http://www.tech2.volvo.se/reportage/9811electrical/anim.htm

MT, v1.4, 200214. Сетевая передача данных (1)Volvo S80 имеет две сети передачи данных: высокоскоростную для управления двигателем

Слайд 72MT, v1.4, 2002
14. Сетевая передача данных (2)
7. Application
6. Presentation
5. Session
4.

Transport
3. Network
2. Data Link
1. Physical
ISO/OSI Reference Model
Реальные встроенные сетевые системы


Применяются аппаратные решения - сетевые контроллеры.
(Например, CAN)

Применяется, если необходимо передавать «длинные» данные, или обеспечить постоянное соединение (OSEK/VDX COM). Часто отсутствует во встроенных сетях.

Применяется, если необходимо обеспечить удобный прикладной программный интерфейс, или переносимость кода на другие платформы (OSEK/VDX COM).

Встроенные системы обычно не поддерживают все уровни сетевой модели, так как требуется надежная быстрая передача «коротких» данных и минимальные накладные расходы.

MT, v1.4, 200214. Сетевая передача данных (2)7. Application6. Presentation5. Session4. Transport3. Network2. Data Link1. PhysicalISO/OSI Reference ModelРеальные

Слайд 73MT, v1.4, 2002
14.1 Физический уровень и уровень доступа на примере

CAN (1)
CAN - Controller Area Network - протокол, предназначенный для

транспортных средств. Разработка была начата R.Bosch GmbH, Germany в середине 1980-x.

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 корректно разрешает конфликты множественного доступа.

MT, v1.4, 200214.1 Физический уровень и уровень доступа на примере CAN (1)CAN - Controller Area Network -

Слайд 74MT, v1.4, 2002
14.1 Физический уровень и уровень доступа на примере

CAN (2)
Узел #1
Узел #2
0
0
0
1
0
1
1
...
0
0
1
0
0
0
1
0
1
1
...
ID (идентификатор сообщения) определяет приоритет сообщения («0»

имеет более высокий приоритет, чем «1»)

Каждый узел «слушает» шину в процессе передачи заголовка сообщения. Если узел передал «1», а принял «0», то узел отказывается от дальнейшей передачи, так как это означает, что другой узел в этот же момент времени передает более приоритетное сообщение. Так реализуется разрешение конфликтов.

«1»

+V

R

Все выходные ключи закрыты - на шине +V (“1”)

«0»

«1»

«0»

«1»

+V

R

Один выходной ключ открыт - на шине 0 (“0”) (Схема «Wired-AND» - «монтажное И»)

«1»

«1»

«1»

«1»

«1»

i

MT, v1.4, 200214.1 Физический уровень и уровень доступа на примере CAN (2)Узел #1Узел #20001011...0010001011...ID (идентификатор сообщения)

Слайд 75MT, v1.4, 2002
14.1 Физический уровень и уровень доступа на примере

CAN (3)
Так как каждый узел должен прослушивать передачу сообщения от

самого удаленного узла, то справедливо следующее неравенство (учитывающее скорость распространения электромагнитной волны в медном проводнике, скорость работы электронных схем, и допустимый сдвиг фазы на 2/3 времени передачи одного бита при встречной передаче кадров от максимально удаленных узлов для среды передачи витой медной пары):

Длина * Скорость <= 40 m * 1 MBit/s

Длина 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

MT, v1.4, 200214.1 Физический уровень и уровень доступа на примере CAN (3)Так как каждый узел должен прослушивать

Слайд 76MT, v1.4, 2002
14.2 Управление сетью
Управление сетью (Network Management) предназначено для

отслеживания состояний всех узлов сети. Это необходимо для принятия решений

о передаче данных узлу или о приеме данных от узла в нормальном режиме работы и для отслеживания сбоев узлов.

Узел #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

MT, v1.4, 200214.2 Управление сетьюУправление сетью (Network Management) предназначено для отслеживания состояний всех узлов сети. Это необходимо

Слайд 77MT, v1.4, 2002
15. Примеры Операционных Систем (1)
Код приложения (source code)

[*.c]

Конфигурация приложения

Характеристики задач,

ресурсов,
сообщений
(текстовый файл на специальном языке)
Генератор объектов системы
Конфигурация приложения

Характеристики задач, ресурсов,
сообщений
[*.c *.h]
Код Операционной

Системы
(При поставке
в исходном коде)

[*.h *.с]

Компилятор с языка C

Компоновщик

Перемещаемые объектные файлы
(машинный код)
[*.obj]

Библиотека модулей ОС
(При поставке без исходного кода)
[*.lib *.obj]

Исполняемый файл приложения вместе с ОС
[*.exe *.hex]

Упрощенная схема создания встроенного приложения с использованием ОС

MT, v1.4, 200215. Примеры Операционных Систем (1)Код  приложения (source code)[*.c]Конфигурация  приложенияХарактеристики задач, ресурсов,сообщений(текстовый файл на

Слайд 78MT, v1.4, 2002
15. Примеры Операционных Систем (2)
OSEK/VDX
Спецификации встроенной операционной системы

реального времени (OSEK/VDX OS), коммуникационная подсистема (OSEK/VDX COM) и управление

сетью (OSEK/VDX NM).
Основная область применения - транспортные средства (автомобили).
Спецификации разрабатываются Европейским консорциумом производителей автомобилей и поставщиков программного обеспечения с 1995 года. Последние версии спецификаций выпущены в конце 2000 года.

В настоящее время существует около десятка коммерчески доступных продуктов, используемых DaimlerChrysler, BMW, и др. в разрабатываемых моделях автомашин.

OSEK Official Web site: www.osek-vdx.org

Real-Time Linux
Модификации ОС общего назначения для применения в приложениях реального времени.

Существует несколько совершенно различных решений, в частности:

Архитектура со интегрированным ядром реального времени (dual-kernel architecture).
Архитектура с модифицированным планировщиком реального времени (single-kernel architecture).

The Real-time Linux Software Quick Reference Guide: http://www.linuxdevices.com/articles/AT8073314981.html

MT, v1.4, 200215. Примеры Операционных Систем (2)OSEK/VDXСпецификации встроенной операционной системы реального времени (OSEK/VDX OS), коммуникационная подсистема (OSEK/VDX

Слайд 79MT, v1.4, 2002
15.1 OSEK/VDX (1)
OSEK = “Offene Systeme und deren

Schnittstellen für die Elektronik im Kraftfahrzeug” (Open systems and the

corresponding interfaces for automotive electronics).
VDX = “Vehicle Distributed eXecutive”

OSEK/VDX - совместный проект автомобилестроителей и поставщиков автомобильных приложений, определяющий открытую архитектуру для распределенных систем транспортных средств.

Приложение

Коммуникационная подсистема

Управление сетью

Операционная Система

Электронное управляющее устройство (ECU)

Приложение

Коммуникационная подсистема

Управление сетью

Операционная Система

Электронное управляющее устройство (ECU)

Шина передачи данных (например, CAN)

MT, v1.4, 200215.1 OSEK/VDX (1)OSEK = “Offene Systeme und deren Schnittstellen für die Elektronik im Kraftfahrzeug” (Open

Слайд 80MT, v1.4, 2002
15.1 OSEK/VDX (2)
Функциональные свойства Операционной Системы OSEK/VDX OS

Планирование с фиксированными приоритетами
Вытесняемое, невытесняемое, и смешанное диспетчирование задач

Четыре класса соответствия системы (conformance classes)
Поддержка задач с состоянием ожидания через механизм событий (в двух классах соответствия)
Поддержка множественного планирования задач (multiple activation request)

Разделение ресурсов между задачами и обработчиками прерываний с помощью протокола высшего приоритета (называемого OSEK Priority Ceiling Protocol). Поддержка PTS с помощью механизма «внутренних ресурсов»

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

Поддержка трех категорий обработчиков прерываний и вложенных прерываний
Задержанное выполнение вызовов ОС из обработчиков прерываний без ограничений вызовов сервисов ОС

Универсальный механизм поддержки таймеров и других считающих устройств с помощью алармов

Поддержка отладочного режима работы, пользовательских обработчиков ошибочной ситуации, переключения контекста задач, старта и останова операционной системы
MT, v1.4, 200215.1 OSEK/VDX (2)Функциональные свойства Операционной Системы OSEK/VDX OS Планирование с фиксированными приоритетами Вытесняемое, невытесняемое, и

Слайд 81MT, v1.4, 2002
15.1 OSEK/VDX (3)
Схема совместимости классов
соответствия
Basic Conformance Class 1
Basic Conformance Class 2
Extended Conformance Class 1
Extended Conformance Class

2
1 task/prio,
no multiple activation requests
>1 task/prio,
multiple activation requests
for Basic Tasks
Basic Tasks only
Basic Tasks and Extended Tasks
Basic

Tasks only

Планирование задач поддерживает принцип FIFO, т.е. равноприоритетные задачи планируются в том порядке, в котором они активизировались (как для первого запуска, так и для множественной активизации).

highest priority

lowest priority

Interrupts’
priority levels

Tasks’
priority levels

Interrupt Service Routines

Tasks

Overlapping

Overlapping possible as a result of
Resource Allocation

Схема приоритетов поддерживает перекрытие приоритетов задач и обработчиков только во время исполнения задачи.
Задача всегда стартует с приоритетом ниже приоритета обработчиков прерывания.

MT, v1.4, 200215.1 OSEK/VDX (3)Схема совместимости классовсоответствияBasic Conformance Class 1Basic Conformance Class 2Extended Conformance Class 1Extended Conformance

Слайд 82MT, v1.4, 2002
15.1 OSEK/VDX (4)
Counter
Value
Alarm 1
Limit
TaskA

Alarm 2
Limit
TaskB
Event1

TASK( TaskA )
{


TerminateTask();
}
ActivateTask
TASK( TaskB )
{
WaitEvent( Event1 );

TerminateTask();
}
SetEvent
Hardware Timer
IncrementCounter
Механизм алармов

(alarms) предполагает наличие счетчиков (counters), хотя и не специфицирует интерфейс счетчиков.
Алармы могут использоваться как для подсчета времени, так и для измерения углов, линейных перемещений, и т.п.
MT, v1.4, 200215.1 OSEK/VDX (4)CounterValueAlarm 1LimitTaskAAlarm 2LimitTaskBEvent1TASK( TaskA ){  TerminateTask();}ActivateTaskTASK( TaskB ){  WaitEvent( Event1 );

Слайд 83MT, v1.4, 2002
15.1 OSEK/VDX (5)
Сообщения могут передаваться между задачами в

одном узле, и также между задачами, находящимися в разных узлах.

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

Message

TaskA

TaskB

SendMessage

ReceiveMessage

OS

Msg

Msg

COM

Message’

TaskC

ReceiveMessage

OS

Msg

COM

Notification on arrival
TaskC

ActivateTask

Msg

MT, v1.4, 200215.1 OSEK/VDX (5)Сообщения могут передаваться между задачами в одном узле, и также между задачами, находящимися

Слайд 84MT, v1.4, 2002
15.2 Real-Time Linux (1)
Hardware
Real-Time Kernel
real time task
real time

task
“Conventional” Linux
(idle task of real-time kernel)
Linux process
Linux process
Linux process
I/O
I/O
Interrupt
Interrupt
Drivers
Non real
time
real
time
(+) поддерживается

жесткое реальное время (+) сроки исполнения в микросекундном диапазоне
(+) используется (почти) немодифицированное ядро Linux

(-) не поддерживается реальное время для процессов Linux

(+) поддерживается жесткое реальное время для RT задач (+) сроки исполнения в микросекундном диапазоне
(+) используется (почти) немодифицированное ядро Linux

Dual-kernel architecture (Embedix from Lineo, RTLinux from FSMLabs)

MT, v1.4, 200215.2 Real-Time Linux (1)HardwareReal-Time  Kernelreal time taskreal time task“Conventional” Linux(idle task of real-time kernel)Linux

Слайд 85MT, v1.4, 2002
15.2 Real-Time Linux (2)
Hardware
real time task
real time task
Modified

Linux kernel
Linux process
Linux process
Linux process
I/O
Interrupt
Drivers
(-) требуется модификация ядра
(-) системные

модули (драйверы) могут «сводить на нет» характеристики реального времени

(+) поддерживается жесткое реальное время для Linux задач
(+) возможна интеграция планировщиков (+) сроки исполнения в диапазоне десятков микросекунд (+) используется механизмы защиты Linux

Single-kernel architecture (HardHat from MontaVista, KURT)

RT scheduler

RT API

MT, v1.4, 200215.2 Real-Time Linux (2)Hardwarereal time taskreal time taskModified Linux kernelLinux  processLinux  processLinux

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика