Двери (вычислительные)

редактировать

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

Содержание
  • 1 История
  • 2 Обзор
  • 3 См. Также
  • 4 Ссылки
  • 5 Внешние ссылки
История

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

A Linux порт Doors, выпущенный в 2003 году., но доступно только для версии 2.4.18.

Обзор

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

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

Drw-r - r-- 1 jmorrison dev 876 8 декабря 19:43 myfile

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

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

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

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

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

См. Также
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-17 13:13:31
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте