Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл.8 ОС буклет.doc
Скачиваний:
5
Добавлен:
11.11.2018
Размер:
286.21 Кб
Скачать

8.3.2. Система X Window

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

Базовая архитектура системы X Window

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

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

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

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

Клиенты и серверы могут находиться на разных компьютерах и выполняться под разными операционными системами (рис. 8.2). Х-протокол обычно работает поверх TCP/IP, фактически он является набором договоренностей о передаче специальных двоичных данных. Один сервер может одновременно отображать информацию от клиентов, которые находятся на разных компьютерах. Например, компьютер под управлением Linux может отображать средства редактирования видеоинформации, запущенные на компьютере Silicon Graphics под управлением ОС IRIX, и административный интерфейс (окно добавления нового пользователя), запущенный на другой Linux-машине. При этом ни одно из этих применений не находится в памяти компьютера, на котором выполняется Х-сервер. С другой стороны, компьютеры, на которых запущены Х-клиенты, могут вообще не поддерживать графического отображения информации - для них достаточно наличия связи с сервером через сеть.

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

Оконные менеджеры

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

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

Решение выделить поддержку оконных операций в отдельное приложение дало возможность достичь дополнительной гибкости работы с системой. Есть многие разные оконные менеджеры, среди самых распространенных можно выделить fvwm, sawfish, enlightenment. Некоторые из них реализуют лишь базовую функциональность управления окнами, другие предоставляют пользователю много возможностей (запуск приложений, организации рабочего стола и тому подобное).

Клиентские прилождения и инструментальные библиотеки

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

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

На практике применения разрабатывают с использованием набора функций высокого уровня, реализованных с использованием XLib. Такие функции могут отвечать за отображение конкретных элементов управления и за обработку действий, выполненных пользователем с этими элементами; они доступны в рамках инструментальных библиотек (toolkit libraries). Элементы управления в терминологии X Window называют виджетами (widgets), потому такие библиотеки называют еще библиотеками видже-тив (widget toolkits). Есть так же много инструментальных библиотек, как и оконные менеджеры, среди самых известных можно выделить Motif (самая распространенная библиотека начала 90-х годов, не является бесплатной), Gtk, Qt (две последние доступные в исходных кодах, и их широко используют в современных системах, в частности в Linux).

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

Интегрированы среды поддержки рабочего стола

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

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

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

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

Отсутствует стандарт на базовые применения для управления системой, такие как панель управления или файловый менеджер. Есть много реализаций этих средств, несовместимых за интерфейсом друг с другом.

Для решения этих проблем предложена концепция интегрированной среды поддержки рабочего стола (desktop environment). Такая среда - это интегрирован набор применений и инструментальных библиотек, которые реализуют весь набор средств для организации работы пользователя под управлением системы X Window. Чаще всего туда входят инструментальная библиотека, оконный менеджер и базовые применения для управления системой. Фактически, оно реализует набор компонентов, стандартных для интерфейса пользователя Windows-систем.

У современных ОС широко используют два интегрированы среды поддержки рабочего стола: KDE и GNOME. Особенности реализации KDE приведены ниже.

KDE содержит:

  • инструментальную библиотеку (Qt), которую используют для реализации всех KDE-применений и рекомендуют как стандарт для разработчиков;

  • оконный менеджер (kwm), который поддерживает управление окнами на основе договоренностей, принятых в Windows-системах;

  • набор дополнительных библиотек высокого уровня (kdelibs), которые реализуют более сложные элементы управления (например, диалоговые окна), а также базовые системные функции (например, печатание документов);

  • набор договоренностей из разработки интерфейса пользователя;

  • набор прикладных программ для решения базовых задач повседневной работы в системе (веб-браузер и файловый менеджер Konqueror, панель управления control panel, средство запуска применений kpanel, эмулятор терминала kconsole и тому подобное).

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]