Я думаю, вы уже заметили, что необходим какой-то «сервер». Каждый клиент (среда рабочего стола, оконный менеджер или оконная программа) должен предоставить доступ к экрану всем остальным, и он должен иметь возможность отображать вещи, не зная деталей оборудования или не зная, кто еще использует дисплей. Таким образом, сервер X11 обеспечивает уровень абстракции и совместного использования, который вы упомянули, предоставляя интерфейс IPC.
Вероятно, X11 можно сделать, чтобы запустить именованные трубы, но есть две большие вещи, которые именованные трубы не могут сделать.
На самом деле большинство клиентов X разговаривают с сервером, используя «новый и усовершенствованный» именованный канал, называемый сокетом домена UNIX. Это очень похоже на именную трубу, за исключением того, что она позволяет процессам говорить в обоих направлениях, и она отслеживает, кто что сказал. Это те же самые вещи, которые приходится делать сети, и поэтому сокеты UNIX-домена используют тот же интерфейс программирования, что и сокеты TCP/IP, которые обеспечивают сетевой коммуникационный.
Но оттуда действительно легко сказать «Что если я запустил сервер на другом хосте, чем клиент?» Просто используйте TCP сокет вместо UNIX сокета, и voila: протокол удаленного рабочего стола, который предшествовал Windows RDP на десятилетия. Я могу ssh
на четыре различных удаленных хоста и запустить synaptic
(графический менеджер пакетов) на каждом из них, и все четыре окна появятся на дисплее моего локального компьютера.
-121--17730-
Оконная система не обязательно должна иметь сервер, но можно принять решение о внедрении оконной системы на основе модели клиент-сервер. Это имеет несколько преимуществ, так как вы четко разделяете действия в клиенте и сервере, они не должны выполняться на одной машине, и это более легко обслуживать несколько клиентов. Это в настоящее время все еще очень удобно (например, когда вы ssh
в другой машине), но вы должны понять, что во время разработки X, это рассматривалось как необходимость: ваша локальная машина может быть недостаточно мощной для запуска клиента.
Именованные каналы не дают вам автоматического преимущества в том, что они могут работать по сети, как это делает реализация TCP. Но именованные каналы были, например, недоступны на DOS, с DosExtender под управлением Desqview/X (1992), и AFAIK также не на VMS. Для этих реализаций проблема была бы связана со специфической связью Unix.
TCP не является специфичным для Unix, и клиент может работать под управлением VAX/VMS (разработка X началась в 1984 году) и обслуживать выходные данные на локальной графической рабочей станции UNIX. В окне "X Window System: Полная ссылка на Xlib, X Протоколов, ICCCM, XLFD» ¹:
Во время осени 1986 года, Цифровой, решил основывать ее всю стратегию настольной рабочей станции для ULTRIX, VMS и MS-DOS на X. Хотя это было отрадно для нас, оно также значит, у нас было еще больше людей, с которыми можно было поговорить.Это привело к некоторой задержке, но, в конце концов, это также привело к улучшению конструкции. Ральф Свик из Digital присоединился к Project Athena во время этот период и сыграл жизненно важную роль в разработке версии 11. Последняя вер- Релиз sion 10 был выпущен в декабре 1986 года.
Из «X Protocol Reference Manual» ²:
Разделение обязанностей
В процессе того , чтобы намереваться протокола X много внимания уделялось разделению возможностей между сервером и клиентом, это определяет, какая информация должна передаваться туда и обратно через запросы, ответы и события. Отличным источником информации о причинах определенных решений, сделанных при том , чтобы намереваться протокола, является статья X Window System, Роберт В. Шейфлер и Джим Геттис, опубликованные в журнале Ассоциации вычислительной техники Transaction on Graphics, Vol 5, № 2, апрель 1986 В конечном итоге принятые решения основывались на переносимости клиентских программ, простоте программирования клиентов и производительности.
Во-первых, сервер предназначен, насколько это возможно, для скрытия различий в базовом оборудовании от клиентских приложений....
Я помню, что статья в TOG была интересной читкой. Это, безусловно, вызвало мой интерес к X и (это было до WorldWeyWeb) трудности, с которыми мы связывали руки с дополнительной информацией, пока О'Райлли не начал публиковать свои книги серии X.
start X Version 11, Release 4, page 2-X, PDF доступен онлайн здесь
² Это со страницы 9 во 2-м издании, изданном O'Reilly, которое я купил в 1990. Есть более новые издания, но я никогда не удосужился купить их, и они AFAIK доступны только в бумаге. Я не думаю, что они изменили обоснование разделения обязанностей.
-121--17731-
Убедитесь, что repo CentOS 6,5 yum действительно настроено как одно из репо в каталоге /etc/yum.repos.d
. В противном случае вы просто продолжите обновление по сравнению с репо 6.3, в котором не будет пакетов 6.5.
Например, у вас может быть что-то подобное
[centos-6.3-updates-x86_64]
name=centos-6.3-updates-x86_64
baseurl=http://x.x.x.x/cobbler/repo_mirror/centos-6.3-updates-x86_64
enabled=1
priority=99
gpgcheck=1
Но вы можете пропустить это:
[centos-6.5-updates-x86_64]
name=centos-6.5-updates-x86_64
baseurl=http://x.x.x.x/cobbler/repo_mirror/centos-6.5-updates-x86_64
enabled=1
priority=99
gpgcheck=1
(Базовые элементы будут отличаться от моих, которые указывают на внутреннее зеркало.)
В моем случае моя организация использует Cobbler/Puppet, поэтому мне пришлось обновить конфигурацию core-0
, чтобы указать на CentOS 6,5 repo
У ядра есть драйвер для того, чтобы потус был включен (PCI, USB, PCMCIA - на самом деле это более сложный, и никто больше не использует, так что забудьте PCMCIA). Этот драйвер сопоставил регистры в этом шине (это отличается от регистра ЦП) в память и сохраняет на них часы.
Когда кабель подключен, аппаратное обеспечение Ethernet меняет свои регистры и уведомления шин. Сообщения шины UDEV, которая отображает идентификатор шины в соответствующий драйвер (это также может произойти в ядре; зависит от того, как он настроен). УДЕВ также может проснуться в пользовательском процессе, такому как насос или сетевойmanager, вероятно, через DBUS, хотя это становится в пути «зависит от того, как он создан« территория ».
Вообще, UDEV уже создал отображение для таких вещей, как символическое имя порта «eth1» или что-то еще, а также какой водитель использует, и он делает эту информацию доступной для остальной части пользователей (и в некоторых случаях ядро). Он расположен вокруг прослушивания программного обеспечения на автобусе в ядре для изменений в устройствах на автобусе - это в значительной степени так точно так же, как USB-палка получает автоматически: автобусные переговоры в Удева, Удев разговаривает с пользовательским языком.
TL; DR: Аппаратное обеспечение на порту Ethernet связывается с шиной (PCI или USB или что у вас), которые затем связываются с UDEV, которые связываются с остальными участниками.
Я могу только ответить на «дополнительный вопрос». «Как обнаружить сигнал, когда подключен кабель». Таким образом, предполагая 10 * / base-t, существует своего рода сигнал несущей, который устройство обнаруживает и делает эту информацию доступной для драйвера устройства. Драйвер устройства обычно отправит сообщение через регистратор ядра, который «Ethx: обнаружена ссылка». Эта информация также становится доступной (в относительно недавних версиях Linux) в иерархии / SYS. См. https://stackoverflow.com/a/808599/3849157 .
Я верю, что правила UDEV могут быть настроены на Tirgger действие, когда состояние устройства было изменено. Но я не знаю, наверняка, если это так здесь.
Если процесс DHClient / насоса работает, и если он делает его вещью, этот процесс запрашивает адрес DHCP, и если он получает один из DHCP-сервера, обычно вызывает один или несколько скриптов вспомогательных сценариев, которые на самом деле настраивают сеть ОС Отказ Но это зависит от конкретной программы, которая делает это.