Научно-исследовательская лаборатория систем ЧПУ |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Исследование операционных систем, используемых в современных системах ЧПУАвтор: Константин Воскресенский
|
Время реакции | Использованные ОС |
---|---|
Менее 10 мкс | Только ОСРВ, но даже они могут быть бессильны |
10 - 100 мкс | Операционные системы реального времени |
100 мкс - 1 мс | ОСРВ, RTAI, RT- UNIX и LINUX, расширения реального времени для Windows NT, CE |
1 мс | Можно пытаться делать что-то с Linux и Windows NT, но не для систем, где опоздания реакции могут привести к тяжелым последствиям |
Из таблицы видно, что временные рамки ОСРВ достаточно жесткие. Среди современных операционных систем есть класс продуктов, разработанных специально для построения систем жесткого реального времени - VxWorks, OS9, QNX, LynxOS, OSE и другие. Эти системы содержат необходимый набор инструментов, и в некоторых случаях являются единственным выбором - на него приходится идти, невзирая на затраты. Однако достаточно часто требования к реальному времени (полная предсказуемость времени реакции) становятся менее жесткими, например, необходимо добиться только нужной средней производительности.
Иногда достаточно жестко контролировать только одно из событий, допуская при этом задержки реакций на остальные. В подобных случаях возможности выбора расширяются, и желаемых результатов можно достичь, используя такие широко распространенные операционные системы как LINUX, Windows NT, Windows CE, дополняя их расширениями реального времени (RTAI, RT LINUX, RTX).
Как указывалось выше, ОСРВ должна быть предсказуемой, что означает максимальное время выполнения того или иного действия, которое должно быть известно заранее и должно соответствовать требованиям приложения.
Первое требование состоит в том, что ОС должна быть многонитевой по принципу абсолютного приоритета (прерываемой). Планировщик должен иметь возможность прервать любую нить и предоставить ресурс той нити, которой он более необходим. ОС (и аппаратура) должны также обеспечивать прерывания на уровне обработки прерываний.
Проблема в том, чтобы определить, какой задаче требуется ресурс. В идеальной ситуации ОСРВ отдает ресурс нити или драйверу с ближайшим крайним сроком (так называемые ОС, управляемые временным ограничением (deadline driven OS)).
Чтобы реализовать это, ОС должна знать время, требуемое каждой из выполняющихся нитей для завершения (до сих пор не существует ОС, построенной по этому принципу, так как он слишком сложен для реализации), поэтому разработчики ОС принимают иную точку зрения: вводится понятие уровня приоритета задачи, и временные ограничения сводят к приоритетам. Так как умозрительные решения чреваты ошибками, показатели СРВ при этом снижаются. Чтобы более эффективно осуществить указанное преобразование ограничений, проектировщик может воспользоваться теорией расписаний или имитационным моделированием, хотя и это может оказаться бесполезным. На сегодняшний день не имеется иного решения, поэтому понятие приоритета нити необходимо.
Задачи разделяют данные (ресурсы) и должны сообщаться друг с другом, следовательно, должны существовать механизмы блокирования и коммуникации.
На самом деле именно этот механизм синхронизации и тот факт, что различные нити используют одно и то же пространство памяти, отличают нити от процессов. Процессы не разделяют одно и то же пространство памяти. Так, например, старые версии UNIX не являлись многонитевыми. Старый UNIX - многозадачная ОС, где задачами являются процессы, которые сообщаются через потоки (pipes) и разделяемую память. Оба эти механизма используют файловую систему, а ее поведение непредсказуемо.
Комбинация приоритета нити и разделение ресурсов между ними приводит к другому явлению: классической проблеме инверсии приоритетов. Это можно проиллюстрировать примером, где есть как минимум три нити. Когда нить низшего приоритета заняла ресурс, разделяемый с нитью высшего приоритета, а сначала выполняется нить среднего приоритета, выполнение нити высшего приоритета будет приостановлено, пока не освободится ресурс и не отработает нить среднего приоритета. В этой ситуации время, необходимое для завершения нити высшего приоритета, зависит от нижних приоритетных уровней - это и есть инверсия приоритетов. Ясно, что в такой ситуации трудно выдержать ограничение на время исполнения.
Чтобы устранить такие инверсии, ОСРВ должна допускать наследование приоритета, т. е. повышение приоритета до уровня вызывающей нити. Наследование означает, что блокирующая ресурс нить наследует приоритет блокируемой нити (справедливо лишь в том случае, если блокируемая нить имеет более высокий приоритет).
Иногда утверждают, что в грамотно спроектированной системе такая проблема не возникает. В случае сложных систем с этим нельзя согласиться. Единственный способ решения этой проблемы состоит в увеличении приоритета нити вручную прежде, чем ресурс окажется заблокированным - это возможно в случае, когда две нити разных приоритетов претендуют на один ресурс. В общем случае решения не существует.
Наконец, следует рассмотреть временные ограничения. Время выполнения системных вызовов и временные характеристики поведения системы в различных обстоятельствах должны быть известны разработчику, поэтому производитель ОСРВ должен приводить следующие характеристики:
латентную задержку прерывания (т. е. время от момента прерывания до момента запуска задачи): она должна быть предсказуема и согласована с требованиями приложения. Эта величина зависит от числа одновременно "висящих" прерываний;
максимальное время выполнения каждого системного вызова (должно быть предсказуемым и независимым от числа объектов в системе);
максимальное время маскирования прерываний драйверами и ОС.
системные уровни прерываний;
уровни прерываний драйверов устройств, их временные характеристики и т. д.
Когда все указанные характеристики ОС известны, можно представить разработку СРВ на базе данной ОС с учетом возможностей выбранной ОСРВ и аппаратуры.
На сегодняшний день существует более 100 коммерческих ОСРВ. Есть множество бесплатных (или условно бесплатных) СРВ и систем, имеющих статус исследовательских или университетских проектов. Сначала рассмотрим краткое описание некоторых систем реального времени, а затем более подробно остановимся на СРВ Win NT RTX, как наиболее перспективной системе.
Операционная система QNX является разработкой канадской компании QNX Software System Ltd (1981).
Операционная система QNX представляет собой гибрид 16/32-битовой операционной системы, которую пользователь может конфигурировать по своему усмотрению. Наиболее часто она применяется для создания систем, работающих в реальном масштабе времени. Время, необходимое для полной инсталляции системы, включая сетевые средства, составляет всего 10-15 мин, после чего можно начинать работу. Нетребовательность системы к ресурсам проявляется уже в том, что система с необходимой и достаточной средой разработки в виде компилятора Watcom C/C++ (основной компилятор для QNX) умещается на 10 Мб.
QNX - первая коммерческая ОС, построенная на принципах микроядра и обмена сообщениями. Система реализована в виде совокупности независимых (но взаимодействующих через обмен сообщениями) процессов различного уровня (менеджеры и драйверы), каждый из которых реализует определенный вид сервиса.
Эти идеи позволили добиться нескольких важнейших преимуществ:
Система построена по технологии FLEET [Fault-tolerance (отказоустойчивая), Load-bаlаncing (регулирующая нагрузку), Еffiсiеnt (эффективная), Ехtеnsible (расширяемая), Тгаnsparent (прозрачная)], которая характеризуетмя следующим. QNX является ОСРВ на основе микроядра (размером около 10 Кб). В качестве основного средства взаимодействия между процессами система использует передачу сообщений. Благодаря этому в 32-битовой среде возможно взаимодействие процессов с 32 и 16-битовыми кодами, причем сообщения передаются между любыми процессами, независимо от того, находятся ли процессы на одном компьютере или на разных узлах сети.
Пользователь, работая на одном из узлов сети, может иметь доступ к любым ресурсам остальных узлов, включая порты, файловую систему и задачи. Пользователю нет необходимости вникать в сетевой протокол, который, кстати, не является тайной, вплоть до его структуры. Он содержит пакеты, которые применяются и для передачи сообщений. Сетевой администратор распознает эти пакеты и переправляет микроядру, которое, в свою очередь, переправляет их в шину локальных сообщений. QNX распознает не только пакеты сообщений QNX-процессов. Можно также легко обращаться к сетевому администратору для передачи таких пакетных протоколов, как TCP/IP, 8MB и др. Возможно обращение к различным сетевым администраторам через один кабель.
Операционная система QNX объединяет всю сеть ПК в единый набор ресурсов с абсолютной прозрачностью доступа к ним. Узлы могут добавляться и исключаться из сети, не влияя на целостность системы. Сетевая обработка данных в QNX является настолько гибкой, что можно объединить в одну сеть любой разнородный набор Intel совместимых компьютеров, соединенных через Arcnet, Ethernet, Token Ring или через последовательный порт, к которому также может быть подключен модем. Кроме того, возможно участие компьютера одновременно в нескольких сетях, и если одна из них окажется перегруженной или выйдет из строя, то QNX автоматически будет использовать другие доступные сети без потери информации.
QNX имеет некоторые ограничения, связанные с ориентацией системы на рынок встроенных систем реального времени:
Несмотря на присущие минусы, для QNX разработано множество пользовательских программ, например, базы данных, которые по производительности часто превосходят аналоги под управлением других операционных систем.
В российской промышленности QNX встречается достаточно часто. Это объясняется наличием достаточного количества программного обеспечения под QNX (драйверы и т. д.) для различного оборудования, представленного на российском рынке.
Операционная система реального времени VxWorks и инструментальная среда Tornado фирмы Wind River Systems предназначены для разработки ПО встроенных компьютеров, работающих в системах жесткого реального времени. Операционная система VxWorks является системой с кросс-средствами разработки прикладного программного обеспечения. Разработка ведется на инструментальном компьютере (host) в среде Tornado для последующего исполнения на целевой машине (target) под управлением VxWorks.
VxWorks поддерживает целевые архитектуры (targets):
Операционная система VxWorks построена, как и положено ОС жесткого реального времени, по технологии микроядра, т. е. на нижнем непрерываемом уровне ядра выполняются только базовые функции планирования задач и их управления коммуникацией/синхронизацией. Все остальные функции операционной системы более высокого уровня (управление памятью, вводом/выводом, сетевые средства и т. д.) базируются на простых функциях нижнего уровня, что позволяет обеспечить быстродействие и предсказуемость ядра, а также легко построить необходимую конфигурацию операционной системы.
В многозадачном ядре wind применен алгоритм планирования задач, учитывающий приоритеты и включающийся по прерываниям. В качестве основного средства синхронизации задач и взаимоисключающего доступа к общим ресурсам в ядре wind применены семафоры. Имеется несколько видов семафоров, ориентированных на различные прикладные задачи: двоичные, целочисленные, взаимного исключения и POSIX.
Все аппаратно-зависимые части VxWorks вынесены в отдельные модули для того, чтобы разработчик встроенной системы мог сам портировать VxWorks на свою нестандартную целевую машину. Этот комплект конфигурационных и инициализационных модулей называется BSP (Board Support Package) и поставляется для стандартных компьютеров (VME-процессор, PC или Sparcstation) в исходных текстах. Разработчик нестандартной машины может взять за образец BSP наиболее близкий по архитектуре стандартный компьютер и перенести VxWorks на свою машину путем разработки собственного BSP с помощью BSP Porting Kit.
VxWorks была первой операционной системой реального времени, в которой реализован протокол TCP/IP с учетом требований реального времени. С тех пор VxWorks поддерживает все сетевые средства, стандартные для UNIX: TCP/UDP/ICMP/IP/ARP, Sockets, SLIP/CSLIP/PPP, telnet/rlogin/rpc/rsh, ftp/tftp/bootp, NFS (клиент и сервер).
Wind River Systems анонсировала (1994) программу WindNet, по которой ведущие фирмы-производители программных средств в области коммуникаций интегрировали свои программные продукты с VxWorks.
На сегодняшний день - это сетевые протоколы Х.25, ISDN, ATM, SS7, Frame Relay и OSI; CASE-средства разработки распределенных систем на базе стандартов ROOM (Real-Time Object Oriented Modelling) и CORBA (Common Object Request Broker Architecture); менеджмент сетей по технологиям MBD (Management By Delegation) и CMIP/GDMO (Common Management Information Protocol/Guidelines for Definition of Managed Objects).
Обычные отладчики, позволяющие исследовать состояние программ и данных в точках останова, являются статическими средствами отладки. Возможности исследования динамики исполнения программ и изменения данных предоставляют специальные средства отладки в реальном масштабе времени, которые трассируют интересующие пользователя события и накапливают их в буфере для последующего анализа.
Трассировку системных событий (переключения задач, запись в очередь сообщений, установка семафора и т. д.) позволяет вести динамический анализатор WindView, который отображает накопленные в буфере события на временной диаграмме.
В последнее время высокопроизводительные микропроцессоры, а с ними и операционные системы реального времени, все чаще используются в так называемых "глубоко встроенных" (deeply embedded) применениях (автомобильная электроника, офисная и бытовая техника, измерительные и медицинские приборы и др.). К таким компьютерным системам предъявляются два основных требования: малые габариты и низкая стоимость, поэтому глубоко встроенные микропроцессорные системы ставят две проблемы на пути применения серийных ОСРВ: небольшие объемы используемой памяти и отсутствие "лишних" интерфейсов, по которым можно было бы связать целевую и инструментальную машины на этапе разработки встроенного ПО.
Специально для систем с сильно ограниченным объемом памяти компания Wind River Systems разработала редуцированное ядро WindStream, которое требует для работы не более 8 Кб ПЗУ и 2 Кб ОЗУ. При этом для WindStream применим весь спектр инструментальных средств VxWorks, включая WindView.
Инструментальная среда Tornado имеет открытую архитектуру, что позволяет другим фирмам-производителям инструментальных средств разработки ПО реального времени интегрировать свои программные продукты с Tornado. Пользователь может подключать к Tornado свои собственные специализированные средства разработки, а также расширять возможности инструментальных средств фирмы Wind River Systems.
В стандартную конфигурацию Tornado входят ядро VxWorks и системные библиотеки, GNU C/C++ Toolkit, дистанционный отладчик уровня исходного языка CrossWind, оболочка WindSh, конфигуратор BSP WindConfig и др.
Существует множество программных продуктов, интегрированных с Tornado, производства других фирм.
Как было сказано выше, основной задачей является реагирование на некоторое внешнее событие в заданный промежуток времени. Внешнее событие обычно, с точки зрения программиста, выглядит как аппаратное прерывание. В современных многозадачных операционных системах первым на аппаратное прерывание реагирует ядро. Затем это прерывание через драйвера устройств каким-то образом может попасть и к прикладной задаче. Но в многозадачной системе должны одновременно работать сразу несколько задач и для того, чтобы доставить прерывание, ядро должно перевести процесс, выполняющийся в данный момент в состояние сна, пробудить нужный процесс и передать ему прерывание. Для этого нужно переключать контексты, что требует много времени, поэтому прерывание будет доставлено процессу со значительным опозданием. Кроме того, после получения прерывания процессом нельзя быть уверенным, что обработка информации будет завершена в минимальные сроки, т.к. если компьютер оснащен всего одним процессором, а в системе запущено больше одной задачи - то в любой момент может произойти переключение задач с очередным переключением контекстов. В результате - время реакции может получиться неоправданно большим (на достаточно производительном компьютере).
Linux - современная POSIX-совместимая и Unix-подобная операционная система для ПК и рабочих станций, т. е. многопользовательская сетевая операционная система.
ОС Linux поддерживает стандарты открытых систем и протоколы сети Internet. Все компоненты системы, включая исходные тексты, распространяются с лицензией на свободное копирование и установку для неограниченного числа пользователей.
Характерные особенности Linux как ОС:
Рост популярности Linux побуждает разработчиков внимательнее присмотреться к этой операционной системе. В данный момент эта ОС готова к стабильной работе, а открытость ее исходных текстов и архитектуры наряду с растущей популярностью заставляет программистов переносить свои наработки на многие аппаратные платформы: SGI, IBM, Intel, Motorola и т. д.
Для задач РВ сообщество разработчиков Linux активно применяет специальные расширения - RTLinux, KURT и UTIME, позволяющие получить устойчивую среду реального времени. RTLinux представляет собой систему "жесткого" реального времени, a KURT (KU Real Time Linux) относится к системам "мягкого" реального времени. Linux-расширение UTIME, входящее в состав KURT, позволяет добиться увеличения частоты системных часов, что приводит к более быстрому переключению контекста задач.
RTLinux - это операционная система, в которой небольшое ядро реального времени сосуществует с Posix-like ядром Linux. Основная цель - сделать доступными сложные службы и оптимизированное поведение системы в стандартных ситуациях для системы с разделением времени, и, в то же время, выполнять задачи реального времени. В прошлом операционные системы реального времени примитивны - простые программы, которые предлагали пользователю чуть больше, чем просто библиотека основных функций. Но в наше время пользователи требуют доступ к TCP/IP, графическому дисплею и системе окон, базам данных и другим службам, которые не являются ни примитивными, ни простыми. Одно из решений - добавить non-real-time службы к базовому ядру реального времени, что и было проделано в VXworks и, немного по-другому, в микроядре QNX. Вторая возможность - модифицировать стандартное ядро и сделать его полностью прерываемым.
RTLinux организован третьим способом, в котором простое ядро реального времени запускает обычное ядро как одну из задач реального времени с самым низким приоритетом, используя виртуальную машину для того, чтобы сделать стандартное ядро полностью прерываемым.
В RTLinux все прерывания обслуживаются ядром реального времени, а затем передаются стандартному ядру, но только в том случае, если нет необходимости запускать одну из задач реального времени. Для того чтобы минимизировать количество изменений в стандартном ядре, этот механизм реализован при помощи эмулирования ICH (Interrupt Control Hardware). Ядро реального времени и пользовательские задачи Linux могут обмениваться данными через неблокируемые очереди и сегменты разделяемой памяти.
С точки зрения программиста очереди выглядят как стандартные последовательные устройства UNIX, доступ к которым возможен при помощи системных вызовов POSIX read/write/open/ioctl. Разделяемая память доступна через системный вызов mmap.
RTLinux использует Linux для загрузки, доступа к большинству устройств, работы с сетью, файловыми системами, управлением процессами Linux и загрузки модулей ядра, что дает возможность легко модифицировать систему реального времени.
Программа реального времени состоит из двух частей: задачи, которая представляет собой модуль ядра, и обыкновенный UNIX/Linux процесс и заботится об обработке данных, доступу к дисплею и сети и о любых других функциях, не требующих таких жестких временных рамок.
На практике оказалось, что идея RTLinux очень удачна. В самом худшем случае запаздывание прерываний на 486/33Mhz PC оказалось менее 30 мкс, что близко к аппаратному пределу. Для прикладных задач симбиоз систем реального времени и оптимизированной для "общего случая" оказался очень удачным. Наиболее часто используемая конфигурация RTLinux - примитивные задачи реального времени со статически распределяемой памятью без ее защиты, простым планировщиком с фиксированными приоритетами без защиты от нереализуемых планов, аппаратным запрещением прерываний, разделяемая память - единственный механизм синхронизации задач реального времени и ограниченный набором операций над FIFO-очередями, подсоединенными к обычным процессам Linux.
Ядро Linux позволяет в динамике загружать и выгружать модули ядра. Представив отдельные части ядра реального времени в виде модулей, легко изменять ядро реального времени. Уже написаны альтернативные планировщики и модуль семафоров. Во время работы системы можно загрузить модуль с задачами реального времени, затем выгрузить стандартный планировщик и загрузить, например, EDF планировщик. Можно пробовать разные комбинации модулей, пока не будет найдена оптимальная.
Этот вариант Linux позволяет выполнять задачи в реальном времени, что достигается путем вставки ядра реального времени между стандартным ядром Linux и аппаратными прерываниями и позволяет избавиться от главной причины непригодности Linux для задач реального времени - большого запаздывания прерываний.
С точки зрения RTLinux, Linux - одна из задач реального времени, имеющая самый низкий приоритет, может быть прервана, когда нужно. Такая структура накладывает некоторые ограничения на задачи реального времени. Они не могут легко использовать различные драйверы Linux, не имеют доступ к сети и т. д., но зато могут обмениваться данными с стандартными задачами Linux.
Простые очереди FIFO реализованы для обмена данными между процессами реального времени и процессами Linux. Типичное приложение состоит из двух частей - задачи реального времени, непосредственно работающей с аппаратурой, и, обычно, задачи Linux, которая выполняет остальные операции, такие как сохранение данных на диск, пересылка их по сети, работа с пользователем (GUI) и т. д.
Самый короткий период для периодически вызываемых задач реального времени в RTLinux на Pentium 120 - менее 150 мкс. Задачи, вызываемые по прерыванию, могут иметь намного меньший период.
Ядро реального времени не защищает от перегрузок. Если одна из задач реального времени полностью утилизирует процессор, ядро Linux, имея самый низкий приоритет, не получит управления и система повиснет. Задачи реального времени запускаются в адресном пространстве ядра с привилегиями ядра и могут быть реализованы, например, при помощи модулей Linux.
Необходимо отметить, что компания LynuxWorks начала поставки (17.05.2002) встраиваемой ОС BlueCat Linux для комплекта разработчика ПО Intel Internet Exchange Architecture Software Developers Kit (Intel IXA SDK) 2.0, предназначенного для семейства сетевых процессоров Intel IXP1200. ОС BlueCat Linux распространяется бесплатно совместно с Intel IXA SDK 2.0.
VxWorks давно стала де-факто стандартом для подавляющего большинства систем, использующих встроенные ОС. Флэш-память вычислительной системы IXP1200 содержит загрузчик ядра VxWorks. Для разработчиков это упрощает задачу написания новых программ. Кроме того, уже реализована возможность работы сетевого процессора под управлением ОС Linux (с расширениями реального времени). Осуществляется программная поддержка некоторыми производителями ОС Linux (например,LynuxWorks и т. д.).
Для управления из единого центра одной или многими удалёнными установками и проверки их состояния фирма CS (Франция) разработала систему контроля. Она может применяться для управления энергетическими объектами, в системах кондиционирования воздуха, системах безопасности, технологических установках, сетях, промышленных конвейерах и уже внедрена на многих гражданских и военных объектах.
Система предоставляет аппаратное и программное решение всех аспектов контроля. Широкие возможности сопряжения обеспечивают сбор данных с наружных датчиков, оконечных устройств, программируемых блоков ввода/вывода и с хост-систем.
В системе контроля можно выделить два уровня:
Рис.1. Общая концепция системы
Задачи на уровне 1 выполняются блоком GESCAP (например, рабочей станцией на процессоре 68010 фирмы Motorola с ОЗУ 1 Мбайт), а на уровне 2 - блоком GESVA (например, рабочей станцией на процессоре 68030 фирмы Motorola с ОЗУ 4 Мбайт). В блоках GESVA и GESCAP используется одна и та же операционная система (OS-9) и прикладное программное обеспечение. Различны только видеотерминалы и функциональные возможности. Благодаря этой однородности облегчается установка, использование и поддержание работоспособности системы.
Поскольку пользовательский интерфейс GESVA и GESCAP соответствует интуитивным представлениям, работа по конфигурированию не вызывает трудностей и не требует никаких особых познаний в информатике. Пользователь имеет дело с всплывающими меню и диалоговыми окнами, обеспечивающими доступ к следующим стандартным функциям.
Конфигурирование аналоговых или цифровых блоков ввода/вывода (аварийные сигналы, сообщения, приоритеты, и т.д.):
Функции отображения состояния:
Графические функции:
Функции связи:
Функции выдачи на печать:
Функции различного назначения:
Основными требованиями к программному обеспечению были:
В результате выбрана операционная система OS9, наилучшим образом отвечающая перечисленным требованиям.
В качестве многооконной среды разработки выбран пакет WINOTOOLS. С помощью утилит WINOTOOLS можно без программирования разрабатывать все элементы пользовательского интерфейса (окна, средства графического ввода данных, кнопки, предупреждающие сообщения и т.п.).
Благодаря скромным требованиям к объему памяти и малому времени реакции, WINOTOOLS в сочетании с характеристиками OS9 является идеальной средой разработки разнообразных прикладных программ реального времени, работающих в графическом режиме.
WINOTOOLS предоставляет следующие утилиты:
PAINT - объектно-ориентированный графический редактор для разработки пользовательских интерфейсов, пультов управления и диаграмм. PAINT разработан таким образом, чтобы его можно было настраивать и интегрировать в пользовательскую прикладную программу. Все файлы графических данных, созданные с помощью PAINT, могут целиком модифицироваться без обращения к исходным кодам (импортируются файлы в формате GIF).
SCRIPT - язык, позволяющий моделировать все диалоги с пользовательским интерфейсом до написания строки исходного кода. Эта утилита позволяет производить быструю проверку правильности пользовательского интерфейса.
DATABASE (БАЗА ДАННЫХ) - библиотека С-функций, обеспечивающая управление базой данных (соответствие данных и индексных файлов базы данных).
БИБЛИОТЕКА ВВОДА/ВЫВОДА - библиотека С-функций, обеспечивающая сопряжение пользовательского интерфейса с устройствами ввода/вывода.
В последнее время приобретают популярность расширения реального времени для Windows NT. Это обусловлено с одной стороны - расширением областей применения компьютерного управления, с другой стороны - сравнительно малой известностью и высокой стоимостью специализированных операционных систем реального времени. Но даже если бы это было не так и о других системах было бы известно не меньше - все равно Win NT RTX была бы наиболее популярна. Ведь не даром соотношение пользователей ОС семейства Windows к пользователям Linux/Unix систем - 1000 к 1. Вполне логично, что человек, работая дома в одной системе, хочет видеть такую же, понятную ему удобную систему и на работе. Интерфейс Win32 является стандартным и хорошо знакомым большому числу программистов и пользователей. Под NT существует огромное число готовых приложений (в том числе коммуникационных), а также популярные средства разработки. К сожалению, Windows NT "в чистом виде" нельзя отнести к операционным системам реального времени. Обсуждению причин этого посвящены статьи Martin Timmerman и Jean-Christophe Monfret в Real-Time Magazine Q21997.
Вот некоторые из них:
Таким образом, время окончания обработки вашей DPC оказывается непредсказуемым образом зависимым от наличия в системе других драйверов и их активности. Для систем с жестким детерминизмом необходимо точно знать максимальное время от момента возникновения прерывания до входа в процедуру обработки и гарантировать его непревышение.
Одним из возможных решений является использование совместно с 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. Это обусловлено следующими причинами:
Чтобы называться ОСРВ, операционная система должна удовлетворять некоторому минимальному набору требований, которые необходимы, но недостаточны. В самом начале своей работы я это указывал, но повторимся еще раз:
Первому требованию Windows NT явно удовлетворяет. Второму - тоже, но для режима реального времени уровней приоритета маловато. Практически невозможно спроектировать хорошую систему реального времени, например, с диспетчеризацией в зависимости от частоты (rate-monotonic scheduling), поскольку доступного количества приоритетных уровней исполнения потоков не хватит. Кроме того, в NT отсутствует механизм наследования приоритетов.
Для обработки прерываний с целью минимизации затрат времени на подпрограммы обслуживания прерываний (ISR-подпрограммы) в NT была введена концепция отложенных вызовов процедур (deferred procedure calls - DPC). Хотя приоритет этих вызовов выше, чем приоритет пользовательских и системных потоков, все они находятся на одном и том же уровне. Это означает, что все DPC-вызовы выстраиваются в FIFO-очередь и что прерывание высокого уровня будет обслужено только тогда, когда свое исполнение завершат все предшествующие ему DPC-вызовы. Вследствие этого, время отклика системы становится непредсказуемым, что противоречит пятому требованию.
В NT в основе управления памятью лежит механизм виртуальной памяти. Это влечет за собой защиту памяти, преобразование адресов и подкачку (свопинг). Для приложений РВ свопинг неприемлем. Страницы памяти могут быть заблокированы в физической памяти. Однако Джеффри Рихтер (Jeffrey Richter) в своей книге [Richter95] утверждает, что, если процесс не активен, NT может разблокировать страницы процесса и переписать их из физической памяти на диск.
ПРИМЕЧАНИЕ Windows NT в "чистом виде" подходит разве что для систем мягкого РВ для применения в приложениях реального времени. |
Расширения реального времени добавляют к Windows NT специфическую для реального времени функциональность:
Подсистема реального времени RTSS обеспечивает исполнение большинства функций и управление ресурсами расширений реального времени. С точки зрения реализации, RTSS выглядит как драйвер Windows NT и выполняется в режиме ядра. Это позволяет достаточно простым способом устроить взаимодействие между процессами реального времени и процессами Windows NT. RTSS обеспечивает исполнение функций RTAPI и содержит планировщик нитей реального времени со 128-ю фиксированными приоритетами. RTSS содержит также менеджер объектов, предоставляющий унифицированные механизмы использования системных ресурсов.
Управление объектами RTSS: Предоставляет возможности унифицированного управления объектами RTSS (создание,закрытие,доступ). Объектами RTSS являются: таймеры, обработчики прерываний и исключительных ситуаций (startup, shutdown, blue screen), нити, процессы, семафоры, мьютексы, разделяемая память, почтовые ящики, консольный и файловый ввод-вывод, регистры.
HAL является программным компонентом самого низкого уровня при взаимодействии драйверов ядра с аппаратурой. В частности, именно на уровне HAL происходит первоначальная обработка прерываний от таймера. Важной особенностью реализации Real-Time HAL является то, что он полностью совместим со стандартным HAL, и, более того, время исполнения кодов Real-Time HAL и стандартного HAL совпадают в случае, если подсистема реального времени не используется.
Программный интерфейс реального времени RTAPI является расширением Win32 и содержит, прежде всего, набор функций, необходимых для управления устройствами. RTAPI реализован в двух видах - как подмножество подсистемы реального времени (RTSS) и как динамическая библиотека (DLL), которая может вызываться из Win32-приложений. RTAPI содержит следующие группы функций:
Управление вводом-выводом: RTAPI предоставляет два способа управления устройствами ввода-вывода. Во-первых, приложения пользователя получают возможность непосредственного доступа к адресам портов ввода-вывода, что позволяет программировать работу устройств напрямую. Кроме того, внешнее устройство может управляться специальными (легко разрабатываемыми) драйверами, для работы с которыми RTAPI предоставляет специальный интерфейс.
В настоящее время многие ОС РВ показывают близкие значения показателей эффективности, поэтому одним из наиболее важных условий успеха операционной системы (наряду с высокой производительностью) является наличие в ней развитой среды разработки, графических интерфейсов, сетевой поддержки; возможность работы на многопроцессорных средствах. Среди наиболее известных ОС РВ для систем ЧПУ можно выделить:
Несмотря на казалось бы достаточное количество операционных систем реального времени к разработке собственных ОС РВ приходят многие крупные компании. Технологические процессы и циклы становятся все более сложными, качество и предъявляемые к операционным системам требования выше. Поэтому перед компанией может возникнуть две ситуации: либо оплачивать сторонней фирме за разработку ОС для себя, либо самой компании разрабатывать для своих систем ЧПУ собственную ОС РВ. Второе особенно важно, если преследуется цель сохранения технологических особенностей производства в тайне.
В настоящее время используется очень редко. Эта операционная система была современной и популярной, а сейчас является скорее устаревшей. У Siemens была своя операционная система FlexOS, свои языки, полевые шины. Потом Siemens провозгласил своим принципом открытость. Фактическим стандартом для более раннего Siemens'а и вообще программного обеспечения АСУТП разных фирм стала операционная система Windows NT, позволившая использовать в программном обеспечении весь багаж, накопленный в офисных системах.
Эта операционная система предназначена не только для персональных компьютеров, но и для самых разных бытовых и промышленных интеллектуальных устройств - систем, управляющих технологическими процессами, станков с ЧПУ, интернет-приставок, видеовоспроизводящих агрегатов, игровых консолей. Данная ОС во многом весьма примечательна и уникальна. В 1982 году в Канаде фирма "Quantum Software Systems, Limited" - QSSL, созданная г-ми Беллом и Доджем (Gordon Bell & Dan Dodge), представила миру новейшую многозадачную многопользовательскую операционную систему реального времени "Quick UNIX", разработка которой, как говорят, началась по заказу Министерства обороны Соединенных Штатов. Это была UNIX-подобная операционная система, вернее, совместимая со стандартом на переносимость приложений POSIX, в соответствии с которым сделаны также UNIX и его популярный клон Linux.
Как бы странно это ни прозвучало, но бывает, что Windows XP используется в качестве графического интерфейса оператора, а специальная операционная система в реальном времени используется для безопасности обеспечения функций ЧПУ. В случае возникновения проблемы на XP (напр. с подключением к сети) это никак не отразится на обработке или на самом станке, т.к. ЧПУ работает в своей операционной системе.
Общепризнанно, что это надежная, многозадачная сетевая ОС, и что очень важно, имеет интерфейс Windows 95, для многих ставшим родным. Многие фирмы при разработке своих систем ЧПУ используют именно ее:
Конечно, хотелось бы иметь в качестве ОС РВ Windows NT. Но может ли потянуть Windows NT сегодня, даже с расширением реального времени (Real-Time Extensions) задачи, которые всегда решали ОС РВ? Многочисленные тесты показали, что на типовых компьютерных платформах на базе процессоров Pentium максимальное время реакции на прерывание (начиная от возникновения прерывания до входа в нить обработки, включая восстановление контекста) составляет 25-80 мкс, при условии значительной загрузки тестируемой системы: проверка диска (chkdsk), GUI приложения и интенсивный сетевой обмен. Эти цифры сравнимы с теми, что обеспечивают другие ОС РВ и превосходят некоторые из них.
Учитывая вышесказанное, имеет смысл начать поиск удачного решения Real-Time Extensions для Windows NT. Нужно сказать, что Windows NT не является открытой системой, и заранее ясно, что проекты Real-Time Extensions сторонних фирм будут только надстройками, не меняющими сути ОС.
Дополнение стандартного ядра NT ядром реального времени - этот подход лежит в основе предложений фирм Radisys, Imagination и LP Elektronik. Имеются две принципиально разные его реализации:
В итоге хотелось бы отметить, что, хотя способы реализации расширений реального времени и различаются, суть у них одна - одновременная работа на одном процессоре двух операционных систем: Windows NT и реального времени плюс возможность взаимодействия между процессами реального времени и процессами Windows NT.
Фирма GE Fanuc Automation подготовила к выпуску системы ЧПУ серии Is - первые в мире открытые системы ЧПУ со встроенной операционной системой Windows CE 2.0. В серию входят три модели: мод. Series 160 Is, мод. Series 180 Is и мод.Series 210. Системы ЧПУ серии Is могут использоваться для управления металлорежущими станками различных типов, начиная от 2-координатных токарных станков и заканчивая 5-координатными обрабатывающими центрами, установками для лазерной резки, дыропробивными прессами и т.п.
Операционная система Windows CE 2.0 предназначена, как известно, для карманных компьютеров и поэтому отличается очень малым размером. Вместе с тем, ее возможностей вполне достаточно для реализации функций, которыми должны обладать современные открытые системы ЧПУ. Благодаря малому размеру ОС Windows CE 2.0, в системах ЧПУ серии Is удалось отказаться от жесткого диска. Для хранения операционной системы и управляющих программ используется флеш-память емкостью 45 мбайт. Отсутствие у систем ЧПУ серии Is жесткого диска делает их чрезвычайно устойчивыми к механическим воздействиям, которые трудно исключить при транспортировке и эксплуатации в условиях реального производства.
Операционная система Nucleus, предназначенная для встраиваемых приложений, была разработана компанией Accelerated Technology Inc. (ATI, США), основанной в 1990 г. двумя программистами. Они ставили перед собой вполне конкретную цель: создать очень компактную ОС реального времени для встраиваемых систем, независимую от типа процессора, полностью открытую (что подразумевает поставку с исходными текстами), хорошо документированную и имеющую приемлемую цену.
Если Nucleus сравнить, например, с такой известной ОС РВ QNX, то нетрудно заметить ряд их различий.
Nucleus является кросс-системой, в то время как QNX - одновременно и средой разработки, и средой исполнения. Под кросс-системой понимается такая технология разработки, при которой ПО создается на одной программно-аппаратной платформе, а исполняется на другой. Совмещение в QNX среды разработки и среды исполнения очень полезно в тех случаях, когда пользователь работает на IBM PC-совместимой архитектуре.
Nucleus позволяет разрабатывать ПО для многих процессоров, а QNX - только для IBM PC-совместимых.
В отличие от QNX, в поставку Nucleus входят исходные тексты. Это особенно важно для военных, так как наличие полных исходных текстов облегчает сертификацию созданного приложения.
Приобретая Nucleus, покупатель оплачивает ее только один раз: за тиражирование своего ПО фирма ATI дополнительной платы не взимает. Стоимость этой ОС вместе с необходимыми инструментальными средствами составляет 10-30 тыс. долл. При покупке QNX пользователь должен заплатить за полную систему (около 2500 долл. за ОС и компилятор Watcom C), а при тиражировании ПО - покупать у фирмы QSSL по крайней мере модульные лицензии за необходимый набор драйверов (от 50 до 1000 долл.).
QNX 4.x удовлетворяет стандарту POSIX 1003. Nucleus не отвечает этому стандарту, но он обладает достаточно мощным набором системных вызовов.
Sharp Microelectronics и Enea Embedded Technology сотрудничают при оптимизации BlueStreak System-on-Chip компонентов, специально примененяемых в мобильных конечных устройствах.
В первом проекте фирма Enea размещает версию 5.0 операционной системы реального времени OSE (RTOS) на 32-разрядном микроконтроллере LH7A400. Эта System-on-Chip, базирующаяся на ядре ARM922TT 200 мегагерц, уже включает в себя многочисленные периферийные модули, такие как USB Device, MultimediaCard Interface, внешний контроллер DMA, последовательные и параллельные интерфейсы, включая поддержку инфракрасного порта, а также программируемые контроллеры с прямыми интерфейсами жидкокристаллических дисплеев для всех распространенных типов дисплеев (STN, Color STN, TFT и Sharps Advanced-TFT ). При этом поддерживаются разрешения до 1024x768 пикселей, с числом цветов до 64.000 и с 15 полутонами. Таким образом, BlueStreak SoC LH7A400 предназначен для использования в качестве процессора в мобильных High-End-устройствах.
OS-9 относится к классу UNIX подобных операционных систем реального времени и предлагает к использованию многие привычные элементы среды UNIX. Однако, оригинальный модульный объектно-ориентированный дизайн системы сейчас также нов, как и тогда, когда он впервые создавался. OS-9 является чрезвычайно гибко конфигурируемой высокопроизводительной системой реального времени. Модульность системы означает, что она может быть масштабирована для удовлетворения нужд как маленьких встроенных систем, так и больших сетевых приложений. Все функциональные компоненты OS-9, включая ядро, иерархические файловые менеджеры, систему ввода/вывода и средства разработки, реализованы в виде независимых модулей. Комбинируя эти модули, разработчик может создавать системы с самой разной конфигурацией - от миниатюрных автономных ПЗУ ориентированных ядер до полномасштабных многопользовательских систем разработки. Как правило, разработка программ ведется в полнофункциональных конфигурациях. После того как будет отлажен код программы реального времени, отсоединяются модули разработки и ввода/вывода, и полученный код готов к исполнению под управлением ядра в целевой системе.
Операционная система VxWorks является системой с кросс-средствами разработки прикладного программного обеспечения, то есть разработка ведется на инструментальном компьютере (host) в среде Tornado для последующего исполнения на целевой машине (target) под управлением VxWorks.
VxWorks поддерживает целевые архитектуры (targets): Motorola 680x0 и CPU32, Intel 386/486/Pentium/.., Intel 960, SPARC, Mips R3000/4000, ARM, Motorola 88110, HP PA-RISC, Hitachi SH7600, PowerPC, DEC Alpha, Siemens C16x.
Инструментальные платформы, поддерживаемые для Tornado (hosts): Sun SPARCstation (SunOS и Solaris), HP 9000/400,700 (HP-UX), IBM RS6000 (AIX), Silicon Graphics (IRIX), DEC Alpha (OSF/1), PC (Windows 95 и NT).
Поддерживаемые интерфейсы host-target: Ethernet, RS-232, внутрисхемный эмулятор ICE (In-Circuit Emulator), кросс-шина (backplane), ROM-эмулятор, BDM-интерфейс (Background Debug Mode).
Инструментальная среда Tornado имеет открытую архитектуру, что позволяет другим фирмам-производителям инструментальных средств разработки ПО реального времени интегрировать свои программные продукты с Tornado. Пользователь также может подключать к Tornado свои собственные специализированные средства разработки, а также расширять возможности инструментальных средств фирмы Wind River Systems.
В стандартную конфигурацию Tornado входят ядро VxWorks и системные библиотеки, GNU C/C++ Toolkit, дистанционный отладчик уровня исходного языка CrossWind, оболочка WindSh, конфигуратор BSP WindConfig и др.
Фирма VenturCom разработала подсистему реального времени RTX (Real-Time Extensions) для Windows NT с благословения и при поддержке Microsoft. Microsoft передала лицензию на исходные тексты такого компонента Windows NT, как Уровень Абстракции Аппаратуры (HAL, Hardware Abstraction Level), который в основном и определяет характеристики ОС по обработке прерываний. RTX добавляет дополнительные вызовы к интерфейсу прикладного программирования (RTAPI, Real-Time API), а также загружает модифицированный HAL, который <изолирует> аппаратные прерывания от ядра Windows NT. RTX предоставляет для системы таймер реального времени с расширением 1млс и уменьшает время отклика. RTX обеспечивает для процессов доступ к физическим адресам памяти и портов ввода/вывода, а также специальные методы работы со страничной памятью, исключающие свойственные Windows NT задержки. Соответствующим образом отрабатываются попытки перезагрузки или тяжелые остановы типа <голубой экран>. Кроме того, предлагаются интерфейсы, замещающие функции WIN32, ответственные за планировку и синхронизацию задач, межзадачный обмен сообщениями, работу с аппаратными прерываниями и т.д. Самое интересное, что для этого не нужны изменения Windows NT и это не отразится на работоспособности существующих программ.
Для разработчиков встраиваемых систем VenturCom предлагает версию Windows NT, которая требует менее 10 Мбайт ПЗУ и 8 Мбайт ОЗУ. Подкачка страниц виртуальной памяти при этом запрещена, а в качестве дополнительных драйверов предлагаются драйверы Null-Display и Null-Input, позволяющие системе работать без дисплея и клавиатуры.
Под этим красивым кодовым названием мы можем легко распознать знакомую многим операционную систему iRMX. После того как Intel передала права на эту ОСРВ компании RadiSys, последняя неустанно трудилась над интеграцией полученного продукта с платформой Windows NT. Фирма выбрала стандартный путь лицензирования у Microsoft исходных текстов уровня HAL, с их последующим изменением под требования жесткого реального времени.
Как и в предыдущем случае, к стандартным функциям WIN32 добавляются новые функции, оптимизированные для работы в реальном времени. Само ядро реального времени на базе iRMX сосуществует с ядром Windows NT и отвечает за выполнение критических по быстродействию процессов. Windows NT вместе со всеми стандартными приложениями в этом случае является наименее приоритетным процессом, который получает управление только в случае, если все задачи реального времени находятся в неактивном состоянии. Подсистема реального времени может продолжать функционировать даже в случае полного зависания Windows NT.
Ниже приведена таблица соответствия - в каких современных ЧПУ, какие операционные системы используются.
Система ЧПУ | Операционная система |
---|---|
Siemens GmbH | |
840 D/ 810 D | Windows/UNIX Real Time |
840 Di | MS Win NT/ XP + RTX |
802 D | Real Time DOS |
802 S/C | Операционная система собственной разработки |
GE Fanuc | |
0T-D, 1018T, 3000C, 6M, 7,SYS P - Model E | QNX 6.2Windows NT |
160i-MB | Windows 2000 (ISO-DIN программируемая) |
Series 210 Is | Windowes CE 2.0 |
Series 180 Is | Windowes CE 2.0 |
Series 160 Is | Windowes CE 2.0 |
Балт-Систем СПб | |
NC201 | Операционная система собственной разработки (нет информации) |
NC110 | Операционная система собственной разработки(нет информации) |
NС210 | Операционная система собственной разработки(нет информации) |
MSH | |
MSH PC-104 | MS Win NT/ XP + RTX |
MSH TURBO-U | MS Win NT/ XP + RTX |
MSH TURBO-M | MS Win NT/ XP + RTX |
MSH TURBO-120M | MS Win NT/ XP + RTX |
FMS | |
FMS-3000 - Н.Новгород | Программное обеспечение системы реализовано на базе ядра жесткого реального времени с использованием библиотеки RT-Kernel, |
FMS-3100 - Н.Новгород | Программное обеспечение системы реализовано на базе ядра жесткого реального времени с использованием библиотеки RT-Kernel, |
Heidenhain (Германия) | |
TNC 145TNC 151TNC 155TNC 355TNC 4110TNC 426TNC 530 | Используются следующие ОС:QNX 6.2DOSWindowsUnixLinux |
Gildemeister | |
Eltra PilotEltra-pilot GD-4A | Windows NT4 |
MAHO (Германия) | |
MAHO 332MAHO 432 | MS DOS, MS Windows 3.x |
NCT | |
NCT 2000 | Linux RT или Windows RT |
Numerik | |
CNC 600CNC 645CNC 646 | Windows NT4 |
WinPCNC | одно-компьютерная система ЧПУ, построенная на платформе персонального компьютера с ОС Windows NT и расширением реального времени RTX 4.1 фирмы VentureCom |
КРТ4-00 - Контур | Терминальная частьMS Win NT/ XP + RTX |
Так какую ОС выбрать? Если рассматривать двухпроцессорную архитектуру ЧПУ, то на модуль РС, выполняющий терминальную задачу, лучше установить надёжную ОС с удобным интерфейсом (Windows NT), а на модуль NC, решающий геометрическую и логическую задачи, поставить ОС РВ, допустим QNX, которая хорошо структурирована, имеет развитый набор специфических механизмов реального времени, компактна и предсказуема.
Вычислительные мощности современных персональных компьютеров постоянно растут, и сегодня реально построение однопроцессорной системы ЧПУ. Для ее реализации необходимо объединить две задачи, PC и NC, под управлением единой ОС.
Нельзя сказать однозначно, какие ОС используют фирмы-поставщики ЧПУ при их создании. Т.е. нельзя выделить какую-то определенную систему среди прочих. Выбор Ос зависит от задач, которые она должна решать и от материальной обеспеченности конечного пользователя. Даже в рамках одной фирмы можно встретить большое количество различных СРВ.
Для достижения разных производственных целей имеет смысл использовать разные системы, лучше всего отвечающие тем или иным требованиям. Причем, иногда речь идет не только о системных характеристиках, но и о денежных затратах.
Еще раз следует особо отметить расширения для Win NT, как наиболее гибкую и оправданную систему, приобретающую все большую популярность среди ведущих разработчиков и продвинутых пользователей.
Лаборатория систем ЧПУ МГТУ "Станкин" © 2002-2024
Россия, Москва, Вадковский переулок, д. 3а Телефон: +7 (499) 972-9440 Факс: +7 (499) 972-1873 |