- •Тула 2010
- •1.1 Принципы построения и основные требования. Особенности.
- •1.2 Ос рв qnx. Поддержка срв ос Linux.
- •1. 3 Функциональные требования к осрв
- •2. "Жесткие" и "мягкие" системы реального времени
- •3. Нити и приоритеты
- •4. Предсказуемость системных вызовов Win32 api
- •5. Управление прерываниями в nt
- •6. Управление памятью в nt
- •7. Может ли Windows nt использоваться в качестве ос рв?
- •Лекция №2.
- •Коммерческие решения, расширяющие nt возможностями обработки в реальном времени
- •Использование nt
- •3. Реализация Win32 api над другой ос рв
- •4. Совместная работа на одном процессоре nt и ос рв
- •5. Использование многопроцессорной архитектуры
- •6. Необходимые требования к ос для обеспечения предсказуемости
- •Лекция №3.
- •Лекция №4.
- •1. Разработка приложений жесткого реального времени
- •2. Модификация ядра
- •3. Модификация уровня аппаратных абстракций Windows nt (hal)
- •4. Применение ос рв
- •Лекция №5. Операционная система qnx. Системная архитектура.
- •Лекция № 6.
- •Лекция №7. Связь между процессами по сети посредством виртуальных каналов.
- •Лекция №8. Построение очереди процессов
- •Лекция №9. О работе в реальном времени
- •Лекция №10. Сопоставление и передача путей между процессами.
- •2. Префиксы управления вводом – выводом
- •5. Передача путей между процессами
- •2. Префиксы управления вводом – выводом
- •5. Передача путей между процессами
- •2. Относительные пути
- •3. Текущий рабочий каталог
- •Примечание относительно cd
- •4. Описатели файлов пространства
- •Лекция №12 Аппаратное и программное обеспечение промышленных систем реального времени (псрв)
- •Введение
- •1. Организация промышленных систем
- •2. Аппаратная архитектура
- •3. Стандарты шин
- •4. Технологии vme и pci
- •5. Мезонинные технологии
- •6. Полевые системы
- •7. Программное обеспечение промышленных систем
- •8. Управление производством
- •Лекция №13 Использование средства nt в качестве Web-сервера для iis (Internet Information Server)
- •Введение
- •Общие черты intranet-систем
- •3. Система управления доступом
- •4. Прикладное программирование в intranet
- •Лекция 14 Операционная система ос рв см эвм (rsx-11)
- •Введение
- •Основные компоненты системы ос рв
- •2. Диспетчер памяти
- •3. Многопользовательская защита
- •4. Выполнение задач под управлением ос рв
- •5. Внешние устройства и файловая система на дисках
- •Лекция 15 Управление прерываниями.
- •Вектора прерываний
- •Программирование контроллера прерываний 8259.
- •Запрет/разрешение отдельных аппаратных прерываний
- •Лекция 16 Управление Тема: прерываниями (продолжение).
- •Написание собственного прерывания
- •Дополнение к существующему прерыванию
- •Лекция 17 Синхронные методы проектирования срв
- •Система упорядоченного опроса
- •Основной цикл с прерываниями
- •Лекция 18 Синхронные методы проектирования срв (продолжение)
- •1 . Циклические планировщики
- •2. Выбор метода построения системы
- •3. Измерение быстродействия компьютера
- •4. Мультизадачный режим в операционной системе ms-dos
- •5. Условия существования мультизадачного режима в персональном компьютере ibm pc/at
- •X. Библиографический список рекомендуемой литературы
- •13.1 Ос рв usix: основные принципы построения и структура.
- •13.2 Поддержка рв в usix
- •13.3 Управление виртуальной памятью в usix
- •14.1 Процессы, связанные с выполнением программ
- •14.2 Функции ос рв usix, не связанные с управлением процессами
- •15.1 Программирование коммуникационных устройств.
- •15.2 Драйверы коммуникационных устройств
- •16.1 Файловая система
- •16.2 Средства защиты от несанкционированного доступа
- •16.3 Поддержка протоколов и окружений usix
14.2 Функции ос рв usix, не связанные с управлением процессами
В системе USIХ все функции ОС, не связанные с управлением процессами, вынесены из ядра и реализованы в виде процессов-серверов. Относительно операционной системы сервер — обычный процесс, возможно более приоритетный, выполняемый в адресном пространстве пользователя и имеющий контролируемый доступ к ядру системы. Для повышения реактивности сервер может быть динамически погружен в ядро системы, т.е. отображен в адресном пространстве ядра. Серверы относятся к классу системных процессов, однако особо быстродействующим процессам может быть назначен класс реального времени.
Пользователь, как правило, не взаимодействует с серверами непосредственно. Например, доступ к файловому серверу осуществляется через стандартные системные вызовы 'оpen', 'сlоsе',
'writе' и т.д.
Серверы взаимодействуют с ядром через объекты памяти и механизм сообщений, посылаемых через специальные программные порты. Порты создаются при инициализации сервера в момент загрузки и затем используются в качестве точек приема сообщений как из ядра, так и из другого сервера или процесса.
Лекция 15. Система ввода вывода USIX.
15.1 Программирование коммуникационных устройств.
Система ввода-вывода USIХ обладает рядом особенностей, среди которых следует прежде всего отметить:
поддержку стандартных механизмов доступа к внешним устройствам;
независимость ядра USIХ от набора внешних устройств;
возможность загрузки и выгрузки драйверов во время работы
системы;
дополнительные возможности отладки драйверов без перестроения системы, что очень важно в системах, где необходима поддержка нестандартных устройств. Это является весьма характерным для систем реального времени;
в каталог /dev заносятся только те устройства, которые действительно доступны к использованию.
Последняя особенность состоит в том, что в отличие от других UNIХ-систем в USIХ каталог /dev первоначально пустой. При загрузке драйвер создает в каталоге /dev свои специальные файлы. Это выполняется самим драйвером, так как только драйвер может определить, какие устройства он будет обслуживать. Система USIХ поддерживает блок-ориентированные и байт-ориентированные устройства, а также прямой доступ к блочным уст ройствам. Связь ядра с драйвером осуществляется с помощью сообщений и портов.
После загрузки драйвера и создания имени специального файла в каталоге /dev пользовательская программа может открыть этот файл. Ядро распознает обращение к специальному файлу, формирует сообщение и посылает его в порт соответствующего драйвера. Если драйвер находился в состоянии приостановки в ожидании сообщения, он активизируется и начинает его обработку. Процесс пользователя при этом останавливается в ожидании ответного сообщения в свой порт, если запрос ввода-вывода был синхронным. Если запрос ввода-вывода асинхронный, процесс пользователя может быть продолжен.
Передача данных между драйвером и процессом пользователя может осуществляться двумя способами: одновременно с сообщением; непосредственно, путем отображения региона пользователя в адресное пространство драйвера. Вторая возможность используется в тех случаях, когда объем передаваемых данных достаточно большой (например, в дисковых драйверах).
При разработке системы ввода-вывода USIХ были заложены следующие требования:
обеспечение унифицированного подхода для выполнения взаимодействия между мультипроцессорным ядром USIХ и различными устройствами ввода-вывода;
обеспечение возможности добавления, удаления и модификации драйверов устройств;
обеспечение совместимости ввода-вывода со стандартами SVID.
Система ввода-вывода содержит несколько объектов:
набор драйверов ввода-вывода;
таблицы ядра;
объекты памяти;
интерфейс системы ввода-вывода с файловой системой.
Драйвер, являясь отдельным процессом, начинает выполнение как обычный процесс пользователя. Для выполнения специфических функций процесс-драйвер имеет следующие дополнительные возможности:
создавать порт или порты, которые будут точками взаимодействия с другими процессами или ядром;
выполнять инициализацию программы обработки прерываний (ISR - Interrupt Service Routine) и подключать ее к вектору прерывания;
создавать специальный объект памяти (IСО — Interrupt Communication Оbject) для взаимодействия между процессом-драйвером и программой обработки прерываний;
выполнять инициализацию программы обработки по восстановлению питания.
Объект IСО является областью памяти, выделяемой для обмена данными (содержимое аппаратных регистров и др.) между программой обработки прерываний и драйвером. Размещение данных внутри IСО полностью зависит от драйвера и не интерпретируется ядром никаким другим способом.
Синхронизация драйвера и ISR выполняется посредством передачи сообщений. Если ISR ждет реакции от драйвера, то необходимо послать в порт драйвера сообщение с высоким приоритетом. В соответствующий момент этот запрос будет обнаружен драйвером.
Программа обработки прерываний выполняется в ограниченном контексте режима ядра и имеет доступ только к данным, расположенным в 1СО. На входе программа обработки прерываний получает в качестве параметров информацию об идентификации устройства и параметры IСО. После инициализации драйвера программа обработки прерываний отображается в адресное пространство ядра. Область IСО должна находиться в пределах страницы, что является требованием системы распределения памяти.
Стандартный драйвер содержит четыре секции (подпрограммы):
секцию инициализации;
секцию обработки запросов на ввод-вывод;
секцию обработки прерываний;
секцию завершения работы драйвера.
При инициализации драйвер выполняет следующие функции:
создает записи в таблицах сdevsw и/или bdevsw. Эта функция обеспечивает совместимость со стандартами SVID;
создает порты для взаимодействия драйвера с ядром;
подсоединяет векторы аппаратных прерываний к подпрограмме обработки прерываний;
создает секцию IСО и объявляет о ней ядру;
создает записи в каталоге /dev для каждого обслуживаемого устройства, которые являются входами в таблицы сdevsw и bdevs;
инициализирует устройство ввода-вывода и сообщает системе о готовности драйвера к работе.
Секция обработки запросов на ввод-вывод получает запросы с помощью системного вызова «getwork» из порта, созданного для взаимодействия с ядром.
Вызов «getwork» приостанавливает выполнение драйвера, пока в порт не придет некоторое сообщение. Сообщения могут быть посланы ядром, другими серверами (например, файловым сервером) или программой обработки прерываний драйвера. Драйвер получает всю необходимую информацию о запросе в принятом сообщении-запросе. После обработки запроса необходимо с помощью системного вызова «putwork» послать сообщение-ответ. Сообщения-запросы и сообщения-ответы имеют стандартные заголовки, но структура их тел зависит от типа запросов. Если к драйверу приходит запрос неизвестного типа, то сообщение об ошибке обычно выдается на консоль и посылается ответ как на ошибочный запрос ОРЕN.
На основе полученной в сообщении информации драйвер создает необходимые внутренние таблицы и пытается инициировать операцию ввода-вывода. После запуска этой операции драйвер пытается получить другой запрос на ввод-вывод.
Драйвер может получить столько запросов на ввод-вывод, сколько он может обработать. Это зависит от размеров таблиц драйвера и стратегии обработки сообщений.
Программа (секция) обработки прерываний (ISR.) после подключения к вектору прерывания отображается в адресное пространство ядра и при получении управления имеет все права и привилегии ядра. В то же время, поскольку программа обработки прерываний как часть драйвера и ядро компонуются раздельно, для ISR не известны другие адреса ядра, кроме передаваемых в качестве аргументов. Взаимодействие ISR с драйвером может выполняться через специальный объект памяти (IСО) и/или с помощью передачи сообщений через заранее созданный порт драйвера. Программа обработки прерываний может использовать набор системных подпрограмм в ядре, адрес которых передается с помощью аргументов.
Если драйвер обслуживает устройство с прямым доступом к памяти DМА — Direct Memory Access), то объект памяти в запросах чтения/записи указывает на список физических адресов страниц. Для обращения к этим страницам непосредственно программе обработки прерываний необходимо отобразить их в виртуальное пространство ядра с помощью специального вызова.
При завершении работы драйвер должен с помощью специальных системных вызовов (usixса11) выполнить следующие действия:
удалить записи в каталоге /dev и в таблицах bdevsw и сdevsw;
отсоединиться от векторов прерываний;
уничтожить созданные порты;
выполнить «ехit».
Здесь уместно сделать следующее замечание. В традиционных UNIХ-системах драйверы компонуются вместе с ядром. Такой подход имеет как недостатки, так и преимущества.
Недостатки, главным образом, относятся к управлению системой: требуется перестройка ядра при добавлении или удалении
драйверов в системе.
Концепция USIХ основана на загружаемых драйверах, реализованных в виде процессов-серверов. Это ведет к гибкости конфигурации системы и дает возможность модифицировать и отлаживать драйверы на уровне пользователя.