Опубликован: 14.12.2004 | Уровень: для всех | Доступ: платный | ВУЗ: Компания ALT Linux
Лекция 17:

Графическая подсистема X11

< Лекция 16 || Лекция 17: 123456

The X Window System

Оконный интерфейс

Заметим: из того, что система использует только один способ взаимодействия с человеком, совсем не следует, что и пользовательские задачи должны подлаживаться под него. В частности, если машина обладает графическими средствами ввода/вывода, с их помощью можно организовать совершенно иной по своей сути интерфейс – оконный. На сегодня это один из немногих продуманных способов организации интерфейса, восходящий, строго говоря, к процедурной организации среды (см. [ 3 ] ). Но опять-таки, из проективности системы не следует проективность всех ее приложений. Даже наоборот: проективная система – универсальный инструментарий для решения любых классов задач, так что именно с ее помощью должна хорошо решаться задача построения специализированной процедурной системы.

Оконный интерфейс определяет не только основные элементы взаимодействия с пользователем ("окошки–меню–кнопочки"), но и структуру авторизации в подсистеме. Пространством ресурсов оконная система представляет экран. Экран – это прямоугольник, на котором отображаются команды графического вывода и организуется обратная связь с устройствами графического ввода. Пример обратной связи – указатель мыши. Сама мышь – довольно простое устройство ввода, способное передавать информацию о его перемещении и состоянии кнопок. Указатель же отображает мнение подсистемы об абсолютных координатах гипотетической "точки ввода".

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

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

X-клиент и X-сервер

В начале 80-х существовала некая "Операционная система V" (The V System), а при ней – оконная подсистема W (следующая буква алфавита после V, а заодно – первая буква слова Window). К 1984 году совместными усилиями Массачусетского технологического института (MIT) и исследовательского отделения Digital Equipment Corporation (DEC) эту оконную подсистему сделали системно-независимой (crossplatforming, или, в американском стиле, X-platforming). Соответственно и название проекту дали – The X Window System (следующая буква алфавита после W. Обратите внимание на то, что все заглавные буквы X в этой лекции – латинские, а не русские Х). Проект был настолько наукоемок и настолько полно охватывал тогдашнюю область задач, связанную с графикой, что ему так и не возникло никаких серьезных альтернатив. X Window System (или X11) постоянно развивается, адаптируется к современным графическим устройствам и новым возможностям графического вывода. X11 использует традиционную оконную модель, помноженную на традиционную модель операционной среды, в которой в роли действующих субъектов выступают задачи.

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

Задачи, которые обращаются к X-серверу с запросами, называются X-клиентами. Обычно X-клиент сначала регистрирует окно (можно несколько), которое и будет для него полем ввода/вывода. Потом он сможет рисовать в этом окне и обрабатывать происходящие с ним события: активность устройств ввода и изменение свойств самого окна (размер, перемещение, превращение в иконку, закрытие и т. п.). X-клиент в UNIX – это процесс, запускаемый обычно в фоне (не связанный по вводу с терминальной линией). В самом деле, зачем процессу читать с терминала, когда для ввода он может использовать X-сервер? Если с X-сервером связаться не удастся, на стандартном выводе ошибок может появиться какое-нибудь сообщение, которое легко перенаправить в файл.

Клиент передает серверу X-запросы любым доступным ему способом. В разных версиях UNIX, например, могут использоваться различные объекты файловой системы (чаще всего так называемые сокеты, сходные по функциональности с двунаправленными каналами). Во многих случаях запросы передаются по сети, при этом неважно, какой именно транспортный уровень будет использован для соединения клиента с сервером (в современных системах это, чаще всего, сеть TCP/IP и протокол TCP). Главное, чтобы клиент посылал стандартные запросы, соответствующие определенному протоколу обмена данными. Кстати сказать, другое имя X Window System – X11 (или X11R6) – это просто номер версии X-протокола, устанавливающего стандарт на X-запросы. R6 обозначает номер подверсии (revision) и вполне может увеличиться, если X11R6 устареет настолько, что потребует очередного пересмотра протокола.

Итак, X-сервер запускается на одном компьютере, а X-клиенты вполне могут работать на других (причем на нескольких!), посылая ему запросы. С точки зрения человека, сидящего за (обратите внимание!) X-сервером, каждый такой клиент представлен в виде окна. Требования к аппаратуре на машинах, запускающих X-клиенты, будут сильно отличаться от требований к аппаратуре машины для X-сервера. Типичная машина с X-сервером – это рабочее место (workstation). Она должна быть оборудована качественными устройствами ввода/вывода – монитором, видеокартой, клавиатурой и мышью. Что же касается ее вычислительных способностей, то их должно быть достаточно для выполнения X-запросов, и только. Такой компьютер не обязан работать под управлением UNIX, на нем даже может вообще не быть операционной системы! В 80-е годы выпускались подобные устройства под названием "X-терминалы" (X terminal).

В отличие от машины с X-сервером, компьютер для запуска X-клиентов может совсем не иметь устройств графического ввода/вывода. Его задача в том, чтобы все X-программы и запустившие их пользователи не мешали друг другу работать. На такой машине нужна хорошо настроенная операционная среда, с достаточным для запуска многих процессов быстродействием и объемом оперативной памяти. Пара X11R6–UNIX весьма неплохо работает на так называемых бездисковых комплексах. Рабочие станции в таких комплексах – самые настоящие X-терминалы, они не имеют жестких дисков. Вся работа происходит на центральном компьютере, с которого на рабочую станцию загружается по сети урезанный вариант системы, достаточный для запуска X-сервера, и сам X-сервер. В таких комплексах администрировать нужно одну только центральную машину, они надежнее компьютерных залов и, что немаловажно, стоят дешевле, причем в качестве X-терминалов можно использовать и довольно маломощные компьютеры.

< Лекция 16 || Лекция 17: 123456
Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started

Сергей Петровский
Сергей Петровский

У Вас написано:

ls -dt1 `grep -il отчет *` | head -1

если знания по шелу мне не изменяют, то должно быть:

ls -dt | `grep -il отчет *` | head -1

Светлана Мишланова
Светлана Мишланова
Россия, Волгоград
Илдар Аллаяров
Илдар Аллаяров
Россия