29-05-2008 17:22
Как вы уже поняли, X-модель использует хорошо известную идеологию "клиент-сервер". X-приложение является клиентом и и выполняется на компьютере, обычно рассматриваемым как "сервер". X-приложение управляет только "клиентской областью" окна. Оконные рамка, элементы управления, элементы изменения размера и т.д., отрисовываются и управляются программой "оконный менеджер". Таким образом, в процесс представления приложения вовлечены три приложения -- X-сервер, X-приложение (или клиент) и оконный менеджер. X-сервер запущен на компьютере, за которым сидит пользователь. Оконный менеджер может быть запущен на том же компьютере, что и X-сервер, или на том же компьютере, где запущено приложение, или вообще на совершенно другом компьютере. Приложение может быть запущено на том же компьютере, что и X-сервер, либо на том, на котором запущен оконный менеджер, либо вообще на другом компьютере. Вот в чем прелесть X-ов: нет разницы относительно того, где собственно выполняется программа. Вы получаете то, что желаете и именно там где этого желаете.
X-программы используют спецификацию "display" (которая может быть установлена с помощью переменной окружения DISPLAY или с помощью аргумента ключевого параметра -display в командной строке), чтобы определить гда располагается X-сервер. Формат этой спецификации следующий:
адрес:номер_устройства.номер_дисплея
Адрес -- это адрес компьютера, на котором запущен желаемый X-сервер. Номер устройства соотносится с тем, какой видеоконтроллер будет использован (X поддерживает использование нескольких видеоконтроллеров). Номер дисплея соотносится с тем, какой будет использоваться монитор (иногда также встречается термин head), подсоединенный к дисплейному устройству (X поддерживает multihead, т.е. видеокарты, которые могут управлять несколькими дисплеями). X-серверы прослушивают сетевое соединение на порту 6000 + номер дисплейного устройства. Т.е., если у вас имеется X-сервер, обслуживающий дисплейное устройство номер 1, то он прослушивает tcp на порту 6001.
В большинстве PC, имеется только одно дисплейное устройство, с одним подключенным монитором, поэтому численная часть для большинства спецификаций display будет ":0.0". Когда X-сервер запущен на том же хосте, что и приложение, то можно оставить адресную часть пустой, таким образом вся спецификация display будет выглядеть так: ":0.0".
Рассмотрим ситуацию, приведенную на Рисунке 2-1, для нее display-спецификация, для оконного менеджера будет ":0.0", так как он запущен на том же самом компьютере, что и X-сервер. Однако, для программы "xcpuinfo", display-спецификация будет "flour.kitchen.org:0.0", так как программа отображается на хосте "flour", но запущена на хосте "soda".
Гибкость, которую предоставляет X-window, предполагая, что элементы пользовательского интерфейса распределены в сети, делает X-window, работающей на платформе Unix (а значит и на такой Unix-подобной платформе как Linux), наиболее мощным и гибким программным окружением, во всей компьютерной индустрии. Почему? Потому, что основываясь на дизайне элементов X-ов, дополняясь полным интегрированием в сетевую подсистему TCP/IP операционной системы, мы получаем программное окружение, в котором ваше географическое местоположение абсолютно не мешает возможности использовать данный компьютерный ресурс.
Другими словам, если вы уехали в Гонконг и вам позвонили, сообщив, что мол "Мы не можем понять почему подсистема печати, "обрезает" чек на десять тысяч долларов. Не можешь ли ты разобраться? Посмотри пожалуйста на производственный компьютер", то все что необходимо для того, чтобы справиться с такой работой, это компьютер с X-сервером и Internet-соединение. И вся работа будет строиться так, как будто бы вы сидели прямо за монитором производственного компьютера. Вот почему X-ы такая замечательная штука.
Однако что делать, если у вас нет доступа к X-windows серверу? Или, что если X-сервер, к которому вы имеете доступ, не такой свежий и не удается запустить приложения, которые требуются, например, как это было у меня в случае с OS/2? Попытались запустить GIMP и десктоп рухнул?
<< Когда X-ов недостаточно | Multi Tool Linux | Введение в VNC >>