stringtranslate.com

Оконная система

Типичные элементы окна . Оформление окна рисуется либо менеджером по работе с окнами , либо заказчиком. Рисование содержания — задача заказчика.

В вычислительной технике оконная система ( или оконная система ) — это программный пакет, который управляет по отдельности различными частями экранов дисплея . [1] Это тип графического пользовательского интерфейса (GUI), который реализует парадигму WIMP ( окна , значки , меню , указатель ) для пользовательского интерфейса .

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

Технические подробности

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

С точки зрения программиста, оконная система реализует графические примитивы. Например: рендеринг шрифтов или рисование линии на экране. Она обеспечивает абстракцию графического оборудования для использования элементами графического интерфейса более высокого уровня, такими как оконный менеджер. [ необходима цитата ]

Протокол сервера отображения может быть сетевым или даже сетевым прозрачным , что упрощает реализацию тонких клиентов . [ необходима ссылка ]

Дисплейный сервер

Базовые компоненты GUI : Дисплейный сервер реализует оконную систему. Простой оконный менеджер просто рисует оформление окна , но композитные оконные менеджеры делают больше.

Дисплейный сервер или сервер окон — это программа, чьей основной задачей является координация ввода и вывода ее клиентов в/из остальной части операционной системы, оборудования и друг друга. Дисплейный сервер взаимодействует со своими клиентами по протоколу дисплейного сервера, коммуникационному протоколу , который может быть сетевым прозрачным или просто сетевым.

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

Взаимоотношения сервер/клиент отдельного сервера отображения несколько контринтуитивны, поскольку «сервер» обычно рассматривается как большая удаленная машина, тогда как отдельный «сервер отображения» — это небольшая локальная система, большинство клиентов которой выполняются на более крупной центральной машине. Объяснение заключается в том, что сервер отображения предоставляет услуги дисплея и устройств ввода.

Протоколы связи сервера отображения

Х11

Сервер X.Org взаимодействует со своими клиентами, например , Amarok , по протоколу X11.
Логотип X-Window System
Логотип X-Window System

Одним из примеров сервера отображения является X.Org Server , который работает поверх ядра (обычно Unix -подобного ядра, такого как Linux или BSD ). Он получает данные пользовательского ввода (например, от evdev в Linux) и передает их одному из своих клиентов. Сервер отображения также получает данные от своих клиентов; он обрабатывает данные, выполняет компоновку и в Linux передает данные одному из трех компонентов ядра – DRM , gem или драйверу KMS . Компонент записывает данные в буфер кадра , а содержимое буфера кадра передается на подключенный экран и отображается. X использует GLX .

Одной из реализаций концепции сервера отображения является X Window System , в частности, ее фактически используемая версия – X.Org Server и клиентские библиотеки Xlib и XCB . X.Org Server – это сервер отображения, но в своей текущей реализации он полагается на вторую программу, менеджер окон композитинга , для выполнения композитинга. Примерами являются Mutter или KWin .

Известными примерами серверов отображения, реализующих протокол сервера отображения X11, являются X.Org Server , XFree86 , XQuartz и Cygwin/X , а клиентскими библиотеками, реализующими протокол сервера отображения X11, являются Xlib и XCB .

Уэйланд

Протокол сервера отображения Wayland
Логотип Уэйленда
Логотип Уэйленда

Серверы отображения, реализующие протокол сервера отображения Wayland, называются компоновщиками Wayland . Как и любой сервер отображения, компоновщик Wayland отвечает за обработку ввода и вывода для своих клиентов, а также, в отличие от X11, за компоновку . Примерами являются Weston , Mutter , KWin или Enlightenment .

Композиторы Wayland взаимодействуют с клиентами Wayland по протоколу сервера отображения Wayland . Этот протокол определяет, что клиенты могут напрямую записывать данные в буфер кадра с помощью API рендеринга EGL . Сервер отображения по-прежнему решает, какое окно находится сверху и, следовательно, видимо пользователю, а также по-прежнему отвечает за передачу данных относительно устройств ввода от evdev к своим клиентам.

Wayland в определенной степени используется в некоторых настольных дистрибутивах Linux, таких как Fedora . Он также хорошо подходит для мобильных вычислений и был принят, например, в ориентированных на смартфоны и планшеты проектах Tizen , Sailfish OS и AsteroidOS .

Реализация Wayland доступна по лицензии MIT , библиотеки libwayland-client и libwayland-server.

Продолжаются работы по добавлению поддержки Wayland в ChromeOS . [2]

Мир

Сервер отображения Mir поставляется со своим собственным протоколом сервера отображения Mir, который отличается от тех, которые используются X11 и Wayland. Mir дополнительно поддерживает протокол X11. Он был разработан Canonical и был предназначен для использования в качестве сервера отображения по выбору для Ubuntu . С 2017 года он был заменен на сервер отображения Wayland для настольных версий Ubuntu.

Существуют реализации сервера отображения Mir, библиотек libmir-server и libmir-client, доступные под лицензией GPLv3 .

Оконные системы с API

SurfaceFlinger

Компания Google разработала дисплейный сервер под названием SurfaceFlinger [3] для Android (еще одна операционная система на базе ядра Linux, предназначенная в первую очередь для мобильных устройств):

Все в Android отображается на «поверхности»; «поверхности» создаются приложениями и помещаются в очередь, которой управляет SurfaceFlinger. [4] [5]

Еще одно специфичное для Android решение — «Gralloc». Gralloc управляет памятью устройства, то есть выделяет, арбитражирует, управляет синхронизацией через дескрипторы файлов ограждения Android/Linux. Gralloc конкурирует с другими решениями, такими как, например, Generic Buffer Management (GBM) от Mesa или EGLStreams от Nvidia. Уровень абстракции оборудования Gralloc (HAL) используется для выделения буферов, лежащих в основе «поверхностей».

Для компоновки в Android поверхности отправляются в SurfaceFlinger, который использует OpenGL ES для компоновки.

Hardware Composer HAL (HWC) был представлен в Android 3.0 и неуклонно развивался на протяжении многих лет. Его основная цель — определить наиболее эффективный способ компоновки буферов с доступным оборудованием. Как HAL, его реализация зависит от устройства и обычно выполняется OEM-производителем оборудования дисплея.

Кварцевый Композитор

Для операционных систем семейства macOS компании Apple Quartz Compositor выполняет задачи сервера отображения и оконного менеджера в системе управления окнами.

Менеджер окон рабочего стола

Для Microsoft Windows , начиная с Windows Vista , Desktop Window Manager позволяет использовать аппаратное ускорение для визуализации графического пользовательского интерфейса. Первоначально он был создан для включения частей нового пользовательского интерфейса "Windows Aero", который позволял использовать такие эффекты, как прозрачность, переключение трехмерных окон и многое другое. Он также включен в Windows Server 2008, но требует установки функции "Desktop Experience" и совместимых графических драйверов. Начиная с Windows 8 DWM не может быть отключен и визуализируется программно, если не установлена ​​подходящая графическая карта.

Список оконных систем

ДляUnix-подобныйоперационные системы

ДляWindows NT-семействооперационные системы

Вебоконные системы

Другой

Некоторые системы, такие как Microsoft Windows ( XP , 9x и более ранние версии), классическая Mac OS (версия 9 и более ранние версии) и Palm OS , содержат оконную систему, интегрированную с ОС. [ необходима ссылка ]

Смотрите также

Ссылки

  1. ^ Кент, Аллен; Уильямс, Джеймс Г. (1996-10-11). Энциклопедия микрокомпьютеров: Том 19 - Системы поддержания истинности для визуального качества отображения. CRC Press. стр. 227. ISBN 9780824727178. Получено 8 июня 2017 г. .
  2. ^ "Обзор озона" . Получено 20 августа 2017 г.
  3. ^ "Архитектура системы Android" (PDF) . Архивировано из оригинала (PDF) 2016-04-08.
  4. ^ «Разработчик Android: Surface».
  5. ^ «Разработчик Android: SurfaceFlinger и Hardware Composer».
  6. ^ "Руководство пользователя HP Windows/9000" (PDF) . Hewlett Packard. Апрель 1988 г. Получено 26 октября 2021 г.
  7. ^ "Andrew: Распределенная персональная вычислительная среда" (PDF) . Сообщения ACM . 29 (3). Март 1986.
  8. ^ Майерс, Брэд (декабрь 1984 г.). «Пользовательский интерфейс для Sapphire» (PDF) . IEEE Computer Graphics and Applications . 4 (12): 13–23. doi :10.1109/MCG.1984.6429376. S2CID  11138733.
  9. ^ "Chilton::INF::Window Management". www.chilton-computing.org.uk . Получено 2023-04-11 .