Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Примеры ОС реального времени






QNX

QNX — POSIX-совместимая операционная система реального времени, предназначенная преимущественно для встраиваемых систем. Считается одной из лучших реализаций концепции микроядерных операционных систем. Как микроядерная операционная система, QNX основана на идее работы основной части своих компонентов, как небольших задач, называемых сервисами. Это отличает её от традиционных монолитных ядер, в которых ядро операционной системы — одна большая программа, состоящая из большого количества «частей», каждая со своими особенностями. Использование микроядра в QNX позволяет пользователям (разработчикам) отключить любую ненужную им функциональность, не изменяя ядро. Вместо этого можно просто не запускать определённый процесс.

Микроядро QNX Neutrino не работает постоянно, а получает управление только в случае системных вызовов, исключений и прерываний. Также микроядро во время своей работы выполняет планирование потоков. Отсюда можно сделать верный вывод, что операция планирования потоков происходит не сама по себе, а по какому-то событию. На самом деле таких событий немного:

1. Вытеснение. Если поток с более высоким приоритетом, чем выполняющийся в настоящее время, перешёл в состояние готовности (READY), то микроядро остановит поток, выполняющийся в данный момент, переключит контексты и запустит на выполнение поток с более высоким приоритетом. Поток, который выполнялся до этого останется первым в очереди на выполнение.

2. Блокирование. Поток во время своего выполнения (т.е. во время работы) может вызвать функцию, которая приведёт к его блокированию. Например, попытается захватить семафор. В этом случае ядро удалит такой процесс из очереди на выполнение и передаст управление другому потоку.

3. Уступка (передача управления). Поток может добровольно передать управление. В этом случае поток ставится последним в очереди на выполнение и микроядро передаст управление другому потоку (может быть и тому, который только что отдал управление).

Одна из основных функций микроядра QNX Neutrino (и, пожалуй, самая важная после обмена сообщениями) — это планирование потоков. Именно микроядро переключает контексты и выбирает, какой поток будет выполняться в следующий момент времени. Микроядро делает всё это, основываясь на следующих параметрах потоков:

1. Приоритет потока (уровень приоритета потока). Каждый поток в ОСРВ QNX6 выполняется на каком-то определённом приоритете. Чем выше приоритет, тем больше шансов у потока получить процессор в первую очередь. При наличии в системе двух и более потоков в состоянии READY (готовых к выполнению), микроядро передаст управление тому потоку, чей приоритет выше.

2. Дисциплина планирования. Каждый поток в системе выполняется с определённой дисциплиной планирования. Микроядро учитывает дисциплину планирования при наличии в системе двух и более потоков в состоянии READY, выполняющихся, на одном приоритете.

Приоритет потока — это число в диапазоне 0-255 для потоков суперпользователя и 0-63 для потоков обычных пользователей. Диапазон доступных рядовому пользователю приоритетов может быть изменён при подготовке загрузочного образа. Также следует учитывать, что на нулевом (самом низком) приоритете выполняется поток idle, который всегда получает управление, если в системе нет больше потоков с более высокими приоритетами в состоянии READY.

В операционной системе QNX поддерживается несколько дисциплин планирования потоков: FIFO, карусельная (циклическая, round-robin, RR) и спорадическая.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.