среда, 10 ноября 2010 г.

X Window System - немного теории

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

Система X Window знает, что внутри нашего компьютера есть много разных программ, которые не умеют рисовать, у них нет карандаша, но они умеют командовать (это знакомые нам Gimp, OpenOffice, текстовый редактор). Такие программы называются Х-клиентами. Им всем нужно, чтобы кто-то нарисовал на экране то, что они хотят. Кроме них, существует программа Х-сервер, которая сидит с карандашом, умеет рисовать и умеет общаться с мышкой, клавиатурой, монитором по своим, серверным правилам.  Если бы не система X Window, то Х-клиенты бестолково бегали бы по компьютеру и раз за разом требовали нарисовать прямую линию или прямоугольник, а Х-сервер сидел бы в углу с карандашом и периодически обменивался замечаниями с мышкой и клавиатурой.
 Но система X Window научила их разговаривать по определенным правилам (прежде чем что-то потребовать, они должны сказать "пожалуйста", а в конце предложения поставить точку). И теперь Х-клиенты говорят: "Пожалуйста, нарисуй прямоугольник по таким-то координатам", Х-сервер рисует и отвечает: "Пользователь нажал на кнопку ОК, пожалуйста, отобрази ему нужную информацию". Эти правила, по которым общаются клиенты и сервер, называются протоколом X Window.

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

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

Хорошо, с клиент-серверной моделью и Х-протоколом все понятно, идем дальше. Что еще особенного есть в системе X Window?

Работа по локальной сети. Понятие Х-терминала.
X Window система позволяет реализовывать общение сервера и клиентов по локальной сети. То есть, мы можем запустить на одном компьютере Х-сервер, а на нескольких других - Х-клиенты и набрать в консоли компьютера с Х-сервером команду xhost + (она разрешает глобальный доступ к запущенному серверу. Если мы хотим дать доступ не всем, а определенному компьютеру, то после + нужно добавить имя этого компьютера. Если хотим убрать доступ - меняем + на -). Соответственно, мы также должны сказать машине с Х-клиентом, что она может обращаться по сети к Х-серверу (с помощью команды Xterm - это эмулятор терминала, осуществляющий связь между интерфейсом командной строки и интерфейсом X Window - ключа Display и указания сетевого адреса машины с запущенным сервером). После этого команды от Х-клиентов будут отправляться по локальной сети.
Компьютер, в котором запущен только Х-сервер, называется Х-терминалом.
Х-сервер в комплекте с аппаратно-программным обеспечением (если оно может выполнять команды Х-сервера и обслуживать клавиатуру и мышку) называются дисплеем.
А экраном называется та картинка, которую мы видим при запуске Х-сервера.
Еще одно понятие - ресурсы сервера. Для увеличения быстродействия для каждого приложения сервер хранит данные об используемых приложением шрифтах, курсорах и палитре.

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

Менеджер оконных приложений. Библиотека Xlib.
Оказывается, между Х-клиентом и Х-сервером находится еще кое-кто - Менеджер оконных приложений. По сути, он тоже является Х-клиентом - но он также управляет другими клиентами. Вспомним, что Х Window - оконная система, и каждое приложение запускается в своем окне. И именно Менеджер окон занимается внешним видом и размещением окон приложений, он обеспечивает выполнение операций с окнами: прорисовку рамок, меню, иконок и полос прокрутки.
Почти всегда пользователь работает не с одним приложением, а сразу с несколькими - браузер, джаббер-клиент, текстовый редактор, и на экране можно видеть, что приложения накладываются друг на друга, одно окно сзади, второе спереди, третье посередине. Как серверу определить, с каким приложением собирается работать пользователь, когда он кликает мышкой? За этим следит Менеджер окон. Он делает активным именно то окно, на которое указывает курсор.
Надо упомянуть об еще одной важной составляющей системы X Window - библиотеки Xlib. В этой библиотеке содержатся функции на С, реализующие Х-протокол. То есть, обращаясь к Х-серверу, наш Менеджер оконных приложений заглядывает в библиотеку Xlib, берет оттуда необходимую функцию и вызывает ее. Подробно об этом можно почитать в статье на rus-linux.net.
Теперь мы можем отобразить все это в совокупности на подробной картинке:


В конце теоретической части хотелось бы остановиться на еще одном пункте: не надо путать Менеджер оконных приложений (менеджер окон) с графической средой рабочего стола (KDE, GNOME, LXDE). Среда рабочего стола включает в себя Менеджер окон. Менеджер окон отвечает за наши приложения: занимается отрисовкой перемещения окон, изменением размеров, внешним видом. А среда рабочего стола отвечает за весь наш рабочий стол:)

В следующей, практической части, я планирую рассмотреть различные среды рабочего стола и менеджеры окон, поиграться с внешним видом экрана и выбрать наиболее удобное и приятное для меня оформление.

Комментариев нет:

Отправить комментарий