14 лет назад 30 апреля 2005 в 1:53 67

Компьютеры все настойчивее проникают в нашу бытовую технику. В продаже (правда, не у нас) уже есть холодильники, которые умеют заказывать продукты через интернет; унитазы, проводящие экспресс-анализ того, что в них попадает, и отправляющие результат по электронной почте лечащему врачу; роботы-пылесосы, объезжающие видимые препятствия и даже научившиеся не падать с лестниц. Управляют этими устройствами специальные операционные системы. Одной из них, разумеется, является Windows.

Строго говоря, Windows – это не единственная встраиваемая (Embedded) операционная система. Подобных решений существуют целые сотни. Самые известные из них – QNX, разнообразные клоны Linux, VxWorks, Symbian OS и т. д. (обширный список таких ОС есть на club.shelek.com/viewart.php?id=46).

У Microsoft есть две встраиваемые ОС – Windows XP Embedded и Windows CE (последняя версия – 5.0). Графическое их представление сильно приближено к аналогичному дизайну настольных систем. В этом можно убедиться, поработав с любым PocketPC. Те же панель задач, кнопка “Пуск”, Проводник. И набор поставляемых с операционной системой программ близок к традиционному, по крайней мере в случае с КПК. Кроме того, у Windows CE, как и у Windows 2000/XP/2003, 32-битное ядро. Но на этом сходство заканчивается. От настольных систем их отличают, в первую очередь, скромный по размерам объем программного кода, а также принадлежность к операционным системам реального времени (Real Time Operating System – RTOS).

Windows Embedded сама по себе не является RTOS, но для нее существуют специальные real-time-расширения – RTX. Ядро построено по гранулярному принципу, то есть из отдельных модулей, которые можно комбинировать в достаточно широких пределах. Это позволяет “заточить” систему под определенную аппаратную платформу и приспособить к конкретной цели использования. Другое, не лежащее на поверхности отличие, – огромное число поддерживаемых процессоров и драйверов периферийных устройств.

Самая важная и интересная часть RTOS – планировщик задач. Именно он определяет быстроту ее реакции на внешние события. В Windows CE планировщик поддерживает 256 уровней приоритета, а также вложенные прерывания. Время реакции на прерывание составляет примерно 10 мкс на процессоре200 МГц. Более подробное описание архитектуры приводится в документе, доступном к скачиванию на www.dedicated-systems.com/Encyc/BuyersGuide/RTOS/Evaluations/downloaddocpreview.asp?DOC=sample_EVA-2.9-OS-CE-01-I01. Там же можно найти очень много полезной информации о внутреннем устройстве других RTOS.

Операционные системы реального времени
Что же такое RTOS? Предположим, вы нажали клавишу на клавиатуре своего десктопного ПК. Если с момента нажатия до появления соответствующей буквы на экране монитора пройдет полсекунды или даже секунда-другая, ничего страшного не произойдет. А теперь представим, что по дороге на огромной скорости мчится автомобиль, и специальный датчик в нем обнаружил переключение светофора на красный свет. Если система, управляющая его движением, будет “думать” пару секунд перед тем, как включить тормоз, желающих прокатиться на такой машине окажется мало.

RTOS действительно должны работать в режиме реального времени, оперативно обрабатывая поступающие извне сигналы. Но здесь возникает вопрос: как понимать слово “оперативно”? Где-то это могут быть часы, а где-то это должны быть миллисекунды. Именно поэтому RTOS принято называть такие системы, которые на любое событие гарантированно реагируют в течение заранее определенного интервала времени.

В действительности, RTOS делятся еще на два типа: с жестким детерминизмом (hard RTOS) и слабым детерминизмом (soft RTOS). Для того чтобы ОС можно было отнести к первому типу, она должна уметь точно в срок обрабатывать любые поступающие события и работать в различных ситуациях. К этой категории ОС относится Windows CE. А во вторую группу попадает XP Embedded – такие системы гарантируют только то, что они будут “работать по мере сил и возможностей”. Когда система не может справиться с потоком происходящих событий, она просто “поднимает лапки кверху”, останавливая свою работу. Очень часто soft RTOS получают, просто надстраивая над ядром имеющейся ОС специфическую Real-time-оболочку. Такие программы поставляют многие сторонние разработчики, в основном они пишутся для UNIX/LINUX, но есть и для семейства Windows NT.

RTOS WINDOWS – ВОЗМОЖНО ЛИ ЭТО?
Среди производителей и пользователей укрепилось довольно-таки живучее мнение о неспособности всех систем Windows работать в жестких условиях реального времени и обеспечивать при этом необходимый уровень надежности и производительности. При этом звучат примерно такие высказывания:

– размер ОС слишком велик для того, чтобы использовать ее в простых устройствах;
– лицензирование Windows стоит денег, в то время как другие ОС – бесплатные;
– низкий уровень обеспечиваемой безопасности.

Разберем их по порядку. Объем кода встраиваемой операционной системы и в самом деле имеет огромное значение. Как правило, образ системы хранится в какой-нибудь энергонезависимой памяти (обычно это флэш) и оттуда загружается для выполнения. Стоимость устройства в большой степени зависит от того, какого объема флэш-память (1 или 100 Мб) будет в нем установлена.

Windows CE и XP Embedded решают эту проблему достаточно просто. В отличие от настольных ОС, они построены по компонентной технологии, то есть производитель может выбрать нужные ему функции и включать в состав образа только их. При этом минимальный размер Windows CE составляет всего 200 кб, Windows XP Embedded – около 5 Мб (всего в их состав может входить порядка 10 тыс. компонентов)! Понятное дело, при минимальном размере функций у ОС будет маловато, так что в большинстве случаев придется добавлять дополнительные компоненты.

Поэтому средний размер будет составлять несколько десятков мегабайт, что мы с вами и можем наблюдать – например, образ Windows CE, поставляемой в серии КПК HP iPAQ, составляет чуть меньше 20 Мб. Конечно, можно найти гораздо более компактные ОС, однако чаще всего они не могут предложить все разнообразие возможностей, удобство и привычность Windows. Не стоит также забывать и о совместимости этих систем с другими продуктами Microsoft, что может оказаться очень полезным.

Проблема лицензирования стара как мир – плюсы и минусы платного и бесплатного ПО у встраиваемых систем остались теми же, что и у настольных приложений. Единственное, пожалуй, отличие – ориентация Microsoft на более-менее крупных производителей, которые приобретают большие пакеты лицензий. Это вполне естественно – вряд ли кому-то придет в голову в одиночку сделать, например, смартфон, да еще и в единственном экземпляре!

Ну а раз они приобретаются “оптом”, цена в перерасчете на одну лицензию будет более низкой, что поможет снизить себестоимость продукта в целом. Цена одной лицензии для Windows CE сегодня составляет $3 (упрощенный вариант) и $16 (полная версия). По сравнению с конечной стоимостью на гаджеты, в которых установлена Windows CE, это сущие копейки. К слову, для Symbian эти цифры составляют соответственно $5 и $7,25.

Что касается безопасности, здесь преимущество продукции Microsoft очевидно. В эпоху расцвета Windows 95/98 компанию постоянно (и не без оснований!) упрекали в неспособности обеспечить надлежащий уровень безопасности ОС. Это, видимо, задевало отцов – создателей операционной системы, поэтому в более поздних версиях и, собственно, до сих пор они обращают на эту проблему самое пристальное внимание. И хотя сообщения о новых “дырах” продолжают поступать, их количество снизилось во много раз.

Так что опыт создания защищенных систем у Microsoft все же есть. Чего нельзя сказать о тех производителях, которые с самого начала ориентировались на встраиваемые системы. Наглядное тому подтверждение – появление в Москве в конце декабря телефонного Bluetooth-вируса, поражавшего смартфоны, работающие под управлением Symbian OS. Если вас серьезно интересует защита встраиваемых систем, можете заглянуть на http://www.windowsfordevices.com/articles/AT6765599475.html – там подробно описаны особенности подсистемы безопасности Windows CE.

ГДЕ ЭТО ИСПОЛЬЗУЕТСЯ
Встраиваемые операционные системы сегодня используются очень широко. Одно из наиболее интересных направлений – установка Windows в качестве бортовой системы автомобиля. У Microsoft есть специальное название для такой ОС – Windows Automotive (www.microsoft.com/automotive/windowsautomotive/default.mspx). Ядро этой ОС составляет Windows CE. А вся концепция Microsoft-Car стала известна как “Connected Car Initiative”. (Название, очевидно, намекает на постоянное взаимодействие интернета и автомобиля с установленной Windows.) Нужно сказать, что идея Microsoft пришлась по душе гигантам автомобилестроения: Windows на свои авто собираются устанавливать BMW, Citroen, DaimlerChrysler, Fiat, Subaru, Honda, Mitsubishi, NexTech, Toyota и Volvo – и это далеко не полный список. Чем же может привлечь автомобилиста машина с Windows?

А вот чем:
– удобный беспроводной доступ к интернету;
– автонавигационные системы и системы слежения за дорогой;
– удобная hands-free связь внутри салона;
– голосовое управление большинством систем автомобиля;
– мониторинг состояния транспортного средства и создание отчетов о нем в понятной для владельца форме;
– возможность интеграции с противоугонными системами.

Встретить BMW с Windows на борту у нас пока что довольно тяжело, а вот КПК и смартфоны с Windows CE – уже давно не редкость. Спектр подобных мобильных устройств и гаджетов чрезвычайно широк: это и обычные КПК, и мини-компьютеры военных, сложные измерительные, диагностические приборы, устройства позиционирования, навигаторы и даже сканеры штрихкодов. Несмотря на различную аппаратную базу, Windows прекрасно работает на любом из них – как раз в силу своей компонентной архитектуры, о которой упоминалось выше.

В бытовую технику тоже можно встроить Windows. Пока это в основном мультимедиа-центры и игровые приставки, но появляются все более и более экзотические модели. Как вам, например, понравятся наручные часы под управлением Windows? А велотренажер? Все они уже сегодня существуют и даже имеются в продаже.

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

QNX
Среди великого множества RTOS выделяется QNX, квинтэссенция систем реального времени. QNX, детище канадской компании QNX Software Systems, раньше использовалась в военных целях, а поэтому разрабатывалась особенно тщательно. С самого начала предполагалось, что она будет применяться для управления процессами в реальном времени (hard RTOS). Но сегодня у нее имеется приятный графический интерфейс и поддержка POSIX, что позволяет ей работать с множеством UNIX-программ.

У QNX микроядерная архитектура, причем ядро действительно маленькое и очень надежное. Его практически невозможно вывести из строя. Даже сбой в работе драйверов (“головная боль” для Windows) не сможет повлиять на работу QNX, так как они не входят в состав ядра. Система находит и блокирует сбойные участки кода, после чего продолжает работу.

Такой подход к организации модели драйверной подсистемы и наличие отличного инструментария для разработчика сделали QNX такой популярной. Демонстрационную версию QNX Neutrino 6.3 можно бесплатно скачать на сайте QNX Software Systems (www.qnx.com), ну а полная версия распространяется платно.

Среди интересных особенностей QNX можно упомянуть следующие:
– поддержка многопроцессорных систем;
– работа с множеством файловых систем;
– поддержка большинства сетевых технологий (IPv4, IPv6, IPSec);
– собственный веб-браузер QNX Voyager 2;
– виртуальная машина Java;
– поддержка Unicode.

По богатству возможностей QNX приближается к настольным системам вроде Windows и Linux, обладая при этом колоссальной надежностью. Вообще же в последнее время можно наблюдать размытие границ между RTOS и Desktop OS. С одной стороны, встраиваемые системы реального времени приобретают дополнительные возможности, с другой – появляются ориентированные на использование в режиме реального времени аналоги Windows и Linux, например Red Hat Embedded Linux.