X Window


8.1. ВВЕДЕНИЕ

Разработанный MIT в 1985 году, X Window (сокращенно X), все
чаще и чаще заявляет о себе, как о стандарте для реализации
графических интерфейсов. Речь идет о продукте freeware, кото-
рый, таким образом, можно получить бесплатно.
Нашей целью будет дать не полное и исчерпывающее описание X
Window, а лишь описать те стороны этого продукта, которые име-
ют отношение к функциональным возможностям и механизмам реали-
зации распределенных прикладных программ. Мы ограничимся опи-
санием версии X11R4,и лишь упомянем о некоторых изменениях,
внесенных в версию X11R5.

PHIGS (Programmer Hierarchical Interactive Graphic System) -
был принят в качестве стандарта для трехмерной графики. PEX
(PHIGS Extension to X Window) - должен позволять распределять
прикладные программы, обрабатывающую трехмерную графику.


8.2. ФУНКЦИОНАЛЬНЫЕ ВОЗМОЖНОСТИ

8.2.1. Концепции и предлагаемые возможности

Можно определить X Window как графический многооконный расп-
ределенный интерфейс. X Window определяет несколько концепций
и предлагает определенный набор возможностей, который мы и
рассмотрим далее.


Многооконность
--------------

Многооконность - это возможность открыть несколько окон и
выполнять в каждом окне свою задачу. Окна организованы иерар-
хически : существует окно, являющееся предком для всех окон
("root window") и всякое окно создается своим окном-родителем.
В каждый конкретный момент активно только одно окно - то, на
котором сосредоточен "фокус" (т.е. то окно, в которое можно
ввести информацию с клавиатуры или с помощью мышки).

Понятие дисплея
---------------

X Window выводит информацию на дисплей - это понятие объеди-
няет в себе :
- устройство отображения (монитор)
- один или несколько экранов
- клавиатуру и мышку.

Процесс визуализации можно адресовать с помощью имени дисп-
лея - это понятие включает в себя следующие элементы :
- имя машины
- номер устройства отображения
- номер экрана устройства отображения.

Например, имя_сервера:0.0 обозначает дисплей, связанный с
первым экраном первого устройства отображения машины имя_сер-
вера.

Распределение
-------------

X Window использует модель клиент-сервер. Клиент - это прик-
ладная программа. Сервер - это программа, которая управляет и
контролирует интерфейс визуализации (дисплей). Сервер, таким
образом, отвечает за вывод на экран, за управление мышью и
клавиатурой, и отслеживание действий пользователя.

Важно обратить внимание на то, что роли клиента и сервера
поменялись местами по сравнению с другими системами распреде-
ленной обработки (сокеты, TLI, NFS ...) : в X Window именно
сервер отвечает за взаимодействие с пользователем (в то время,
как в других системах за это отвечает клиент).

Прикладная программа-клиент - является либо локальной (т.е.,
расположенной на той же машине, что и сервер), либо удаленной.
Для того, чтобы запустить удаленную программу, достаточно до-
бавить, при запуске прикладной программы, опцию -display
(display имя_сервера:0.0).

X Window позволяет, таким образом, выполнять удаленные прог-
раммы с локальным выводом информации, причем делает это в ге-
терогенных средах.

Графика
-------

X Window включает в себя 2х-мерные графические функции. Эти
функции являются функциями довольно низкого уровня ; именно по
этой причине можно реализовать GKS и PHIGS в качестве надс-
тройки над X Window. Графические примитивы GKS и PHIGS преоб-
разуются в графические примитивы X. Таким образом, прикладные
программы порождают графические изображения более производи-
тельно в окнах X.


Пользовательский интерфейс
--------------------------

Пользователь манипулирует окнами и активирует прикладные
программы с помощью меню,пиктограмм ... Специальный клиент -
Window Manager - управляет окнами (создание,перемещение,изме-
нение размера ...).


Управление ресурсами
--------------------

Сервер X Window управляет ресурсами (окнами, графическим
контекстом, символьными шрифтами,таблицами цветов ...),каждый
из которых адресуется уникальным идентификатором (32-битовое
целое) и является разделяемым между процессами-клиентами. Если
только при их создании не было указано противное, окна-дети
наследуют ресурсы окон-родителей.
Для того,чтобы прикладная программа-клиент могла использо-
вать ресурс, управляемый сервером, или созданный другой прик-
ладной программой, следует сохранить идентификатор ресурса с
помощью механизмов обращения к серверу.


Символьные шрифты
-----------------

Шрифт описывает размер и форму группы символов. Описание
шрифта хранится в файле и загружается, по мере необходимости,
сервером. В X11R5 было разработано сервисное средство "X Font
Service", которое позволяет снять с сервера X обязанность уп-
равлять шрифтами и переложить ее на сервер шрифтов.


Внешний вид и внутреннее состояние
----------------------------------

X Window обеспечивает только основные механизмы, позволяющие
разрабатывать прикладные программы. Эта система гарантирует,
что внутреннее состояние ("feel") прикладной программы будет
одним и тем же,независимо от того, какая именно система ис-
пользуется. Наоборот, внешний вид ("look") зависит от реализа-
ции прикладных программ,использующих X Window. Например, если
окно будет закрыто, X гарантирует, что связанная с этим окном
прикладная программа, получит одно и то же сообщение об этом
событии (и будет иметь одно и то же внутренне состояние), не-
зависимо от того, как именно закрытие окна будет выглядеть на
экране. Внешний вид экрана относится к компетенции Window
Manager'а, который является клиентом X и который может быть
своим для каждого разработчика.


8.2.2. Механизмы реализации

Запросы и события
-----------------

Механизмы реализации являются существенно асинхронными: кли-
ент посылает запросы, которые помещаются в очередь на ожидание
обработки сервера. Клиент ожидает событий от сервера ; события
тоже помещаются в очередь (рисунок 8.1.). Кроме того, сервер
может переслать сообщение об ошибке - в случае, если запрос
невозможно выполнить.
Запросы, получаемые сервером, сохраняются в буферах. Содер-
жимое буфера передается серверу, если буфер полон, или если
клиент ожидает событий.
Клиент ожидает событий во всех окнах, в которых он явно зап-
росил получение специфицированных им типов событий.

Если сервер заметил, что в некотором окне произошло опреде-
ленное событие, он посылает об этом сообщение всем клиентам,
которые ждут данного сообщения в данном окне. Если таких кли-
ентов нет, сервер поднимается по иерархии окон и выполняет ту
же процедуру.

---------¬
----+ ¦
¦ ¦ ¦ компьютеp
L--+ ^ ¦
-------+--+-----+¬
¦ ¦ ¦------¬
L---------+------- ¦ -¬
oooooo¦oooooooo L-+-
-----+--T------- ¦
¦ ¦ --+--¬
¦ ¦ +----+
¦ ¦ ¦ ¦мышь
¦ ¦ L--T--
¦ ¦ ------------
¦ v v -----------------¬
------------+------¬ ¦ ¦
¦ ¦ ¦ 2 ¦
¦ 1 ¦ ¦ ¦
¦ ¦ L-------T--T------
L-------T----------- ^ ¦ ¦
^ ¦ ¦ 5 ¦ ¦ ¦ 6
3 ¦ ¦ ¦ 4 ¦ ¦ v
¦ ¦ ¦ ----+--+--------¬
¦ ¦ v 7 ¦ Xlib ¦
- L -+- - - - - - - - - - - - - - - - - - - - ¦
¦ L--------T-------
¦ ¦
¦ 8 ¦
+---------------------------------+


Рис. 8.1. - Принципиальная схема механизмов X Window.

1 - Сервер Х
- Управление ресурсами
- Обработка запросов
- Отправлений собщений о событиях
2 - Прикладная программа
Клиент Х
- Посылка запросов
- Обработка сообщений
3 - Очередь ожидания запросов
4 - События
5 - Очередь ожидания сообщений
6 - Запросы
7 - Сокет-Интерфейс
8 - Сетевой или локальный обмен данными

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

Обмен данными между прикладными программами
-------------------------------------------

Два клиента могут обменяться псевдо-событиями (с помощью
сервера) внутри одного окна ; этот тип события нельзя отфиль-
тровать. С помощью этого механизма можно создавать прикладные
программы, которые обмениваются сообщениями (размером до 20
байт), не выводя никакой информации на экран.
X Window позволяет двум прикладным программам обмениваться
данными в режиме Cut-Paste с помощью механизмов, описанных в
руководстве ICCCM (Inter Client Communications Conventions
Manual). Преобразование формата информации может быть выполне-
но посылающим клиентом по запросу принимающего. Обмен осущест-
вляется через сервер.

Протокол коммуникации
---------------------

X Window не зависит от используемых протоколов : существуют
реализации X над TCP/IP и DECnet.
Взаимодействие между сервером и клиентами использует socket
интерфейс : sockets UNIX внутри одной машины, sockets TCP меж-
ду двумя машинами, связанными сетью. В некоторых системах
вместо sockets используется разделяемая память, что позволяет
увеличить производительность в локальном случае. Кроме того,
протокол Х можно заменить механизмом прямого доступа к памяти
графической платы (DGA : Direct Graphic Access).

Протокол Х разрабатывался таким образом, чтобы иметь возмож-
ность вводить новые типы запросов,ресурсов и событий. Таким
образом, функциональные возможности системы можно расширить.

Окна и ресурсы
--------------

Если активируется окно, закрытое другим окном, содержимое
первого надо восстановить.При этом существует две возможности:
либо клиент перерисовывает изображение, либо его восстанавли-
вает сервер. Сервер восстанавливает окно лишь в том случае,ес-
ли он управляет атрибутом "backing store" и если клиент явно
приказал управлять этим атрибутом (не все серверы X позволяют
это делать).

Сервер управляет ресурсами (окнами,графическим контекстом
...). К этим ресурсам относятся его собственные ресурсы, а
также ресурсы, произведенные его клиентами.
Два клиента могут разделять ресурсы : например, работать од-
новременно в одном окне.
Window Manager - клиент X Window - такой же, как и все ос-
тальные, и использующий те же механизмы реализации.

Сервер и прикладные программы
-----------------------------

Сервер X - это процесс, независимый от ядра UNIX, реализо-
ванный в виде фоновой задачи (в отличие от некоторых других
многооконных систем, встроенных в ядро - например, Sunview в
системе SunOS).
Нет необходимости выполнять специальную установку на маши-
нахклиентах. Прикладные программы используют библиотеку Xlib,
которая управляет интерфейсом с сетью (Рис. 8.2.)

---------¬
----+ ¦
¦ ¦ ¦ компьютеp
L--+ ^ ¦
-------+--+-----+¬
¦ ¦ ¦------¬
L---------+------- ¦ -¬
oooooo¦oooooooo L-+-
-----+--T------- ¦
¦ ¦ --+--¬
¦ ¦ +----+
¦ ¦ ¦ ¦мышь
¦ ¦ L--T--
¦ ¦ ------------
¦ v v -----------------¬
------------+------¬ ¦ 2 ¦
¦ ¦ +----------------+
¦ 1 ¦ ¦ Xlib ¦
¦ ¦ L-------T---------
L-------T----------- ^ ¦
¦ ¦
¦ 3 ¦
----+-----------------T-------------+---------
¦
------+-------¬
¦ Xlib ¦
+-------------+
¦ Toolkit ¦
+-------------+
¦ 2 ¦
¦ ¦
L--------------


Рис. 8.2. - Сервер Х и прикладные программы Х.

1 - сервер Х
2 - прикладная программа-клиент Х
3 - Сетевой или локальный обмен данными


8.3. ПРОГРАММИРОВАНИЕ, ИСПОЛЬЗОВАНИЕ И УПРАВЛЕНИЕ

8.3.1. Программирование прикладных программ

Xlib
----

Xlib - это библиотека, которая позволяет разрабатывать прик-
ладные программы (клиенты) X Window. Речь идет о API
(Application Program Interface) довольно низкого уровня, уп-
равляющем основными механизмами : созданием окон, графическими
примитивами, позиционированием атрибутов ...
Xlib - это продукт freeware, являющийся фактическим стандар-
том (стандартизован ANSI) и обеспечивающий таким образом пере-
носимость программ.

Прикладная программа Х, использующая Xlib выглядит следующим
образом :

ПРОГРАММА 45

ourverture du display :
/*откpытие дисплея
в зависимости от имени дисплея, создает локальную или
удаленную связь с сеpвеpом */

creation de fenetres dans le display :
/*создание окон в дисплее
pечь идет о под-окнах (окнах, содеpжащихся в дpугих
окнах - по умолчанию, всегда существует хотя бы одно окно
"root Window", покpывающее весь экpан), наследующих атpи-
буты pодительских окон, если только явно не указано пpо-
тивное */

reguete specifiant les evenements a attendre sur les
fenetres ;
/* запpос, специфициpующий ожидаемые в окнах события */

affichage des fenetres a l'ecran ;
/*вывод окон на экpан */

attente d'evenements sur les fenetres ;
/* ожидание событий в окнах */

traitements de l'evenement regu ; envoi eventuel de
requetes au serveur ;
/* обpаботка полученных событий : пpи необходимости,
посылка запpосов сеpвеpу */

retour a l'attente d'evenements sur les fenetres.
/* возвpат к состоянию ожидания в окнах */

Прикладная программа Х представляет собой, таким образом,
бесконечный цикл ожидания событий, передаваемых сервером.


Инструментальные средства
-------------------------

Инструментальные средства ("toolkits"), реализованные с по-
мощью библиотеки Xlib, предназначены для облегчения задачи
разработчиков прикладных программ. Некоторые из этих инстру-
ментальных средств распространяются свободно по X11 : Athena
toolkit, Andrew toolkit ... Базовое инструментальное средство
- надстройка над Xlib, используемое в большинстве других инс-
трументальных средств, называется Xt (X Intrinsic).

Инструментальные средства используют объектно-ориентирован-
ные понятия : widgets - это классы объектов, с которыми ассо-
циированы методы, и которые используют механизмы наследования.
В наиболее развитых инструментальных средствах существуют,нап-
ример widget'ы label,command button или даже menu. Программи-
рование осуществляется путем использования процедур, манипули-
рующих объектами. Intrinsic определяют механизм создания и
использования widget'ов.

Инструментальные средства используются в соответствии со
следующими принципами :

- создание widget'ов
- отображение widget'ов
- обработка событий, связанных с widget'ами, путем запуска
действий, являющихся атрибутами, связанными с widget'ами.


Инструментальные средства облегчают труд программиста. Одна-
ко, прикладная программа, написанная с помощью инструменталь-
ного средства перестает быть мобильной при изменении инстру-
ментального средства. Кроме того, widget'ы имеют отношение,
как правило, лишь к пользовательскому интерфейсу ; когда же
речь идет о графическом содержимом окон, следует использовать
библиотеку Xlib (или библиотеки GKS или PHIGS, являющиеся
надстройками Xlib).

Motif и Open Look
-----------------

В настоящее время существуют две развитых среды, позволяю-
щих строить пользовательский интерфейс в X Window :
- Motif - фирмы OSF ;
- Open Look - фирмы UNIX International.

Каждая из этих двух сред предлагает похожую идеологию и
сравнимые инструментальные средства :
- руководство по стилю, цель которого обеспечить одинаковый
стиль интерфейса для всех прикладных программ (как на Ма-
кинтош) ;
- развитые инструментальные средства : XView для Open Look
и Xm для Motif.

Кажется, Motif выдвигается в качестве стандарта, обгоняя
Open Look.

Интерактивные средства порождения интерфейсов
---------------------------------------------

Для того, чтобы еще более упростить задачу разработчиков,
появились интерактивные редакторы интерфейсов. Эти редакторы
автоматически порождают программный код Motif и Open Look.
Программист рисует свой интерфейс с помощью пиктограмм и меню.

Вообще говоря, эти программные средства не заменяют знакомс-
тва программиста с Motif или Open Look, но дают ему возмож-
ность избежать кодирования примитивов, содержащих многочислен-
ные и довольно сложные параметры.

8.3.2. Использование прикладных программ

Запустите сервер Х на машине, управляющей тем экраном, с ко-
торым Вы хотите работать.

Если прикладная программа - клиент находится на той же маши-
не,что и сервер, ее следует запустить без дополнительных пара-
метров.

Если прикладная программа находится на удаленной машине, то
для успешной работы необходимо, чтобы этой машине было разре-
шено использовать сервер (см. параграф 8.3.3., рассказывающий
об управлении). Существует две возможности :
- подсоединиться к удаленной машине и
- либо изменить значение переменной окружения DISPLAY,
присвоив ей значение имя_сервера:0.0, а затем запустить
программу ;
- либо активировать программу с параметром
-display имя_сервера:0.0 ;
- выполнить команду удаленного запуска (что позволяет избе-
жать подсоединения к машине), при условии, что это позво-
ляет делать файл .rhosts на удаленной машине. При этом
прикладная программа выполняется с параметром -display.

Например, предположим, что пользователь, работающий под име-
нем gab с экраном машины ordinan, хочет выполнить следующие
операции :
- запустить Window Manager системы ordinbb, на которой gab
имеет счет и запись в файле .rhosts (файл содержит строку
ordinan gab): #rsh ordinbb /usr/bin/X11/hpwm -display
ordinan:0.0 &

- запустить прикладную программу xman на станции ordinzz ;
пользователь gab имеет на станции ordinzz счет titi (файл
.rhosts содержит запись ordinan gab) : #rsh ordinzz -l
titi /usr/bin/X11/man -display ordinan:0.0 &

8.3.3. Управление

Запуск сервера и клиентов
-------------------------

Сервер запускается с помощью командного файла, активирующего
в то же самое время несколько клиентов (обычно Window Manager
и несколько окон : xclock,xterm ...).
Остальные клиенты запускаются с помощью меню или непосредс-
твенно в окне, эмулирующем терминал (с помощью прикладной
программы xterm).

Атрибуты выполнения клиентов (цвет,символы ...) можно наст-
роить одним из следующих способов :
- указав в качестве значения параметра при запуске клиента
(только при вызове) ;
- изменив (что повлияет на всех пользователей) файл /usr/lib
/X11/ app_defaults/имя_прикладной_программы
- изменив (что повлияет только на данного конкретного поль-
зователя) файл $HOME/.Xdefaults.

Все эти механизмы управления атрибутами автоматически обра-
батываются в прикладных программах при использовании функций
XGetDefault() или XInitialise() библиотеки Xlib.

Производительность
------------------

Для того, чтобы эксплуатировать систему было удобно, необхо-
димо размещать серверы Х на мощных рабочих станциях, обладаю-
щих памятью соответствующего размера. Сэкономить при этом мож-
но на терминалах Х.
Что касается сети, механизмы асинхронной пересылки и хране-
ния информации в буферах вносят свой вклад в повышение произ-
водительности системы.

Загрузка сети
-------------

Загрузка в сети разумеется зависит от типа прикладных прог-
рамм. Вообще говоря, X Window почти не загружает сеть (инте-
рактивные прикладные программы), за исключением отдельных мо-
ментов - при пересылке образов, например. То, что сервер
сохраняет ресурсы, которые, таким образом, пересылаются только
один раз, сильно уменьшает трафик сети.

Для примера мы измерили загрузку в сети, порожденную прог-
раммой, выполняющейся на компьютере Cray и непрерывно, при
этом, отображающей векторные графические изображения на экране
станции Sun 3/260. Программа на ЭВМ Cray рисует графику с по-
мощью средств графической библиотеки PHIGS, являющейся надс-
тройкой X Window. Трафик, при этом, составляет примерно 10
К/сек, причем длина пакета в сети Ethernet равна в среднем 400
байт.

Безопасность
------------

Сервер Х доступен только для тех удаленных машин, которые
зарегистрированны в файле /etc/X0.hosts (постоянная авториза-
ция) или с помощью команды xhost (временная авторизация). Та-
ким образом, защита реализована от доступа машин, а не от дос-
тупа пользователей.

В версии X11R5 этот недостаток ликвидирован - введена коман-
да xauth.


8.4. PEX И ДРУГИЕ

8.4.1. Функциональные возможности и механизмы реализации PEX

PEX - это протокол, являющийся расширением X Window, и пред-
назначенный для управления трехмерными графическими изображе-
ниями.
PHIGS - это стандарт ISO/IEC 9295.1 интерфейсов прикладных
программ, описывающий функции управления трехмерными графичес-
кими изображениями.
PHIGS+ - расширяет возможности PHIGS по созданию реалистичных
изображений - тени,полутона,глубина ... PHIGS+ - проект стан-
дарта ISO (Черновое Предложение 9592.4).

PHIGS опирается на концепцию иерархически упорядоченной
структуры данных ; фундаментальным понятием этой концепции яв-
ляется понятие элемента структуры. Вся совокупность структур
хранится в CSS : Central Structure Store (Центральное Хранили-
ще Структур). Элементы структуры - это либо графические дан-
ные, либо собственные данные прикладной программы. Графические
данные - это либо графические примитивы - прямоугольники,текс-
ты,многоугольники, либо атрибуты этих примитивов (цвет,толщина
линии, индекс угла зрения наблюдателя ...). Сеть структур мож-
но сохранить на диске (архив PHIGS) и восстановить с диска.
PHIGS использует понятие виртуальной графической рабочей стан-
ции, что позволяет обеспечить независимость программ от пери-
ферийных устройств. Адаптация программного обеспечения к ре-
альному устройству выполняется драйверами.
Вывод графического изображения на экран выполняется путем
"пересылки" ("постирования") корневой структуры сети структур.
Модификация графического элемента требует полного изменения
изображения ; нельзя "постировать" подструктуру,"постировать"
можно только всю сеть - при этом образ полностью перерисовыва-
ется.

Как и Х, РЕХ разбит на библиотеку клиента и сервера (Рис.
8.3.) PHIGS - это API (Application Program Interface - Интер-
фейс прикладных программ) PEX. PEX использует концепции X
Window : дисплей, управление ресурсами ...

Благодаря РЕХ, прикладную программу, разработанную с учетом
стандарта PHIGS, можно переслать на другую машину, не изменяя
ее программного кода, и она будет работать.


------------------¬
¦ 1 ¦
+-----------------+
¦API(Xlib и PHIGS)¦
L------------------
^
2 ¦ 3
¦
v
-----------------¬
¦ 4 ¦
+-------T--------+
¦ 5 ¦ 6 ¦
L-------+---------

Рис. 8.3. - Отношения между PHIGS, X и PEX

1 - Прикладная программа
2 - обмен данных между процессами
3 - Протокол Х и PEX
4 - Общий сервер
5 - Сервер Х
6 - Сервер РЕХ

PEX можно инсталлировать в одном из трех возможных режимов :
- в режиме IMMEDIATE RENDERING - в этом режиме управление
структурами PHIGS выполняет клиент PEX ;
- в режиме PHIGS WORKSTATION - в этом режиме управление
структурами осуществляется сервером ;
- в смешанном режиме -в этом режиме структуры сохраняются и
клиентом и сервером.

Каждый из трех режимов имеет свои преимущества и недостатки :
- структурами управляет клиент (рис. 8.4) :
- скорость выдачи изображения на экран зависит от скорости
сети. Графический вывод выполняется путем передачи
структур: таким образом, вся совокупность структур пере-
сылается через сеть ;
- редактирование структур не зависит от сети, так как вы-
полняется клиентом - локально
- структурами управляет сервер (рис. 8.5) :
- скорость выдачи изображения не зависит от скорости сети ;
- редактирование структур (создание, удаление, вставка)
зависит от скорости передачи в сети, так как осуществля-
ется клиентом через сеть ;
- смешанный режим (рис. 8.6) : этот режим является, по-види-
мому оптимальным, но зато и самым сложным при инсталляции.
+
Локальное редактирование структур

-----------------¬ -----------------¬
¦ КЛИЕНТ +----->¦ СТРУКТУРЫ ¦
L-------T--------- L-----------------
Отображение
(постирование
структур)
¦
V
-----------------¬
¦ СЕРВЕР ¦
L-----------------

Рис. 8.4. Структурами управляет клиент.


-----------------¬
¦ КЛИЕНТ ¦
L-------T---------
Редактирование структур
¦
V Локальное отображение
-----------------¬ -----------------¬
¦ СЕРВЕР +----->¦ СТРУКТУРЫ ¦
L----------------- L-----------------

Рис. 8.5. Структурами управляет сервер.


Локальное редактирование структур

-----------------¬ -----------------¬
¦ КЛИЕНТ +----->¦ СТРУКТУРЫ ¦
L-------T--------- L-----------------
Обновление
модифицированных
структур
¦
V Локальное отображение
-----------------¬ -----------------¬
¦ СЕРВЕР +----->¦ СТРУКТУРЫ ¦
L----------------- L-----------------

Рис. 8.6. Смешанный режим : структурами управляют клиент и
сервер.


8.4.2. Альтернативы PEX

Альтернативами РЕХ являются распределенные версии нестандар-
тизованных графических библиотек. Ниже описываются три продук-
та, использующих этот подход.

DGL (Distributed Graphic Library)
---------------------------------

DGL - это распределенная версия библиотеки GL (Graphic
Library), использующейся на рабочих станциях IBM RS6000 и
Silicon Graphics. Основной принцип работы - пересылка вызовов
библиотеке с помощью механизма, аналогичного RPC (Remote
Procedure Call).

Распределенный PHIGIX
---------------------

PHIGIX - это коммерческая версия графического стандарта
PHIGS, реализованная фирмой CELTIS.
В рамках проекте EDF от фирмы CELTIS требовалось реализовать
распределенную версию PHIGIX, обеспечивающую, в частности,
связь между ЭВМ Cray и рабочей станцией HP 9000.
На рисунке 8.7. приведена схема архитектуры PHIGIX. Структу-
рами PHIGS управляет клиент. Обмен информацией между клиентом
и сервером использует механизм сокетов и XDR (eXternal Data
Representation). При этом используется собственный протокол
обмена PHIGIX.

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

DGPHIGS
-------

DGPHIGS - это распределенная версия библиотеки PHIGS, разра-
ботанной французской фирмой G5G. DGPHIGS делится на программ-
ное обеспечение клиента, управляющее структурами PHIGS, и
программное обеспечение сервера, управляющее графическими уст-
ройствами (Рис. 8.8). Сервер получает сообщения о событиях,
вызванных действиями клиента и отправляет такие же сообщения
клиенту. Клиент пересылает на сервер структуры PHIGS - для вы-
вода на экран. Сервер сохраняет структуры PHIGS до тех пор,
пока их не вытеснят другие структуры. Обмен структурами PHIGS
между клиентом и сервером выполняется с помощью библиотеки
sockets.
Такая архитектура позволяет значительно уменьшить объем пе-
ресылки в сети : например, операции по изменению точки зрения
выполняются прямо на сервере, без взаимодействия с клиентом.

-----------------------------¬
¦ GRAY ¦
¦ -------------------------¬ ¦
¦ ¦ 1 ¦ ¦
¦ ¦ ---------¬ ¦ ¦
¦ ¦ ¦2 ¦ ¦ ¦ ------------¬
¦ ¦ ¦------¬ ¦ ¦ ¦ ¦ --------¬ ¦
¦ ¦ ¦¦PHIGS¦ ¦ ¦<----- >¦ 4 ¦ ¦
¦ ¦ ¦L------ ¦ ¦ ¦ ¦ L-------- ¦
¦ ¦ L--------- ¦ ¦ L------------
¦ +------------------------+ ¦
¦ ¦ 3 ¦ ¦
¦ L------------------------- ¦
L------------^----------------
¦
¦
v
-----------------------------¬
¦ -------------------------¬ ¦
¦ ¦ 3 ¦ ¦
¦ +------------------------+ ¦
¦ ¦ 5 ¦ ¦
¦ +------------------------+ ¦
¦ ¦ 6 ¦<------> KОМПЬЮТЕР
¦ L------------------------- ¦
¦ 7 ¦
L-----------------------------

Рис. 8.7. - Архитектура PHIGIX.
1 - Ядро PHIGIX
2 - Структуры PHIGIX
3 - Коммуникационный интерфейс
4 - Архивы PHIGS
5 - Драйвер
6 - Ускоритель 3х-мерная графика
7 - Рабочая старция НР 9000


CRAY
---------------------¬
¦ 1 ¦
¦------------------¬ ¦ --------------¬
¦¦ 2 ¦ ¦ ¦ ¦
¦¦ ----------¬ ¦ ¦ ¦ -----------¬¦
¦¦ ¦ 3 ¦ ¦<+--------+>¦ 1 ¦¦
¦¦ L---------- ¦ ¦ ¦ L-----------¦
¦L------T----------- ¦ L--------------
L-------+-^-----------
¦ ¦
3 ¦ ¦ 5
¦ ¦
-------v-+----------¬
¦ -------+--------¬ ¦
¦ ¦ 6 ¦ ¦
¦ ¦---------¬ ¦ ¦
¦ ¦¦ 7 ¦ ¦<+---------> KОМПЬЮТЕР
¦ ¦L--------- ¦ ¦
¦ L---------------- ¦
¦ ¦
¦ 8 ¦
L--------------------

Рис. 8.8. - Архитектура DGPHIGS.
1 - Сервер вычислений
2 - клиент
3 - Структры PHIGS
4 - Архивы PHIGS
5 - События
6 - сервер
7 - Сохраненные структуры PHIGS
8 - Рабочая станция


8.5. ИТОГИ

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

X Window - это мощное инструментальное средство, позволяющее
разрабатывать прикладные программы. Прикладные программы мо-
гут, к примеру, выполняться на обрабатывающем сервере (сервере
вычислений) и управлять выводом изображений на экран и взаимо-
действием с пользователем на графической рабочей станции.

X Window - используется для управления двумерной графикой.
Использовать третье измерение позволяет РЕХ. РЕХ предлагает те
же возможности, что и X Window, а кроме того дополнительные
возможности PHIGS 3D. В настоящее время начинают появляться
реализации PEX. Так, например, X11R5 содержит PEX SI (Simple
Implementation - Простая реализация), который управляет струк-
турами PHIGS на сервере. Однако существуют и альтернативные
возможности, позволяющие распределить трехмерные графические
библиотеки.

БИБЛИОГРАФИЯ

X Window описывается во многих источниках. [GETTYS 88] опи-
сывает концепции и протокол. [JONES 89] содержит лучшее введе-
ние и удовлетворяет практические потребности.

Для тех, кто занимается разработкой прикладных программ Х с
помощью Xlib, предлагается серия книг O'Reilly [NYE 89].
Поскольку система X Window является сейчас очень распростра-
ненной, то в настоящее время существует очень много тру-
дов,позволяющих познакомиться с системой и ее эксплуатацией и
научиться программировать - например, [DUMEUR 90].

Сведения о программировании с помощью инструментальных
средств см. [YOUNG 89] и [ABSENTE 91].
Существуют руководства по Motif и Open Look, написанные их
разработчиками.

Что касается PEX - то литературы по этому вопросу пока до-
вольно мало : [ROST 88],[HESS 91].

Обновлено: 12.03.2015