Почему система X Window использует сервер?

Я никогда не понимал, почему в оконной системе должен быть сервер. Зачем настольным средам, менеджерам дисплеев и менеджерам окон нужен xorg-сервер? Нужно ли иметь только слой абстракции поверх видеокарты? Почему в оконных системах используется модель клиент-сервер? Не будет ли проще обрабатывать связь по именованным каналам?

25 голосов | спросил Aadit M Shah 6 +04002014-10-06T08:19:58+04:00312014bEurope/MoscowMon, 06 Oct 2014 08:19:58 +0400 2014, 08:19:58

5 ответов


39

Я думаю, вы уже заметили, что нужен какой-то «сервер». Каждый клиент (среда рабочего стола, оконный менеджер или оконная программа) должен делиться дисплеем со всеми остальными, и они должны иметь возможность отображать вещи, не зная деталей аппаратного обеспечения, или зная, кто еще использует дисплей. Таким образом, сервер X11 предоставляет уровень абстракции и совместного использования, о котором вы говорили, предоставляя интерфейс IPC.

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

  • Именованные каналы обмениваются данными только в одном направлении.
  • Если два процесса начинают помещать данные в «отправляющий» конец именованного канала, данные будут перемешаться.

Фактически, большинство клиентов X разговаривают с сервером, используя «новый и улучшенный» именованный канал, называемый сокером UNIX-домена. Это очень похоже на именованный канал, за исключением того, что он позволяет процессам говорить в обоих направлениях, и он отслеживает, кто сказал что. Это те же самые вещи, что и сеть, и поэтому сокеты UNIX-домена используют тот же программный интерфейс, что и сокеты TCP /IP, которые обеспечивают сетевую связь.

Но оттуда очень легко сказать: «Что, если я запустил сервер на другом хосте, чем клиент?» Просто используйте сокет TCP вместо UNIX-сокета и voila: протокол удаленного рабочего стола, который предшествует Windows RDP десятилетиями. Я могу ssh четыре разных удаленных хоста и запустить synaptic (графический менеджер пакетов) для каждого из них, и все четыре окна отображаются на дисплее моего локального компьютера.

ответил Jander 6 +04002014-10-06T08:51:17+04:00312014bEurope/MoscowMon, 06 Oct 2014 08:51:17 +0400 2014, 08:51:17
14

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

Именованные каналы не дадут вам автоматического преимущества, позволяющего работать через сеть, как это делает реализация TCP. Но названные каналы были, например, недоступен в DOS, с DosExtender, выполняющим Desqview /X (1992), и AFAIK также не на VMS. Для этих реализаций специфическая коммуникация Unix будет проблемой.

TCP не является специфичным для Unix, и возможно, что клиент работает под управлением VAX /VMS (начало X в 1984 году) и служит для вывода на локальную графическую рабочую станцию ​​на базе UNIX. Из «X Window System: Полная ссылка на Xlib, X Protocol, ICCCM, XLFD "¹:

  

В течение осени 1986 года Digital решила основать всю свою настольную рабочую станцию   для ULTRIX, VMS и MS-DOS на X. Хотя это было приятно для нас, это также   означало, что нам было еще больше людей, с которыми можно было поговорить. Это привело к некоторой задержке, но, в конце концов,   это также привело к лучшему дизайну. Ralph Swick of Digital присоединился к проекту Athena во время   этот период и сыграл жизненно важную роль, несмотря на развитие версии 11. Последний вер-   релиз sion 10 был выпущен в декабре 1986 года.

В «Справочном руководстве по протоколу X» ²:

  

Разделение обязанностей

     

В процессе разработки протокола X многое задумалось о разделении возможностей между сервером и клиентом, поэтому он определяет, какую информацию нужно передавать назад и вперед через запросы, ответы и события. Отличным источником информации о обосновании определенных вариантов, сделанных при разработке протокола, является статья «Система X Window» Роберта Шейфлера и Джима Геттиса, опубликованная в журнале «Computing Machinery» Transaction on Graphics, том 5, №. 2, апрель 1986 г. В конечном итоге решения были основаны на переносимости клиентских программ, простоте программирования клиентов и производительности.

     

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

Я помню, что статья в TOG была интересной. Это, безусловно, вызвало мой интерес к X и (это было до WorldWideWeb) трудности, с которыми мы вкладывали свои руки в дополнительную информацию, пока О'Рейли не начал издавать свои серии книг X.

¹ X Версия 11, выпуск 4, страница 2-X, PDF доступен онлайн

ответил Anthon 6 +04002014-10-06T08:54:13+04:00312014bEurope/MoscowMon, 06 Oct 2014 08:54:13 +0400 2014, 08:54:13
2

X изначально был разработан и поддерживается M.I.T. И это было с лицензией с открытым исходным кодом M.I.T, а не тем, что действительно имеет значение.

Пока рассматривается как ненамеренное, подумайте о нем на мгновение; как вы могли бы объяснить выбор использования парадигмы клиент-сервер в части программного обеспечения? И, возможно, я должен сказать C.E.O ...

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

В то время как не совсем корректно, диспетчер окон часто объясняется так: это просто, эта штука, которая помещает ручки и другие украшения в рамку приложения, а также окна, диалоги и т. д.

ответил Dan LaBell 6 +04002014-10-06T14:49:01+04:00312014bEurope/MoscowMon, 06 Oct 2014 14:49:01 +0400 2014, 14:49:01
1

Модели клиент-сервер являются популярным дизайном для всех видов приложений, даже если есть только один сервер и только один клиент. Они позволяют четко и четко определить интерфейс между областями ответственности.

Хотя существует множество способов взаимодействия сервера и клиента, выбор осуществляется с помощью X (независимо от преимуществ, упомянутых другими) не является лишним: вы можете подключаться к серверу X на другой машине и открывать окна на рабочем столе ( или на другом сотрудничающем рабочем столе). Это было очень распространено в дни, когда X был разработан, когда многие университеты и предприятия имели бы Unix-сервер и множество «X-терминалов», которые говорили с ним. Используя протокол связи с интернет-протоколом, X можно легко использовать внутри или через хосты.

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

ответил alexis 7 +04002014-10-07T16:33:18+04:00312014bEurope/MoscowTue, 07 Oct 2014 16:33:18 +0400 2014, 16:33:18
-1

Я считаю, что x-сервер был спроектирован как архитектура клиент-сервер, потому что изначально вычислительные ресурсы были недостаточными, а мейнфреймы занимались большей частью тяжелой работы. X-терминалы были просто тонкими клиентами, которые подключались к x-серверам и отображали все, что нужно было отображать пользователю.

У этого есть много преимуществ (хотя протокол связи для X очень тяжелый в наши дни), особенно вы можете отображать один и тот же дисплей на нескольких клиентах, совместное использование экрана с несколькими пользователями легко в X.

ответил Karney Li 7 Maypm15 2015, 19:36:16

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132