Нейтрино пролетело и ага...
АрхивКомпьютер без Microsoft подобен мороженому без кетчупа.
Некто Keck
Неистребима в человеке тяга к маленьким, но изящным вещицам [1]… Я запомнил ощущения, которые получил, когда несколько лет назад загрузил с дискеты демо-версию QNX и поразился, сколько всего на эту дискету уместилось. Поэтому неудивительно, что я с нетерпением ждал, когда станет доступно для загрузки новое творение — QNX RealTime Platform. И вот, свершилось…
На странице http://get.qnx.com предоставляется две возможности: скачать файл qnxrtp.exe (около 25 Мбайт) или образ CD-ROM для нарезки (около 90 Мбайт). В первом случае остальное (с возможностью выбора) докачивается после установки системы и подключения к Сети уже из нее. Установка (из Windows 98) прошла гладко, и на все про все ушло около 650 Мбайт. После перезагрузки оказалось, что загрузчик lilo (доставшийся от Linux) остался нетронутым, а выбор между Windows и QNX делается на уровне config.sys: загрузчик loadqnx.sys устанавливается как драйвер устройства.
Аромат Unix чувствуется сразу: текстовый режим и предложение ввести пароль. Попадаем в sh (shell), можно побыть и здесь, это обычный Unix-интерфейс. Но набираем «ph», и открывается Photon — графический интерфейс пользователя. В общем-то, ничего непривычного в нем нет. Стол с обоями, справа меню быстрого запуска, индикаторы загрузки процессора, памяти и сети, внизу панель задач с кнопкой «Launch» вместо «Старт». Все выглядит солидно, но в то же время просто.
Итак, первый шаг — докачиваем остальное. Перечислю некоторые дополнения. X in Photon — поддержка X Window. Игрушки — Photon Games (например, пасьянс «Солитер», но очень красивый), Doom, Quake 3. Шикарный пакет для разработчика — PhAB (Photon Application Builder), отладчик, поддержка Mesa и Glide, средства разработки мультимедийных приложений, 3D-engine Criterion от RenderWare, набор GNU-инструментов (компилятор gcc, отладчик GDB, утилиты). Да, еще Real Player 7.0 от RealNetworks. Из раздела Public Software упомяну скриптовые языки Python и Perl, редакторы vim и Elvis, отладчик DDD.
Процесс скачивания и установки проходит посредством Менеджера Пакетов (Package Mgr). Это интегрированный инструмент, позволяющий устанавливать пакеты как с CD, так и с сервера через Сеть. Сначала принимается информация об имеющихся пакетах, затем выбранные пакеты устанавливаются. Все прозрачно, лишних вопросов система не задает, и программы сразу можно запускать. Посмотрим, что получилось.
Утилиты настройки системы очень аккуратные и компактные, есть возможность без перезагрузки менять режимы дисплея (разрешение и глубину цвета), подстраивать вид стола и окон, задавать обои. Имеется Screen Saver. Таким образом, внешний вид регулируется, и эти возможности не очень отличаются от привычных в других интерфейсах.
Файловый менеджер по виду очень похож на Explorer, и тут сказать особо нечего за исключением того, что отсутствует drag’n’drop. Походив по дереву, увидел, что FAT-разделы диска и CD успешно примонтировались сами. Хотя обещается автоматическое примонтирование и разделов ext2 (файловая система Linux), но этого почему-то не произошло.
Есть и терминал (что характерно для *nix систем), не очень навороченный «свой» текстовый редактор NotePad (плюс vim и Elvis, но это на любителя), просмотрщик графики, калькулятор.
Теперь о средствах работы в Cети. Это, прежде всего, очень серьезный, несмотря на компактность, браузер Voyager (потомок модульного браузера Spyglass) с поддержкой HTML 3.2, фреймов, JavaScript, Java, шифрования SSL-128 (правда, для этого, похоже, нужна лицензия). Как plug-in пристегиваются Macromedia Flash 4, RealPlayer 7. Есть утилита дозвона Dialer и почтовый клиент. То есть в Сети работать можно.
В целом реализация протокола TCP/IP выполнена неплохо. Поддерживаются PPP, DHCP, NFS, RPC, SNMP. Это позволяет полноценно использовать связь как через Ethernet, так и dial-up, подключаться как к Интернету, так и к локальным и корпоративным сетям. Причем модульность позволяет широко варьировать соотношение между компактностью и возможностями (вплоть до стека TCP/IP из BSD 4.4).
Вкратце о мультимедиа. Проигрыватель вполне на уровне. Играет MP3, CD audio, MPEG-1, MPEG-2. Говорится о поддержке Dolby Digital AC-3 и DVD, но проверить не было возможности. Есть микшер, но он показался мне несколько громоздким. Воспроизведение MPEG-4-фильма не удалось, но это и не было неожиданностью. Ради интереса я запустил на воспроизведение сразу восемь файлов MP3, звук получился, конечно, жуткий, но все работало, единственно, при попытках подвигать окна и при смене формы курсора мыши у обрамления окон звук прерывался (по-видимому, в эти моменты Photon становится очень жаден до процессора, что, похоже, и послужило причиной описанного в постскриптуме казуса). Проигрывание одновременно трех Flash-файлов тоже оказалось безболезненным, при большем числе начинается торможение.
Система помощи, по-моему, великолепна. Вся электронная документация интегрирована в единое дерево, и ее просто много.
Теперь о русификации. Photon поддерживает русскую раскладку клавиатуры, но своих русских шрифтов в QNX нет: в Photon встроен растеризатор TrueType-шрифтов, и их можно занять у Windows. Эти шрифты (*.ttf) копируются в /usr/photon/font-repository, а затем в Font Server делается настройка алиасов. Переключение раскладки осуществляется по правому Alt. Кстати, консольный режим и X in Photon это решение не русифицирует, и здесь спасает только портирование средств русификации из Linux (вместе с кодировкой koi8-r). Более подробно о русификации можно почитать на сайте отечественных энтузиастов QNX RTP, где можно почерпнуть и массу другой полезной информации.
Самый богатый раздел — средства разработки. Впечатляет Photon Application Builder (PhAB). Это графическая среда разработки приложений для Photon, которая в какой-то мере напоминает Visual Basic, Delphi или KDevelop. То есть имеется палитра виджетов (и довольно богатая), их располагают в окнах и диалогах, настраивают свойства и присоединяют обработчики событий. Маленькое отличие: языком программирования является C (отчасти это можно объяснить позиционированием QNX RTP на рынок встроенных систем, для которых ограничения на ресурсы имеют существенное значение). Еще раз, документации по средствам разработки, API, технологии программирования просто море.
Теперь немного о том, что глазу незаметно. Система построена на основе микроядра Neutrino (размером около 32 Кбайт), реализующего лишь маленький набор ключевых сервисов: треды (threads), передача сообщений, семафоры, сигналы, управляемый по приоритетам планировщик задач. Переключение контекста происходит очень быстро (550 наносекунд для Pentium III), что обеспечивает быструю реакцию системы на события (то, что называется real time). Все остальные сервисы могут динамически подключаться к ядру, обеспечивая работу с файловой системой, сетью, работу очередей сообщений POSIX и драйверов устройств. При этом расширение функциональности системы не требует перекомпиляции и перезапуска чего не хватает той же Linux). В целом QNX RTP можно охарактеризовать как *nix-подобную, POSIX-совместимую, многозадачную, многопользовательскую, многопоточную операционную систему реального времени. С учетом двадцатилетнего опыта разработки фирмой QSSL (QNX Software Systems, Ltd.) систем для промышленности, связи, транспорта, медицины не стоит удивляться надежности, но можно восхищаться компактностью.
Отмечу бедность ассортимента приложений (тут же вспомнил BeOS) и в то же время очень приличный набор инструментов для разработчика. И это неспроста. На самом деле, по словам представителей компании, QNX RealTime Platform — это прежде всего платформа для разработки встроенных приложений, перед которой не ставится цель доминировать на рынке настольных систем. Хотя расширение ассортимента вполне может привести к «захвату» некоторой доли и здесь. Одним из путей увеличения разнообразия, помимо разработки «родных» приложений, вполне может стать портирование уже имеющихся на других платформах. Совместимость с POSIX, поддержка X Window (с помощью X in Photon) и наличие GNU-компилятора gcc означают возможность переноса программ из *nix (в том числе Linux). В ряде случаев будет достаточно перекомпиляции. И примеры тому уже есть (тот же софт из раздела Public Software). На сайте http://qnx.org.ru сообщается о портировании огромного числа программ из Linux. Кстати, слышно и о портировании LxRun, что позволит запускать Linux-программы без перекомпиляции.
В том, что QNX RTP сделана доступной «за так» для некоммерческого использования, чувствуется желание привлечь внимание к платформе (учитывая, что в нише embedded software сейчас бум) как пользователей, так и разработчиков. Но тут есть несколько тонких моментов, и прежде всего лицензия. В данном случае система не требует лицензирования до тех пор, пока разработанные приложения не начинают продаваться.
Хотя QSSL обещает открыть довольно значительную часть исходников (в том числе драйверов и ряда графических приложений), исходники самого ядра и основных менеджеров открываться не будут (что мотивируется обеспечением «целостности» и достаточностью ресурсов для самостоятельного развития системы). То есть QNX RTP свободна в смысле «free beer» («бесплатное пиво»). Это свойство, похоже, может сделать ее не привлекательной для тех разработчиков, кто сейчас сориентирован на Linux. Тем более что там прикладываются значительные усилия в разработке системы, соответствующей свободе в смысле «free speech» («свобода слова»). Необходимость лицензионных отчислений в таком критичном к стоимости секторе, как embedded, может стать решающим аргументом для отказа от этой платформы, несмотря на ее достоинства. С другой стороны, лицензия не требует предоставлять исходники своих разработок сообществу, как этого требует GPL, что с точки зрения сохранения конкурентных преимуществ может показаться привлекательным для фирм-разработчиков коммерческого программного обеспечения.
И QNX уже привлекла внимание ряда фирм. Так, 3Com, объявившая в середине мая о своей приверженности QNX, на днях разродилась Audrey Net appliance — компактным устройством для путешествий в Сети, ориентированным на домашнее применение. Свое будущее связывает с QNX и Hitachi Semiconductors — в устройствах на основе ориентированного на рынок встроенных систем процессора SH-4 (а в перспективе и SH-5). Ходят упорные слухи об интересе со стороны Cisco с ее многочисленными устройствами, формирующими инфраструктуру Сети. Хотя сейчас доступно лишь решение для платформы Intel x86, QNX становится многоплатформной системой (в стадии разработки и тестирования находятся реализации системы для процессоров PowerPC, SH4, MIPS и StrongARM).
P. S. Порадовавшись всему этому великолепию, я попробовал объединить приятное с полезным. Находясь в Сети и испытывая Voyager на богатых наворотами сайтах, я запустил на воспроизведение MP3-файл. Индикатор загрузки процессора зашкалил, все это некоторое время пошуршало, и… Бум! Я получил от системы замечательное сообщение, что она никак не может обнаружить COM-порт (к которому подключен модем). Естественно, Voyager замер, хотя соединение не разорвалось. После перезагрузки порт, конечно же, нашелся, но неприятный осадок — остался…
1 (обратно к тексту) - И, по-видимому, тяга взаимна, пример тому — тараканы.