ВСТРОЕННЫЕ ИНФОРМАЦИОННО- УПРАВЛЯЮЩИЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ Лекция 5 Операционные системы реального времени Кафедра АСВК, Лаборатория Вычислительных.

Презентация:



Advertisements
Похожие презентации
Система реального времени QNX/Neutrino (QNX6). QNX Микpоядеpная Cетевая Мyльтизадачная Многопользовательcкая.
Advertisements

POSIX Threads. Общая модель Программа Общая память Поток 1 CPU Поток 2 Поток N Потоки – наборы инструкций, исполняющиеся на CPU. Все потоки одной программы.
Другие примитивы синхронизации Программирование с использованием POSIX thread library.
Разработка библиотеки нитей POSIX реального времени Магистерская диссертация Студент: Фёдоров Александр, 418 гр. Научный руководитель: Гилязов С.С.
POSIX Threads МО ВВС ИВМ и МГ СО РАН Городничев Максим Александрович.
Основы операционных систем. Тема 6. Механизмы синхронизации.
Многопоточное программирование. Виды параллелизма. Общая память Распределенная память.
Встроенные Системы Часть 9. ОС Реального Времени Кафедра Информатики, мат-мех СПбГУ Copyright © 2004 Victor Vengerov
Учебный курс Основы операционных систем Лекция 7 кандидат физико-математических наук, доцент Карпов Владимир Ефимович.
Операционная система реального времени Выполнила студентка Группы КИС-141 Кравец Виктория.
Семафоры-счетчики POSIX Программирование с использованием POSIX thread library.
Краткий обзор ОСРВ. RTLinux Встраивается в обычный Linux RTLinux kernel находится между ядром Linux и «железом» RTLinux обрабатывет все прерывания независимо.
Процессы и потоки. Процессы В общем представлении, процесс - это программа, выполняющаяся в оперативной памяти компьютера. Реально, все гораздо сложней.
POSIX Threads & OpenMP Общая память Сергей Петрович Нечаев, Сибирский Суперкомпьютерный центр.
Измерение времени в ЭВМ С.Е. Киреев, В.П. Маркова, М.Б. Остапкевич, В.А. Перепелкин Новосибирск 2013 НГТУ Кафедра параллельного программирования.
Создание и завершение нитей Программирование с использованием POSIX thread library Иртегов Д.В. Учебное пособие подготовлено по заказу и при.
Посыпкин М.А. (С) Многопоточное программирование.
Учебный курс Основы операционных систем Лекция 3 кандидат физико-математических наук, доцент Карпов Владимир Ефимович.
Часы и таймеры. Типы таймеров относительный таймер абсолютный таймер периодический таймер однократный таймер.
Лекция 3. Исключения и прерывания в встроенных системах.
Транксрипт:

ВСТРОЕННЫЕ ИНФОРМАЦИОННО- УПРАВЛЯЮЩИЕ СИСТЕМЫ РЕАЛЬНОГО ВРЕМЕНИ Лекция 5 Операционные системы реального времени Кафедра АСВК, Лаборатория Вычислительных Комплексов

Содержание лекции Требования к ОС РВ Понятие процесса и потока (thread) Планирование процессов с приоритетами Надстройка над планировщиком. Rate Monotonic Analysis. Earliest Deadline First Взаимодействие процессов в ОС РВ Служба времени ОС РВ Примеры ОС РВ

Основные требования к ОС РВ Предсказуемость реакции и многозадачность Наличие механизма приоритетов и вытеснения (preemption) Предсказуемые механизмы синхронизации и взаимодействия Предсказуемые задержки Малые задержки

Основные виды задержек Переключение контекста процесса (потока) Время реакции на прерывание Время выполнения системного вызова Потоки (threads) вместо процессов – как можно меньший контекст «микроядро» - выделение служб ОС из ядра и оформление как задач

Управление потоками pthread_create() –Функция-тело потока –Параметры планирования Дисциплина планирования приоритет Признак наследования от родителя –Стек, куча, … pthread_exit()

Приоритетное планирование Диапазон значений приоритетов (256 для ОС- 2000) Для каждого приоритета – своя очередь Управление получает поток в голове очереди с наивысшим приоритетом Появился готовый поток с большим приоритетом => вытеснение SCHED_RR => перепланир по истечении кванта sched_yield()

Планирование Rate Monotonic Дано: –Набор задач T1,T2, …,Tn –Период Pi, i=1..n –Директивный срок Di –Время выполнения Ci Требуется: –Проверить возможность планирования –Назначить приоритеты потокам

Условия выполнимости планирования пусть Di = Pi Ui = Ci/Pi; U =sum(Ui) - загруженность Необходимое условие U 1 Достаточное условие U n(2^(1/n) - 1) Приоритеты растут с уменьшением периода

Планирование EDF Меньший текущий директивный срок => больший приоритет Необходимое и достаточное условие Ui = Ci/Pi; U =sum(Ui); U < 1

Взаимодействие: очереди сообщений #include mq_open() // имя очереди const char* mq_close() mq_send() // длина сообщения, приоритет mq_receive() –В зависимости от параметров очереди – либо ожидание на пустой очереди, либо ошибка mq_notify() // установить сигнал при записи в пустую очередь

Семафоры sem_open(), sem_close() sem_post() sem_wait(), sem_trywait() Очередь к семафору – по приоритетам потоков

Мьютексы #include pthread_mutex_init() pthread_mutex_lock() pthread_mutex_trylock() pthread_mutex_unlock() Освободить mutex может только захвативший его поток (в отличие от двоичного семафора)

Условные переменные (conditional variables) Один бит информации (например, о состоянии разделяемых данных), связанный с mutexом pthread_mutex_lock(); pthread_cond_wait() – если условие ложно, то встать в очередь и освободить mutex (атомарно); pthread_cond_timedwait() pthread_cond_signal() – сообщить первому в очереди; pthread_cond_broadcast() – сообщить всем; При выходе из очереди выполняется захват mutex

Пример использования условных переменных ( © …) pthread_mutex_lock(&mut); …// Делаем что-то с общими данными, но не освобождаем mut while(!predicate()) // Пока условие которого ожидаем не достигнуто pthread_cond_wait(&cond,&mut); …// Делаем что-то с общими данными pthread_mutex_unlock(&mut);

Сигналы реального времени Диапазон: SIGRTMIN..SIGRTMAX Посылка pthread_kill(), Установка реакции (обработчик, маскируемые сигналы) sigaction() Обработчик сигнала void handler( int signo );

Представление времени #include struct timespec { time_t tv_sec; int tv_usec; // нано }; clock_settime() clock_gettime() clock_getres() struct tm {} time() sleep() Разрешение часов: Багет – 4 мкс x86 – rdtsc – время в тактах процессора

Таймеры timer_create() привязка к часам, задание сигнала timer_settime() время первого срабатывания –От момента запуска –По значению часов интервал срабатывания

Примеры ОС РВ ОС2000 (НИИСИ РАН) vxWorks (WindRiver Software) QNX (QNX Software) RTEMS (open-source) LynxOS Расширение Windows NT И т.д.

Linux для ВС РВ RTLinux RTAI - потоки РВ – в режиме ядра; RTAI – требуется патч к ядру; Требуется переработка драйверов для режима РВ

Литература И.Б. Бурдонов, А.С. Косачев, В.Н. Пономаренко. Операционные системы реального времени // М.: Институт системного программирования РАН, – 49 с. Bill O. Gallmeister. POSIX. 4: Programming for the Real World. OReily – К.Е. Климентьев. Операционные системы реального времени. Обзорный курс лекций для студентов заочной формы обучения по специальности (Самарский государственный аэрокосмический университет) pdf C.L. Liu, J.W. Layland. Scheduling algorithms for multiprogramming in a hard real-time environment