Сегодня, для того чтобы работать со сложными приложениями, вовсе не обязательно обладать мощными графическими станциями, которые были необходимы в прошлом.
Рекламная шумиха, развернутая вокруг проекта Windows NT 4.0 Terminal Server Edition (ранее известного под кодовым наименованием Hydra), одновременно и отвлекает внимание пользователей от системы X11, и способствует повышению интереса к ней. Большинство считает, что X11 постепенно уходит в историю, а будущее принадлежит так называемым Windows-терминалам. Однако у меня есть свои контраргументы, доказывающие, что X11 остается чрезвычайно важной технологией.
- X11 - весьма жизнеспособная форма модели вычислений, основанной на использовании центрального сервера.
- X11 непрерывно развивается и совершенствуется. Разработчикам последних версий удалось создать фактически универсальную платформу.
Если вам до сих пор ничего не известно о системе X11 или X Window System (часто ее ошибочно называют X Windows, и это очень больно ударяет по самолюбию поклонников Unix), можно с уверенностью утверждать, что вы с головой ушли в мир, построенный вокруг персонального компьютера - машины с процессором Pentium, подключенной к серверу или работающей автономно. В этом случае для вас практически нет разницы между операционной системой и той настольной средой, с которой вы имеете дело. Доступ к удаленной машине фактически означает открытие файлов, находящихся на ее диске.
Даже если вы работаете с системой Citrix WinFrame, уровень взаимодействия двух компьютеров все равно очень сильно отличается от того, который обеспечивает X11. Далее мы более подробно остановимся на этом.
Сеть - основа X11
В мире Unix графическая система X11 работает точно так же, как и все другие приложения для настольных компьютеров. Такой подход принципиально отличается от подхода, принятого в операционной системе Microsoft Windows.
Графическая подсистема Windows является одной из основных составляющих частей операционной системы и непосредственно встроена в ее ядро. В случае сбоя графических компонентов или драйвера видеоплаты работа Windows 95 и Windows NT 4.0 прекращается и нужно делать перезагрузку.
X11 работает на уровне системы, расположенной вне ядра ОС Unix, не имеет непосредственного доступа к наиболее важным системным компонентам и не может своими некорректными действиями полностью нарушить функционирование системы. При аварийном завершении приложения X11 достаточно перезапустить это приложение. В самом худшем случае придется вернуться в режим командной строки и повторно запустить графическую подсистему.
Подобно Citrix WinFrame и протоколу ICA, средства X11 могут применяться для запуска программ на удаленной системе с отображением результатов их работы на компьютере, который стоит на вашем рабочем столе. Но на этом сходство X11 и WinFrame/ICA заканчивается.
При работе на автономной рабочей Unix-станции X11 также разбивается на две части. На локальном компьютере запускаются как ее клиентские, так и серверные компоненты. (В случае использования Citrix WinFrame и ICA делать этого не имеет смысла. ICA просто добавляет в графическую подсистему еще один уровень, обеспечивая тем самым выполнение операционной системой функций, подобных функциям X11, наличие которых ранее не предусматривалось.)
Сервер в роли клиента
Новички часто путают функциональные части X11. На самом деле в состав системы входят:
- сервер X11;
- протокол X11;
- клиентское приложение X11;
- диспетчер окон.
Сервер X11 устанавливается на настольном компьютере и отвечает за локальную обработку всех запросов, содержащихся в сообщениях X-протокола. Протокол позволяет передать все операции, необходимые для обновления изображения на экране, перемещения мыши, изменения положения курсора, изменения местоположения окон и т. д. Клиентское приложение X11 может располагаться как на локальной Unix-станции, так и на удаленном сервере.
Нетрудно заметить, что такое размещение совершенно не соответствует традиционным представлениям об архитектуре клиент-сервер. Если только приложения не выполняются локально, X-сервер выполняет роль клиента, а X-клиент - роль сервера. Это происходит потому, что X-сервер представляет собой программу, обрабатывающую графические функции X-клиента, работающего на Unix-сервере. Например, X-клиент (допустим, электронная таблица, поддерживающая X-технологию) может обратиться к X-серверу с запросом на вывод меню и задача сервера - отобразить это меню на экране.
Обе составные части системы (X-сервер и X-клиент) выполняют свои функции независимо от того, запускаете ли вы свои программы локально или на удаленном компьютере. Поэтому любое приложение, поддерживающее X11, автоматически наследует возможность удаленного выполнения. Это очень важная особенность, отличающая X-приложения от обычных приложений Windows.
Другое отличие состоит в том, что хотя X11 и предоставляет услуги графической настольной среды, она сама по себе не является таковой. Изящные пиктограммы, заголовки и окаймления окон, панель задач и другие компоненты дружественного экранного интерфейса, которые являются составной частью графической подсистемы Windows, вынесены за рамки X11. Все они поддерживаются дополнительными, основанными на технологии X11 диспетчерами окон (например, FVWM, OpenWindows, Motif и рядом других). Правда, разделение функций в действительности не всегда так же четко выдерживается, как формулируется, но это уже тема отдельной статьи.
Другими словами, диспетчер окон определяет внешний вид экранного интерфейса. Как правило, он запускается как локальное приложение вместе с X-сервером, хотя может работать и на удаленной машине, если локальная версия не удовлетворяет предъявляемым требованиям. Диспетчеры окон полностью взаимозаменяемы и могут переключаться в буквальном смысле слова на ходу.
Проблемы X
Даже если вы запускаете компоненты X в среде Unix, их размеры дают о себе знать. X11 отличается чрезвычайной громоздкостью. Считается вполне нормальным, если она занимает от 10 до 20 Мбайт памяти. Протокол X11 рассчитан на обработку огромного числа событий. Как и в случае Citrix WinFrame или ICA, при нажатии любой клавиши на клавиатуре или поступлении сигнала от другого устройства ввода генерируются соответствующие команды X-протокола. Такая технология подразумевает очень интенсивный обмен сообщениями между настольным компьютером и удаленной машиной. Простое перемещение мыши по экрану может породить несколько сотен команд X-протокола.
Чаще всего X служит для организации экранного интерфейса настольного компьютера, подключенного к локальной сети. Но в течение многих лет производители пытались разработать собственные версии протокола X11, которые предъявляли бы не столь высокие требования к пропускной способности сети и удовлетворялись бы возможностями аналоговых модемов. В конце концов с ростом скорости модемов и появлением более экономных версий протоколов было найдено нечто вполне работоспособное. Последние версии X11 используют специальные алгоритмы сжатия, позволяющие еще больше снизить потребности в пропускной способности сети.
«Облегченному» протоколу Citrix ICA не нужна такая высокая скорость, но это достигается ценой определенного компромисса. В многопользовательской среде приложения X11 ведут себя куда более интеллектуально; скажем, практически неограниченное число людей может работать с единственным экземпляром текстового процессора, реализованного в форме клиента X11. В то же время каждый пользователь WinFrame вынужден запускать собственный экземпляр одного и того же приложения (хотя это и не приводит к дублированию отдельных системных файлов и разделяемых библиотек). Поэтому масштабируемость X11 всегда определялась доступной пропускной способностью. Один Unix-сервер может обслуживать сотни пользователей - если пропускной способности сети для этого достаточно. Возможности же масштабирования систем ICA зависят от характеристик сервера. Большинство серверов Citrix WinFrame поддерживают не более 50 пользователей. Это объясняется повышенными требованиями к производительности центрального процессора и емкости оперативной памяти.
Новое поколение X
Еще одна проблема: для нормальной работы X-систем требуются мощные специализированные платы с поддержкой двухмерной и трехмерной графики. Сегодня на рынке есть замечательные платы - стоимостью в 100-200 долл. для ПК и до 1000 долл. для профессиональных рабочих станций.
На самом деле многие графические платы и микросхемы для ПК (например, микросхема 3Dfx или набор микросхем Voodoo2) столь же хороши или даже лучше, чем их эквиваленты, которыми комплектовались младшие модели машин Silicon Graphics всего несколько лет назад. Даже очень мощные платы (например, выпускаемые компаниями Evans&Sutherland и Intergraph) имеют интерфейс PCI и часто поставляются вместе с драйверами как для Windows, так и для Unix. Разница в производительности сейчас настолько мала, что создатели мультимедиа-продукции нередко предпочитают покупать многопроцессорные системы под NT, которые не уступают по мощности конкурирующим компьютерам SGI, а стоят гораздо дешевле.
Последние разработки, касающиеся протокола X11, особенно воплощенные в его версии Broadway, позволяют решить эти задачи. Но многие считают, что протокол Broadway появился слишком поздно, а его достоинства слишком незначительны.
Производители пытаются преодолеть возникающие затруднения с помощью собственных уникальных разработок. Для поддержки удаленных систем создаются альтернативные версии X-протокола, устраняющие избыточность пересылаемой информации и буферизующие больший объем графических данных.
Один из производителей пошел еще дальше, убрав большую часть компонентов X-сервера с локальной станции и перенеся их на удаленную машину. Компании Graph-On, в течение довольно длительного времени работающей с технологией X11, удалось создать продукты, у которых почти все компоненты X11 размещены на удаленном сервере, а на локальную станцию пересылается только самое необходимое. Взаимодействие между удаленным сервером и локальным компьютером осуществляется при помощи оригинального протокола RapidX. Клиентские продукты компании Graph-On (GO-Global для ПК и GO-Joe для JavaStation) по сравнению с другими реализациями X занимают крайне мало места. Версии для ПК требуется всего лишь около 300 Кбайт.
Эта важная разработка доказала, что программы X11 могут выполняться даже в такой миниатюрной среде, как персональные цифровые помощники. Сетевые компьютеры, созданные на базе технологии Java, используют Java-клиент GO-Joe для соединения с удаленными серверами. При этом не нужно втискивать в ПЗУ сетевого компьютера огромного размера X-сервер. Такой подход превращает сетевые компьютеры в нечто среднее между X-терминалами и рабочими станциями на базе Java и существенно снижает их стоимость и требования, предъявляемые к емкости оперативной памяти.
При достаточном количестве серверных ресурсов этот способ организации сред X11 позволяет многократно увеличить производительность приложений X11. Как X-клиент, так и X-сервер выполняются на сервере, на котором нужно устанавливать больше оперативной памяти и более быстрый процессор.
Следует, однако, учесть, что вы имеете дело с трехзвенной системой, обладающей двумя компонентами, которые можно перемещать. X-клиент и X-сервер могут выполняться на одном и том же удаленном сервере. Это позволяет значительно ускорить обмен информацией между X-сервером и X-клиентом по сравнению с вариантом, в котором они действительно общались по сети. Таким образом, несмотря на то что в целом X-система становится несколько менее масштабируемой, с клиента снимается значительная часть вычислительной нагрузки, в результате чего повышается производительность.
Можно также разделить машину, за которой непосредственно работает пользователь, на машину X-сервера и машину X-клиента. Но поскольку X-клиент и X-сервер не обязаны выполняться на одном и том же компьютере, может оказаться более экономным не выделять под оба компонента одну высокопроизводительную машину, а запустить их на двух менее мощных, организовав между ними быстрое сетевое соединение.
Между X и Windows
Пользователи Windows-терминалов, желающие получить доступ к X-приложениям, выполняющимся на Unix-сервере, вынуждены запускать на сервере WinFrame еще X-сервер для ПК, потребляющий чрезвычайно много системных ресурсов. В отдельных случаях не удается даже получить доступ к X-клиентам. Некоторые X-серверы на базе ПК так тесно взаимодействуют с интерфейсом графических устройств NT (Graphics Device Interface, GDI), что программное обеспечение X Window оказывается несовместимым с WinFrame и Windows NT Terminal Server Edition. (Обе указанные технологии интенсивно используют функции NT GDI.)
Для того чтобы преодолеть эту несовместимость, компания Graph-On выпустила программный продукт GO-Between. В этом случае на машине, работавшей под управлением WinFrame, устанавливается программное обеспечение RapidX. В результате, вместо того чтобы тратить на каждого пользователя 20 Мбайт памяти, поглощаемых WinFrame, достаточно будет выделить всего лишь 400 Кбайт. Таким образом вы экономите огромное количество ресурсов сервера.
Некоторые многопользовательские системы на базе NT также обеспечивают доступ систем Unix и X-терминалов к приложениям Windows. В продуктах типа Insignia Solutions NTrigue, Tektronix WinDD и ExodusTech NTERPRISE реализован X-протокол.
К сожалению, новые версии программного обеспечения NTrigue компании Insignia Solutions больше не доступны, так как лицензия на этот продукт была продана Citrix. По-прежнему пользуется популярностью программное обеспечение Tektronix WinDD - одна из самых ранних систем класса Virtual NT, совместимых с X-технологией. Компания ExodusTech избрала несколько иной подход. Система NTERPRISE работает в Windows NT 3.51 как обычное приложение, и в отличие от WinFrame ее нельзя назвать интегрированным программным обеспечением. Такая технология наверняка будет по достоинству оценена пользователями, которые не cмогут работать с приложениями третьих фирм из-за их несовместимости с системами Virtual NT.
В комплект поставки операционной системы Windows NT Terminal Server Edition включена новая версия промежуточного ПО MetaFrame производства Citrix (ранее этот продукт назывался pICAsso). С помощью MetaFrame пользователи получают доступ к X-системам. Подобные системы позволяют применять готовые приложения для Windows, разработанные такими компаниями, как Microsoft, Lotus и даже Macromedia, и выводить результаты работы на мониторы компьютеров, функционирующих под управлением Unix, или на X-терминалы. Стоимость аналогичных продуктов для ОС Unix значительно выше.
Возможность беспрепятственного доступа к необходимой информации - одно из важнейших свойств сетевых компьютеров.
Со скоростью X-терминалов
Многие производители, выпускающие сегодня сетевые компьютеры на базе технологии Java или Windows-терминалов, ранее занимались производством X-терминалов. В сущности, X-терминал представляет собой усеченную Unix-систему, состоящую из X-сервера и диспетчера окон, которые размещены на диске или в постоянной памяти. Создатели этих устройств, как правило, направляли свои усилия на ускорение графических операций и совершенствование удаленного доступа.
На первом этапе эти производители фактически взяли X-терминалы и добавили к ним виртуальную машину Java. Некоторые разработчики идут дальше и заменяют базовую операционную систему Unix на JavaOS. В Windows-теминалах базовая ОС заменяется на Windows-подобную среду, в которой работает ряд дополнительных протоколов (например, Citrix ICA).
При работе в сети свойства X-систем будут напоминать о себе, независимо от того, построены они на базе технологии Java или Windows. Многие сети сегодня создаются с применением комбинации этих средств. X-протокол в любом случае функционирует в сетевой среде: как при использовании X-серверов на базе ПК, так и при работе с промежуточными средствами, описанными в данной статье.
Несмотря на то что сама суть протокола остается неизменной, между отдельными его версиями имеются очень существенные различия. Производители уже поняли, что все возможности X-протокола практически никогда не потребуются, и намерены оставить в собственных его реализациях самое необходимое.