Содержание
-
1 Управление процессами и потоками
-
Процессы и потоки в ОС РВ
Под понятием задачи в терминах ОС и программных комплексов могут пониматься два типа единиц работы: процессы и потоки (нити). Процесс - обобщенное представление задачи, независимый модуль программы или весь исполняемый файл целиком с его адресным пространством, состоянием регистров процессора, счетчиком команд, кодом процедур и функций. Поток - составная часть процесса, обозначает последовательность исполняемого кода. 2
-
Состояния потока
3 Типичный граф состояний потока в многозадачной среде
-
Диспетчеризация потоков
Потоки имеют одинаковый приоритет: FIFO(FirstInput FirstOutput) – Первый Вошел Первый Вышел. Карусельная многозадачность (roundrobin). Потоки имеют разный приоритет: Приоритетная многозадачность, Адаптивная многозадачность. Вытесняющая приоритетная многозадачность. ОСРВ должна обеспечивать многозадачность с поддержкой вытесняющей приоритетной методики диспетчеризации ОС должна иметь достаточно большое (определяется масштабом задачи) количество приоритетов Читаем примечания: 4
-
Механизмы синхронизации
Взаимное исключение Самые общие методы получения исключительного доступа к разделяемым ресурсам - это: запрещение прерываний; проба - и - установка; отключение диспетчеризации; использование семафоров. Запрещение и разрешение прерываний Запретить прерывания; Осуществить доступ (чтение/запись переменных); Разрешить прерывания; 5
-
Проба - и - Установка
Запретить прерывания; Если ('Переменная доступа'==0) { Установить переменную в 1; Разрешить прерывания; /*Доступ разрешён*/ Произвести доступ к ресурсам; Запретить прерывания; Установить переменную доступа в ноль; Разрешить прерывания; } иначе { Разрешить прерывания; /*Доступ запрещён, попробуйте позже*/ } Блокировка диспетчеризации voidFunction (void) { OSSchedLock(); . ./*Здесь доступ к разделяемым данным разрешён, прерывания разрешены */ . OSSchedUnlock(); } 6
-
Семафоры
Семафоры применяются чтобы: управлять доступом к разделяемым ресурсам; сигнализировать наступление события; позволять двум потокам синхронизировать их деятельность. Семафор - это ключ, которым должен овладеть поток, чтобы продолжить выполнение. Есть два типа семафоров: двоичные и счётные. 7
-
Существуют три основные операции, которые можно производить с семафорами - это Инициализация INITIALIZE (или CREATE), Ожидание WAIT (или PEND) и Освобождение SIGNAL (или POST). 8
-
Скрытый семафор
INT8U CommSendCmd(char *cmd, char *response, INT16U timeout) { Овладеть семафором порта; Послать команду устройству; Ожидать ответа(timeout); если(таймаут вышел) { Освободить семафор; Возвратить код ошибки; } иначе { Освободить семафор; Возвратить код отсутствия ошибки; } } 9
-
Применение счётного семафора
10
-
Инверсия приоритетов
11
-
Защита от инверсии приоритетов
Наследование приоритетов- наследование низкоприоритетным потоком, захватившим ресурс, приоритета от высокоприоритетного потока, которому этот ресурс нужен Протокол Предельного Приоритета (PriorityCeilingProtocol)- добавление к стандартным свойствам объектов синхронизации параметра, определяемого максимальным приоритетом потока, которые к этому объекту обращаются 12
-
Протокол наследования приоритета
13
-
Протокол увеличения приоритета
14
-
Взаимная блокировка
15
-
Временные характеристики ОСРВ
время отклика на прерывание — время между фактическим возникновением прерывания и началом обработки первой инструкции обработчика прерывания; время переключения потока управления — время переключения между двумя потоками в одном процессе; время переключения контекста процесса (только для ОС, поддерживающих модель процессов) — время переключения между двумя потоками управления, принадлежащими двум различным процессам. ОСРВ должна обеспечивать стабильность временных параметров. 16
-
17
-
Современные ОСРВ
ОСРВ VxWorks AE 1.1. Построена по принципам монолитной операционной системы. Поддерживает приоритетную вытесняющую многозадачность в комбинации с карусельной многозадачностью. Новшество - защищенные домены. ОСРВ WindowsCE.NET. Архитектура соответствует монолитной модели архитектуры ОС, однако для повышения масштабируемости часть сервисов системы оформлены как отдельные модули, взаимодействующие с ядром по технологии COM. Система поддерживает вытесняющую приоритетную многозадачность в комбинации с карусельной и FIFOмногозадачностями. 18
-
QNX 6.5 Строится на базе микроядра с организованными по технологии клиент – сервер сервисами, вынесенными на уровень пользовательских приложений. Микроядро системы выступает в качестве диспетчера сообщений, переадресовывая системные вызовы прикладных программ клиентов к соответствующим серверам сервисов и обратно. 19
-
Результаты сравнительного тестирования ОСРВ QNX 6.1, VxWorks и Windows CE.NET 20
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.