Смекни!
smekni.com

Общее описание операционных систем реального времени (стр. 7 из 7)

2.5.2 RTX - real-time extension для Windows NT откомпании VenturCom

Одним из возможных решений является использование совместно с Windows NT подсистемы реального времени, исполняющейся на том же процессоре (если процессор один) или на выделенном процессоре(-ах) (если их несколько). Этот подход использован фирмой VenturCom в продукте RTX. Сущность подхода заключается в использовании модифицированного HAL (Hardware Abstraction Level). Изменять kernel Microsoft не разрешает, а исходный код HAL предоставляет своим партнерам, одним из которых является VenturCom.

После установки RTX стандартная NT Workstation или Server превращается в операционную систему реального времени с жестким детерминизмом (hard real-time). Сама NT об этом, правда, не подозревает. Ни ядро, ни исполняющая подсистема NT не были изменены. Подсистема реального времени видна из Windows NT как еще один драйвер устройства.

Операционная система Windows NT первоначально разрабатывалась как система общего назначения. Однако, на нынешнем рынке специализированных систем с целью обеспечения открытости на каждом системном уровне существует тенденция использования операционных систем Microsoft Windows. Это обусловлено следующими причинами:

o прикладной программный интерфейс (API) Win32 на данный момент является для программистов стандартом де-факто;

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

o разработано огромное количество драйверов независимых производителей;

o разработано множество очень мощных интегрированных инструментальных пакетов (IDE).

2.5.3 Windows NT 4.0 как ОСРВ. Общие требования

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

o операционная система должна поддерживать многопоточность (многонитиевость - multithreaded) и вытеснение задач по приоритетам (preemptable);

o должно существовать понятие приоритета потока (нити);

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

o должен иметься механизм наследования приоритетов;

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

Первому требованию Windows NT явно удовлетворяет. Второму - тоже, но для режима реального времени уровней приоритета маловато. Практически невозможно спроектировать хорошую систему реального времени, например, с диспетчеризацией в зависимости от частоты (rate-monotonic scheduling), поскольку доступного количества приоритетных уровней исполнения потоков не хватит. Кроме того, в NT отсутствует механизм наследования приоритетов.

Для обработки прерываний с целью минимизации затрат времени на подпрограммы обслуживания прерываний (ISR-подпрограммы) в NT была введена концепция отложенных вызовов процедур (deferred procedure calls - DPC). Хотя приоритет этих вызовов выше, чем приоритет пользовательских и системных потоков, все они находятся на одном и том же уровне. Это означает, что все DPC-вызовы выстраиваются в FIFO-очередь и что прерывание высокого уровня будет обслужено только тогда, когда свое исполнение завершат все предшествующие ему DPC-вызовы. Вследствие этого, время отклика системы становится непредсказуемым, что противоречит пятому требованию.

В NT в основе управления памятью лежит механизм виртуальной памяти. Это влечет за собой защиту памяти, преобразование адресов и подкачку (свопинг). Для приложений РВ свопинг неприемлем. Страницы памяти могут быть заблокированы в физической памяти. Однако Джеффри Рихтер (Jeffrey Richter) в своей книге [Richter95] утверждает, что, если процесс не активен, NT может разблокировать страницы процесса и переписать их из физической памяти на диск.ПРИМЕЧАНИЕ

Windows NT в "чистом виде" подходит разве что для систем мягкого РВ для применения в приложениях реального времени.

2.5.4 Расширения реального времени для Windows NT. Расширение функциональности

Расширения реального времени добавляют к Windows NT специфическую для реального времени функциональность:

Появляются процессы реального времени, управляемые собственным планировщиком. Этот планировщик работает уже по всем правилам планировщиков реального времени и использует алгоритм вытеснения по приоритетам. Кроме того, процессы реального времени имеют преимущество перед стандартными процессами Win32, вытесняя их. Процессы реального времени имеют совсем иную, по сравнению со стандартными процессами Windows NT, степень надежности и специфическую функциональность. Процессы реального времени и стандартные процессы Win32 имеют средства взаимодействия друг с другом. Процессы реального времени имеют свой собственный программный интерфейс RTAPI, реализующий развитый набор средств, характерный для программных интерфейсов (API) операционных систем реального времени. Одно и то же приложение может использовать как стандартные функции Win32, так и специфические функции API реального времени (RTAPI), что позволяет выделять критические участки кода приложений WindowsNT и контролировать время и надежность их выполнения. Появляется возможность контроля за работоспособностью и временами реакции системы. "Зависания" стандартных приложений Windows NT или "крах" системы не приводят к "зависанию" приложений реального времени. Появляется возможность работы с быстрыми часами и таймерами высокого разрешения. Появляется возможность прямого доступа к памяти и физическим устройствам

2.5.4.1 Подсистема реального времени RTSS

Подсистема реального времени RTSS обеспечивает исполнение большинства функций и управление ресурсами расширений реального времени. С точки зрения реализации, RTSS выглядит как драйвер Windows NT и выполняется в режиме ядра. Это позволяет достаточно простым способом устроить взаимодействие между процессами реального времени и процессами Windows NT. RTSS обеспечивает исполнение функций RTAPI и содержит планировщик нитей реального времени со 128-ю фиксированными приоритетами. RTSS содержит также менеджер объектов, предоставляющий унифицированные механизмы использования системных ресурсов. Управление объектами RTSS: Предоставляет возможности унифицированного управления объектами RTSS (создание,закрытие,доступ). Объектами RTSS являются: таймеры, обработчики прерываний и исключительных ситуаций (startup, shutdown, blue screen), нити, процессы, семафоры, мьютексы, разделяемая память, почтовые ящики, консольный и файловый ввод-вывод, регистры.

2.5.4.2 HAL реального времени

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

2.5.4.3 Программный интерфейс реального времени RTAPI

Программный интерфейс реального времени RTAPI является расширением Win32 и содержит, прежде всего, набор функций, необходимых для управления устройствами. RTAPI реализован в двух видах - как подмножество подсистемы реального времени (RTSS) и как динамическая библиотека (DLL), которая может вызываться из Win32-приложений. RTAPI содержит следующие группы функций: Управление процессами и нитями: Предоставляет Win32-совместимый интерфейс для управления, создания, изменения приоритетов, профилирования и завершения нитей реального времени. Взаимодействие между процессами: RTAPI использует семафоры, мьютексы и разделяемую память для взаимодействия как нитей реального времени между собой, так и для взаимодействия процессов реального времени с процессами WIN32. Управление памятью: Позволяет фиксировать приложения в памяти, запрещая их выгрузку в файл подкачки. Доступ к физической памяти: Приложение пользователя получает возможность доступа к данным по физическим адресам памяти. Управление прерываниями: Содержит функции, позволяющие назначать и запрещать обработчики прерываний, разрешать и запрещать прерывания. Часы и таймеры: Содержит функции управления часами и таймерами (создание, удаление, отмена, инициализация таймеров, назначение обработчиков прерываний) Управление вводом-выводом: RTAPI предоставляет два способа управления устройствами ввода-вывода. Во-первых, приложения пользователя получают возможность непосредственного доступа к адресам портов ввода-вывода, что позволяет программировать работу устройств напрямую. Кроме того, внешнее устройство может управляться специальными (легко разрабатываемыми) драйверами, для работы с которыми RTAPI предоставляет специальный интерфейс.

3. Литература

1. Часть 1 «Программируемые контроллеры». 40 стр.

2. Часть 2 «Операционные системы реального времени. OS-9. Промышленные сети». 156 стр.

3. Часть 3 «Инструментальная система программирования логических контроллеров ISaGRAF». 228 стр.

4. QNX4 User's Guide

5. Журнал "СТА" (Современные Технологии Автоматизации), 96, 97 г.

6. Журнал "Открытые системы", 97 г. ( http://www.osp.ru/os/index )