Кто-нибудь может объяснить (надеюсь, с изображением), как организован графический стек Linux? Я все время слышу о X / GTK / GNOME / KDE и т. Д., Но я действительно понятия не имею, что они на самом деле делают и как они взаимодействуют друг с другом и другими частями стека. Как вписываются Unity и Wayland?
31
Ответы:
Система X Window использует архитектуру клиент-сервер. X-сервер работает на компьютере с дисплеем (мониторы + устройства ввода), в то время как X-клиенты могут работать на любом другом компьютере и подключаться к X-серверу по протоколу X (не напрямую, а с помощью библиотеки, например, Xlib, или более современный неблокирующий XCB, управляемый событиями). Протокол X разработан для расширения и имеет много расширений (см.
xdpyinfo(1)
).X-сервер выполняет только операции низкого уровня, такие как создание и уничтожение окон, выполнение операций рисования (в настоящее время большая часть рисования выполняется на клиенте и отправляется в виде изображения на сервер), отправка событий в окна ... Вы можете видеть, как мало X-сервер запускается
X :1 &
(используйте любой номер, еще не использованный другим X-сервером) илиXephyr :1 &
(Xephyr запускает X-сервер, встроенный в ваш текущий X-сервер), а затем запускаетсяxterm -display :1 &
и переключается на новый X-сервер (вам может потребоваться настроить X-авторизацию используяxauth(1)
).Как вы можете видеть, X-сервер делает очень мало, он не рисует заголовки, не минимизирует / не отображает окна, не управляет размещением окон ... Конечно, вы можете управлять размещением окон вручную, выполнив команду вроде бы
xterm -geometry -0-0
, но обычно у вас будет специальный X-клиент, который делает вышеуказанные вещи. Этот клиент называется оконным менеджером . Одновременно может быть активен только один оконный менеджер. Если вы до сих пор открыт голый X - сервер предыдущих команд, вы можете попробовать запустить менеджер окон на ней, какtwm
,metacity
,kwin
,compiz
,larswm
,pawm
, ...Как мы уже говорили, X выполняет только операции низкого уровня и не предоставляет концепции более высокого уровня, такие как кнопки, меню, панели инструментов, ... Они предоставляются библиотеками, называемыми наборами инструментов , например: Xaw, GTK, Qt, FLTK, ...
Среды рабочего стола представляют собой наборы программ, разработанных для обеспечения единого пользовательского интерфейса. Таким образом, окружение рабочего стола обычно предоставляет панели, панели запуска приложений, системные панели, панели управления, конфигурационную инфраструктуру (где сохранять настройки). Некоторыми хорошо известными средами рабочего стола являются KDE (созданный с использованием инструментария Qt), Gnome (с использованием GTK), Enlightenment (с использованием собственных библиотек инструментария), ...
Некоторые современные настольные эффекты лучше всего использовать с использованием 3D-оборудования. Таким образом, появляется новый компонент, композитный менеджер . Расширение X, расширение XComposite, отправляет содержимое окна в композитный менеджер. Составной менеджер преобразует это содержимое в текстуры и использует трехмерное оборудование через OpenGL, чтобы составлять их различными способами (альфа-смешение, 3d-проекции, ...).
Не так давно X-сервер общался напрямую с аппаратными устройствами. Значительная часть этой обработки устройства переместилась в ядро ОС: DRI (разрешение доступа к трехмерному оборудованию для X и клиенты прямого рендеринга), evdev (унифицированный интерфейс для обработки устройства ввода), KMS (настройка режима перемещения графики для ядра) , GEM / TTM (управление текстурной памятью).
Таким образом, из-за сложности обработки устройств в настоящее время в основном за пределами X стало проще экспериментировать с упрощенными оконными системами. Wayland - это оконная система, основанная на концепции составного менеджера, т.е. оконная система - это составной менеджер. Wayland использует обработку устройств, которая вышла из X и выполняет рендеринг с использованием OpenGL.
Что касается Unity, это среда рабочего стола, разработанная для использования пользовательского интерфейса, подходящего для нетбуков.
источник
Традиционный стек состоит из 3 основных компонентов:
Архитектура X была создана как сеть, что позволило клиентам находиться на отдельном хосте, а затем на сервере.
Все идет нормально. Однако это было изображение из далекого прошлого. В настоящее время не процессор обрабатывает графику, а графический процессор. Были различные попытки включить его в модель - и место, когда ядро входит в место, чтобы расширить его.
Сначала были сделаны некоторые предположения относительно использования графической карты. Например, предполагалось только отображение на экране. Я не могу найти эту информацию в Википедии прямо сейчас, но DRI 1 также предполагал, что только одно приложение будет использовать OpenGL в одно и то же время (я не могу сразу процитировать, но могу выкопать ошибку там, где она была близка как WONTFIX, с примечанием ждать до DRI 2).
Для временного рендеринга было предложено несколько временных решений (необходимых для составного WM):
Работы по более новой архитектуре (DRI 2) были начаты. Это включает в себя:
Как-то ортогонально перейти на ядро началась работа над драйверами Gallium. Библиотека Mesa начиналась как реализация OpenGL на CPU, а затем начала использовать ускорение GPU. Он всегда был привязан к OpenGL. В OpenGL 3.0 модель значительно изменилась, и переписывание библиотеки было неизбежным. Однако они используют возможность разделить код на несколько уровней, извлекая общий код и предоставляя низкоуровневый API, позволяющий реализовывать различные 3D API поверх него - позволяя, например, Wine предоставлять DirectX для непосредственного общения с Gallium вместо того, чтобы проходить через OpenGL Уровень API (который может не иметь прямых вызовов 1-1).
Wayland - это проекты, которые считают вышеупомянутое немного сложным и слишком «историческим». Дизайн 1984 года (хотя и сильно модифицированный и адаптированный) не соответствует началу 21 в. по словам сторонников.
Предполагается, что он предлагает большую гибкость и лучшую производительность, хотя в нем по-прежнему отсутствуют некоторые важные функции, такие как полная поддержка OpenGL (и важная для некоторых - поддержка сети).
Немного больше о настольных средах и оконных менеджерах. Диспетчер окон - это приложение, отвечающее за поведение окна, например, оно отвечает за управление рабочими пространствами, рисование заголовка заголовка (элемент в верхней части экрана с заголовком windo и кнопками сворачивания / разворачивания / закрытия) и т. Д.
Сначала использовался только минимальный WM, но впоследствии пользователь начал хотеть среды рабочего стола - то есть более функциональную версию, которая включала запуск меню, фон рабочего стола и т. Д. Однако большинство частей среды рабочего стола не является оконным менеджером, хотя они часто интегрированы.
Через некоторое время была представлена композитная WM, которая использует OpenGL и непрямой рендеринг для своей работы. Они обеспечивают не только графические эффекты, но и позволяют упростить реализацию некоторых функций специальных возможностей (например, лупы).
источник
Прежде всего, на самом деле нет графического стека Linux. У Linux нет возможностей графического отображения.
Однако приложения Linux могут использовать графические дисплеи, и для этого есть ряд различных систем. Самые распространенные из них построены поверх X окон.
X - это сетевой протокол, потому что в середине стека протоколов X вы можете иметь сеть в качестве стандартного компонента. Давайте посмотрим на конкретный вариант использования. Физик из Берлина хочет провести эксперимент в ЦЕРНе в Швейцарии на одном из коллайдеров ядерных частиц. Он входит в систему удаленно и запускает программу анализа данных на одном из суперкомпьютерных массивов CERN и отображает результаты на своем экране.
В Берлине у физика есть устройство X-терминала, на котором запущено программное обеспечение X-сервера, которое обеспечивает возможность графического отображения для удаленных приложений. Программное обеспечение X-сервера имеет кадровый буфер, который обращается к конкретному драйверу устройства для конкретного оборудования. И программное обеспечение X-сервера говорит по протоколу X. Таким образом, слои могут быть графическим устройством-> драйвер устройства-> кадровый буфер-> X-сервер-> X-протокол.
Затем в Швейцарии приложение подключается к дисплею с использованием протокола X и отправляет команды графического отображения, такие как «нарисовать прямоугольник» или «альфа-смешение». Приложение, вероятно, использует графическую библиотеку высокого уровня, и эта библиотека, скорее всего, будет основана на библиотеке более низкого уровня. Например, приложение может быть написано на Python с использованием инструментария WxWidget, который построен поверх GTK, который использует библиотеку Cairo для основных графических команд рисования. Там также может быть OPENGL также на вершине Каира. Слои могут выглядеть так: WxWidgets-> GTK-> Cairo-> X Toolkit-> X protocol. Очевидно, что этот протокол в середине соединяет вещи, и, поскольку Linux также поддерживает сокеты UNIX, полностью внутренний транспорт для данных, эти два типа вещей могут работать на одной машине, если вы хотите.
X относится к протоколу и всему основному для архитектуры, таким как X-сервер, на котором работает графический дисплей, указательное устройство и клавиатура.
GTK и QT - это две библиотеки GUI общего назначения, которые поддерживают окна, диалоги, кнопки и т. Д.
GNOME и KDE - это две среды рабочего стола, которые управляют окнами на графическом рабочем столе, предоставляют полезные апплеты и такие вещи, как панели кнопок. Они также позволяют нескольким приложениям взаимодействовать через X-сервер (устройство X-терминала), даже если приложения работают на разных удаленных компьютерах. Например, копирование и вставка - это форма взаимодействия между приложениями. GNOME построен поверх GTK. KDE построен поверх QT. Кроме того, можно запускать приложения GNOME на рабочем столе KDE или приложения KDE на рабочем столе GNOME, поскольку все они работают с одним и тем же базовым X-протоколом.
источник
Это его организация, вы узнаете больше из этой картины, что из нескольких страниц текста:
источник
X11-client
это всего лишь капля, но в ней много чего происходит. Как объяснили другие действительно классные ответы.Linux на десктопе и на некоторых серверах по-прежнему полностью графичны с X и кадровым буфером. Под окном X - это GTK + и Qt, YES BOTH использует систему X, опять же, существует множество окружений рабочего стола - Gnome, KDE использует дисплей X и их оболочки и т. Д.
Кстати, недавно было опубликовано видео с linux conf (http://blip.tv/file/4693305/). Кит Паккард из Intel рассказал о X и GL * Это было интересно.
источник