Jump to content

Двери (компьютерные)

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

Двери были разработаны Sun Microsystems как основная часть операционной системы Spring , затем добавлены в Solaris в версии 2.5 в качестве недокументированного внутреннего интерфейса. [1] Они стали задокументированной функцией в Solaris 2.6. Последние версии Solaris используют Doors во многих местах, в том числе nscd ( демон кэша службы имен ) и syslog .

Порт Doors для Linux был выпущен в 2003 году, но доступен только для версии 2.4.18. [2]

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

Двери создаются серверными процессами (которые должны использовать потоки) и вызываются клиентскими процессами. Один процесс может одновременно создать и вызвать дверь. При создании двери сервер должен указать серверную процедуру, которая будет вызываться библиотекой Doors от имени клиентов. В отличие от большинства систем удаленного вызова процедур , каждая дверь имеет только одну серверную процедуру. Сервер может «прикрепить» дверь к файлу, позволяя клиентам подключаться к этой двери, просто открыв этот файл. ls -l команда затем покажет файл с типом «D» (не путать с «d» для каталога) — например:

$ ls -l
total 9
Drw-r--r-- 1 jmorrison dev 876 Dec  8 19:43 myfile

Клиенты используют door_call() для вызова процедуры сервера двери, передавая в качестве аргументов непрерывную область памяти и список дескрипторов файлов и получая обратно другую непрерывную область и список дескрипторов файлов. Любой регион может быть пустым, как и любой список. Обычно два С. structбудут определены: один для входных данных и один для выходных данных. (В качестве альтернативы можно использовать теговые объединения , позволяющие дверной процедуре выполнять несколько действий почти так же, как системный вызов ioctl .) Каждый файловый дескриптор сопровождается словом флагов. DOOR_RELEASE флаг запрашивает закрытие дескриптора файла в процессе отправки после его дублирования в процессе приема. Если отправляется файловый дескриптор, ссылающийся на дверь, система записывает свойства этой двери в слово флагов.

Помимо представления процедуры или группы процедур, дверь может представлять объект данных с состоянием , что позволяет передавать ссылки на такие объекты между процессами. Такая дверь обычно принимает объединение тегов в качестве входных данных, где каждое значение тега обозначает отдельный метод .

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

Библиотека Doors обычно создает и управляет пулом потоков в серверном процессе для обработки вызовов, но это поведение можно переопределить. Система Doors не обеспечивает никакой формы синхронизации, но серверы могут использовать обычные примитивы синхронизации на уровне потоков. Двери можно использовать для синхронизации доступа к сегментам общей памяти , что позволяет передавать данные в одном экземпляре. [3]

Концепция Doors очень похожа на спецификацию X/Open XATMI API, где клиентские процессы вызывают открытые функции серверных процессов: door_call() аналогичен tpcall() в клиентах XATMI, в то время как door_return() аналогичен tpreturn() на серверах Хатми.

См. также

[ редактировать ]
  1. ^ «dsvclockd(1M): использование дверей для реализации межпроцессных блокировок чтения/записи» . мне симплекс . 14 июня 2005 г. Архивировано из оригинала 22 октября 2012 г. Проверено 20 марта 2012 г.
  2. ^ «Namefs и Solaris Doors для Linux» .
  3. ^ [ мертвая ссылка ] http://developers.sun.com/solaris/articles/fastSockets.html
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 34200c55f61db1b392b024ca6fb6459b__1693433040
URL1:https://arc.ask3.ru/arc/aa/34/9b/34200c55f61db1b392b024ca6fb6459b.html
Заголовок, (Title) документа по адресу, URL1:
Doors (computing) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)