- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF130:Что за штука
Материал из Linuxformat.
Что за штука… MicroXwin?
- Новая оконная система бальзамом оросит душу разработчиков встраиваемого Linux. Марко Фиоретти объяснит, почему...
- Так что же за штука MicroXwin?
MicroXwin (http://www.microxwin.com) – заменасистеме X Window System, обычно применяемой в Linux и Unix.
- Хорошо, а что за штука X Window System?
X Window System, или просто X – стандартная система, используемая всеми приложениями Linux и Unix для взаимодействия с графическими драйверами с целью отображения объектов, операций с окнами, контроля движений мыши и т. д. Особую гибкость системе X придают два свойства: архитектура клиент–сервер и сетевая прозрачность.
- Что означает «архитектура клиент–сервер»?
Используя ПО с графическим интерфейсом (GUI) на основе X, вы всегда имеете дело с двумя совершенно разными программами: X-сервером и X-клиентом. Сервер контролирует графический чипсет компьютера и отображает изображение на мониторе. Клиенты – это прикладные программы вроде OpenOffice.org, GIMP или Firefox. Если вы предпишете им открыть окно или нарисовать меню, они обратятся с соответствующим «предложением» к X-серверу, как к распорядителю ресурсов. При нажатии кнопки или перемещении мыши сервер сообщает об этом клиентам, чтобы они могли реагировать на ваши действия.
- А как сервер общается с разными клиентами?
Как правило, X-клиенты пишут с помощью высокоуровневых графических инструментариев, типа GTK или Qt. А с сервером они связываются по протоколу X Window System, применяемому в низкоуровневых программных библиотеках под названием Xlib.
- Осталось объяснить, что такое сетевая прозрачность...
Это означает, что X-клиент – то есть используемое вами ПО – может работать вовсе не на том компьютере, за которым вы сидите, а вы даже не заметите разницы. X-сервер на вашем компьютере будет взаимодействовать с удалённой программой тем же способом, что и с локальной. Именно сетевая прозрачность делает такие проекты, как Linux Terminal Server, полезными и простыми в настройке.
- Зачем тогда нужен MicroXwin? Чего нам не хватает в X?
При обычной работе – всего хватает. Однако в ряде других ситуаций данное решение слишком сложно: «виноваты» те самые функции, что придают ему удобство и гибкость. Сетевая прозрачность и протокол X сильно «утяжеляют» сообщения, пересылаемые между сервером и клиентами. Многоступенчатый процесс пожирает уйму процессорного времени, даже если клиент и сервер выполняются на одной машине. В последнем случае дело осложняется непрерывным переключением контекста: ядро постоянно «прыгает» между клиентами и сервером (это необходимо для взаимодействия между ними).
- Ну и что? Процессоры в наше время мощные, память дешева...
Для настольных компьютеров – да. Но ведь Linux работает в бесчисленных встраиваемых устройствах, от мобильных телефонов и автомобилей до домашней электроники. Процессоры таких приборов (например, ARM 9) заметно «тормозят», выполняя все формальности X Window System (а порой и неспособны её вытянуть). Система MicroXwin разработана специально для таких случаев, хотя использовать её на настольном ПК тоже можно.
- А в чем главная внутренняя разница MicroXwin и X?
То, что MicroXwin отказывается от описанных выше двух свойств, а значит, будет гораздо быстрее и компактнее обычного X-сервера.
- За счет чего?
MicroXwin – первая графическая система, которая может интегрироваться в ядро Unix/Linux как модуль. Она копирует данные прямо из пользовательского пространства в буфер кадров, а от туда – на экран. Это полностью устраняет проблему переключения контекстов и позволяет начать вывод графики на более ранних стадиях загрузочного процесса.
- Есть ли другие компоненты?
Кроме собственно ядерного модуля, есть ещё две главные библиотеки. Одна их них служит для отправки графических команд на модуль и будет заменой Xlib (720 КБ). Вторая библиотека является основой для написания расширений MicroXwin (7 КБ). Модуль ядра для платформы х86 «весит» около 300 КБ.
- Велик ли выигрыш в скорости?
Сайт MicroXwin сообщает о значительном преимуществе в скорости по сравнению с X.org (стандартным X-сервером большинства современных дистрибутивов) по результатам тестов Gtkperf и X11perf. Все подробности – на сайте.
- И сколько памяти требует MicroXwin?
Для модуля необходимо около 500 КБ памяти ядра, против 18–20 МБ, используемых (неработающим) сервером X.
- Невероятно! И всё это совместимо со стандартными X-клиентами?
Да – ведь интерфейс прежний! Разработчики добиваются, чтобы программы могли работать на MicroXwin после простой перекомпиляции или предписания использовать библиотеки MicroXwin вместо традиционных Xlib. К настоящему времени цель почти достигнута.
- Ну, а стабильность? Тесная интеграция между графикой и ядром Windows — одна из причин появления «синих экранов смерти»...
Хотя и нечасто, у традиционных X-серверов тоже случаются сбои, об этом любой Linux-пользователь знает. Что касается MicroXwin, то разработчики заметили, что ошибки в любом драйвере или модуле ядра способны привести к зависанию или краху Linux.
- То есть, если система с MicroXwin «падает»...
...значит, в модуль данной версии вкралась ошибка; такое бывает и в X. Тут нет связи с тем, что это модуль ядра, а не сервер пользователь- ского пространства.
- MicroXwin работает только на Linux?
Согласно сайту, новую систему легко портировать на любую платформу.
- Могу ли я написать клиент MicroXwin, используя мой любимый инструментарий или оконный менеджер?
Конечно, потому-то и борются за совместимость со стандартным интерфейсом Xlib. Чтобы ваши приложения работали с MicroXwin, достаточно иметь библиотеки и модуль ядра.
- Секундочку: скажите, а это всё свободное ПО?
Библиотеки – да, а вот модуль ядра проприетарный.
- Ну вот, модуль ядра — и проприетарный…
Такой вопрос задавали на сайте MicroXwin. Пересказываю своими словами: чтобы программы были совместимы с MicroXwin и оставались в сфере открытого ПО, разработчикам FOSS необходимы только свободные библиотеки. Программисты MicroXwin объяснили, что деньги от лицензирования модуля ядра нужны им для продвижения разработки MicroXwin на системах Linux и Unix. Если задуматься, аргументы убедительные, и всё это не должно негативно сказаться на развитии свободного ПО.
- Почему?
Как мы уже упоминали, современным ПК и ноутбукам хватает мощности, чтобы обойтись без MicroXwin. Модуль ядра MicroXwin, лицензированный на условиях GPL, пригодился бы разве что для оживления списанных компьютеров х86, но платить за это никто не будет. Основные рынки MicroXwin – где новая система будет полезной, доходной и привлекательной – это смартфоны, мобильные интернет-устройства, нетбуки и прочие встраиваемые системы. Но большинство этих платформ в любом случае закрыты, то есть модифицировать или устанавливать соответствующие ОС имеют право только производители устройств.
- То есть лицензия ядерного модуля не коснется конечного потребителя и разработчика?
Да, верно. Но она очень даже касается производителя аппаратного обеспечения, желающего расширить сбыт своей продукции. Покупка лицензии MicroXwin тут же делает его разработку совместимой с тысячами готовых Linux-приложений. Поэтому в долгосрочной перспективе можно продать значительно больше устройств, чем без лицензии.
- Так что же год грядущий готовит MicroXwin? Куда движется проект?
Версия MicroXwin 2.0, включающая обновленную поддержку XRender, была выпущена в январе. Кроме того, разработчики планируют закончить в 2010 году портирование на микропроцессоры ARM. Это чипы для нетбуков и мобильных интернет-устройств, выпуск которых на потребительский рынок ожидается в текущем году.