Библиотека
оригинал - http://magazine.stankin.ru/arch/n_05/art/18/index.html
ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ WINDOWS NT ДЛЯ СИСТЕМ ЧПУ КЛАССА PCNC.
Митин Г.П., Марголин С.А.
(Москва, МГТУ СТАНКИН)
В технологическом
производстве под работой в реальном времени
понимают принятие решения в сроки, не нарушающие
технологического процесса (для системы ЧПУ это
миллисекунды). Исходя из этого, система
управления технологическим процессом должна
работать в “жестком” реальном времени и
обрабатывать ответы системы в течение заданного
лимита времени [1]. В связи с этим становится более
ответственной задача выбора операционной
системы.
В настоящее время
многие ОС РВ показывают близкие значения
показателей эффективности, поэтому одним из
наиболее важных условий успеха операционной
системы (наряду с высокой производительностью)
является наличие в ней развитой среды
разработки, графических интерфейсов, сетевой
поддержки, возможность работы на
многопроцессорных средствах. Среди наиболее
известных ОС РВ для IBM PC таких как, RTMX (фирма
RTMX-Uniflex), AMX (фирма Kadak Products Ltd.), OS-9000 (фирма Microwave
Systems), FlexOS (фирма Novell Dedicated Sys Bus Unit), Lynx OS (фирма Lynx
Real-Time Systems), VRTX (фирма Ready Systems), QNX (фирма Quantum Software
Systems) и других, наиболее полный набор
инструментальных средств имеет ОС QNX, c другой
стороны традиционно здесь хороши клоны UNIX [2].
Так какую ОС выбрать?
Если рассматривать двухпроцессорную
архитектуру ЧПУ, то на модуль РС, выполняющий
терминальную задачу, лучше установить надёжную
ОС с удобным интерфейсом (Windows NT), а на модуль NC,
решающий геометрическую и логическую задачи,
поставить ОС РВ, допустим QNX, которая хорошо
структурирована, имеет развитый набор
специфических механизмов реального времени,
компактна и предсказуема.
Вычислительные
мощности современных персональных компьютеров
постоянно растут и сегодня реально построение
однопроцессорной системы ЧПУ. Для ее реализации
необходимо объединить две задачи, PC и NC, под
управлением единой ОС.
Конечно, хотелось бы
иметь Windows NT, так как общепризнанно, что это
надежная, многозадачная, сетевая ОС и что очень
важно, имеет ставшим родным для многих интерфейс
Windows 95. Но может ли потянуть Windows NT сегодня, даже с
расширением реального времени (Real-Time Extensions)
задачи, которые всегда решали ОС РВ?
Многочисленные тесты показали, что на типовых
компьютерных платформах на базе процессоров Pentium
максимальное время реакции на прерывание
(начиная от возникновения прерывания до входа в
нить обработки, включая восстановление
контекста) составляет 25-80 мкс, при условии
значительной загрузки тестируемой системы:
проверка диска (chkdsk), GUI приложения и интенсивный
сетевой обмен. Эти цифры сравнимы с теми, что
обеспечивают другие ОС РВ и превосходят
некоторые из них.
Учитывая
вышесказанное, имеет смысл начать поиск удачного
решения Real-Time Extensions для Windows NT. Надо сказать, что
Windows NT не является открытой системой, и заранее
ясно, что проекты Real-Time Extensions сторонних фирм
будут только надстройками, не меняющими сути ОС.
Исходя из архитектуры Windows NT, возможны следующие
подходы.
Рис.1 Архитектура ОС Windows NT 4.0
Реализация первого
пункта требует рассмотреть работу драйвера.
Драйвер устройства
отвечает за обработку прерывания, генерируемого
устройством, которым он управляет. Чтобы
повысить ответственность ОС за обработку был
разработан оригинальный механизм. Прерывания
обрабатываются в два этапа. Во-первых, прерывание
очень быстро обрабатывается ISR. После этого
работа завершается выполнением процедуры DPC
(Deferred Procedure Call). Это порождает следующую
последовательность событий:
Как видим, обработка
прерываний в Windows NT достаточно сложна. При этом ISR
должна работать как можно быстрее. Поэтому
большинство драйверов выполняют большую часть
работы в DPC (который может прерываться только ISR),
замедляя работу других DPC, так как все они
обрабатываются на одном приоритетном уровне.
Документация на
драйверы устройств Windows NT говорит, что "ISR может
прерываться ISR более высокого приоритетного
уровня и теми DPS, которые имеют более высокий
приоритет, чем пользовательская и системная
нити". Но так как все DPC имеют один и тот же
приоритетный уровень и так как при
проектировании драйвера устройства следует
делать ISR как можно короче, перенося большую
часть работы в DPC, при выполнении вашему DPC
придется ждать, пока не будут завершены все
остальные DPC. Поэтому ваше приложение будет
зависеть от драйверов устройств, обслуживающих
другие приложения.
Устроено ли это по
разному в разных ОС РВ? Естественно - да.
Разработчик ОС РВ вначале должен выяснить на
каком приоритете работают другие драйверы
устройств. Обычно имеется некоторая свободная
память сверх занимаемой стандартными
драйверами. Вся критическая работа выполняется в
ISR, и у разработчика остается возможность
сконфигурировать драйвер в зависимости от
временных ограничений приложения. В Windows NT ISR
очень быстрая, поэтому прерывания не блокируются
надолго, однако ISR делает очень мало работы.
Большая часть работы перекладывается на DPC.
Поэтому, если вы используете плохо написанный
драйвер, вы в конце концов нарушите временные
ограничения по крайним срокам, если конечно вы не
последуете стратегии Microsoft и не станете
выполнять всю работу в ISR (но тогда зачем вообще
нужна ОС?).
Дополнение
стандартного ядра NT ядром реального времени.
Этот подход лежит в основе предложений фирм Radisys,
Imagination и LP Elektronik. Имеются две принципиально
разные его реализации:
Реализация первой
идеи была предложена компанией LP Elektronik. Суть ее в
том, что на шину ISA ставится дополнительная плата
(LP-Realtime Accelerator), снабженная таймером и имеющая
возможность управлять большинством линий
прерываний ISA. Кроме того, LP Elektronik предлагает
технологию написания программ обработки
прерываний (ISR) от этой платы. Эта технология
позволяет, в частности, "раздуть" программу
обработки прерываний до размеров полноценного
ядра операционной системы реального времени.
Строго говоря, LP Elektronik
не предлагает собственных расширений реального
времени для Windows NT, однако на базе ее технологии в
NT было внедрено ядро операционной системы
реального времени VxWorks. Способ взаимодействия
между процессами VxWorks и Windows был найден
остроумный и легко реализуемый: между NT и VxWorks
построена "псевдо-сеть" ТСР/IP. Для этого
пришлось разработать всего лишь два драйвера TCP/IP
- один для Windows, и один для VxWorks.
Фирма Radisys осуществила
второй подход, итогом реализации которого стал
продукт INtime, основанный на ядре реального
времени операционной системы iRMX. Понятно, что и
здесь не обошлось без модификации уровня HAL и
разработки специфического драйвера. Этот
драйвер, как и в остальных реализациях
расширений реального времени, предназначен для
взаимодействия между процессами NT и процессами
реального времени. Radisys разработала также
оригинальный механизм внедрения одной
операционной системы в другую. Этот механизм
управляет одновременным исполнением и
целостностью ядер Windows NT и реального времени,
осуществляет защиту памяти и разделяет адресные
пространства процессов. Процессы и прерывания
реального времени при этом всегда имеют
приоритет по сравнению с процессами и
прерываниями Windows NT. Структура расширений Windows NT c
дополнительными ядрами реального времени
приведена на рис. 2.
Рис. 2. Структура расширений NT с дополнительными ядрами реального времени
Одно из удачных решений предложила фирма VenturCom (см. рис.3). RTX 4.1 является дополнением к Windows NT, обеспечивающим детерминированные характеристики для приложений, которые должны функционировать в режиме реального времени. RTX 4.1 тесно интегрирован с ядром Windows NT и использует сервисы Windows NT и Win32 API для обеспечения функций RTX.
Рис.3 Архитектура RTX 4.1
Так как аппаратные
прерывания попадают вначале в HAL и только затем
передаются ядру, логично использовать
прерывания от таймера для создания на базе
модификаций HAL дополнительного диспетчера, а
именно диспетчера нитей реального времени.
Прерывания же, "не интересные" диспетчеру,
можно передавать по прежней цепочке в ядро Windows NT.
Таким образом, появляется шанс выстроить
достаточно развитую систему поддержки
приложений реального времени. В итоге получаются
два набора приложений: стандартные приложения NT
и приложения реального времени, управляемые
HAL-диспетчером. Причем стандартные приложения
"не подозревают" о приложениях реального
времени.
RTSS обеспечивает
основные функции и управление ресурсами в RTX.
Реализованная в виде драйвера Windows NT, RTSS является
дополнением к этой операционной системе,
использующим сервисы Windows NT и HAL реального
времени для обеспечения функций, необходимых для
функционирования подсистемы реального времени.
RTSS использует HAL реального времени для
реализации быстродействующих часов и таймеров, а
также для работы с прерываниями, используемых
RTX-процессами. Менеджер процессов (thread manager) и
планировщик, основанный на фиксированной
системе приоритетов, встроенные в RTSS,
гарантируют эффективное управление
пользовательскими процессами. RTSS обеспечивает
также интерфейс между процессами RTX и Windows NT с
помощью сервиса IPC (inter-process communications –
взаимодействие между процессами) в реальном
времени.
Отметим в итоге, что,
хотя способы реализации расширений реального
времени и различаются, суть у них одна -
одновременная работа на одном процессоре двух
операционных систем: Windows NT и реального времени,
плюс возможность взаимодействия между
процессами реального времени и процессами Windows NT.
ЛИТЕРАТУРА: