Межпроцессное взаимодействие
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Август 2015 г. ) |
В информатике операционной межпроцессное взаимодействие ( IPC ), также называемое межпроцессным взаимодействием , — это механизмы, предоставляемые системой для процессам управления общими данными. Обычно приложения могут использовать IPC, которые подразделяются на клиенты и серверы , где клиент запрашивает данные, а сервер отвечает на запросы клиента. [ 1 ] Многие приложения являются одновременно клиентами и серверами, как это обычно бывает в распределенных вычислениях .
IPC очень важен для процесса проектирования микроядер и наноядер , которые уменьшают количество функций, предоставляемых ядром. Эти функциональные возможности затем реализуются путем взаимодействия с серверами через IPC, что приводит к значительному увеличению объема связи по сравнению с обычным монолитным ядром. Интерфейсы IPC обычно включают в себя переменные аналитические структуры. Эти процессы обеспечивают совместимость многовекторных протоколов, на которых основаны модели IPC. [ 2 ]
Механизм IPC бывает синхронным или асинхронным. Примитивы синхронизации могут использоваться для обеспечения синхронного поведения с асинхронным механизмом IPC.
Подходы
[ редактировать ]Различные подходы к IPC были адаптированы к различным требованиям к программному обеспечению , таким как производительность , модульность и системные условия, такие как пропускная способность сети и задержка . [ 1 ]
Метод | Краткое описание | Предоставляется ( операционными системами или другими средами) |
---|---|---|
Файл | Запись, хранящаяся на диске, или запись, синтезируемая по требованию файловым сервером, к которой могут получить доступ несколько процессов. | Большинство операционных систем |
Файл связи | Уникальная форма IPC конца 1960-х годов, которая больше всего напоминает Plan 9 . протокол 9P | Дартмутская система разделения времени |
Сигнал ; также асинхронная системная ловушка | Системное сообщение, отправляемое от одного процесса к другому, обычно не используемое для передачи данных, а вместо этого используемое для удаленного управления партнерским процессом. | Большинство операционных систем |
Розетка | Данные передаются через сетевой интерфейс либо в другой процесс на том же компьютере, либо на другой компьютер в сети. Потоково-ориентированный ( TCP ; данные, записываемые через сокет, требуют форматирования для сохранения границ сообщения) или, реже, ориентированный на сообщения ( UDP , SCTP ). | Большинство операционных систем |
Доменный сокет Unix | Похож на интернет-сокет, но все взаимодействие происходит внутри ядра. Доменные сокеты используют файловую систему в качестве адресного пространства. Процессы ссылаются на сокет домена как на индексный дескриптор , и несколько процессов могут взаимодействовать с одним сокетом. | Все операционные системы POSIX и Windows 10. [ 3 ] |
Очередь сообщений | Поток данных, аналогичный сокету, но обычно сохраняющий границы сообщений. Обычно они реализуются операционной системой и позволяют нескольким процессам читать и записывать в очередь сообщений без прямого подключения друг к другу. | Большинство операционных систем |
Анонимная трубка | Однонаправленный канал данных, использующий стандартный ввод и вывод . Данные, записываемые в конец канала записи, буферизуются операционной системой до тех пор, пока они не будут прочитаны из конца канала чтения. Двусторонняя связь между процессами может быть достигнута за счет использования двух каналов в противоположных «направлениях». | Все системы POSIX , Windows |
Именованная труба | Канал, который рассматривается как файл. Вместо использования стандартного ввода и вывода, как в случае с анонимным каналом, процессы пишут и читают из именованного канала, как если бы это был обычный файл. | Все системы POSIX, Windows, AmigaOS 2.0+. |
Общая память | Многим процессам предоставляется доступ к одному и тому же блоку памяти , что создает общий буфер для взаимодействия процессов друг с другом. | Все системы POSIX, Windows |
Передача сообщений | Позволяет нескольким программам взаимодействовать с использованием очередей сообщений и/или каналов, не управляемых ОС. Обычно используется в моделях параллелизма. | Используется в LPC , RPC , RMI и MPI парадигмах , Java RMI , CORBA , COM , DDS , MSMQ , MailSlots , QNX и других. |
Файл, отображаемый в памяти | Файл, сопоставленный с оперативной памятью , может быть изменен путем непосредственного изменения адреса памяти, а не вывода в поток. Он имеет те же преимущества, что и стандартный файл . | Все системы POSIX, Windows |
Приложения
[ редактировать ]Интерфейсы удаленного вызова процедур
[ редактировать ]- ( Java Удаленный вызов методов RMI)
- ОНК РПК
- XML-RPC или SOAP
- JSON-RPC
- Шина сообщений (Mbus) (определена в RFC 3259) (не путать с M-Bus )
- Удаленное взаимодействие .NET
- gRPC
Стек связи платформы
[ редактировать ]Ниже приведены системы обмена сообщениями и информационные системы, которые используют механизмы IPC, но сами не реализуют IPC:
- KDE ( DCOP Протокол связи с рабочим столом ) – устаревший по D-Bus
- D-шина
- OpenWrt использует ubus архитектуру микрошины
- MCAPI API многоядерных коммуникаций
- SIMPL Проект синхронного межпроцессного обмена сообщениями для Linux (SIMPL)
- 9P (протокол файловой системы Plan 9)
- Распределенная вычислительная среда (DCE)
- Бережливость
- ZeroC Механизм интернет-коммуникаций (ICE)
- ØMQ
- Enduro/X Промежуточное ПО
- ЯМИ4
- Enlightenment_(программное обеспечение) E16 использует eesh в качестве IPC
Стек связи операционной системы
[ редактировать ]Ниже приведены API-интерфейсы, специфичные для платформы или языка программирования:
- Apple Computer от Мероприятия Apple , ранее известные как Interapplication Communications (IAC)
- ARexx порты
- от Enea LINX для Linux (с открытым исходным кодом), а также различные DSP и процессоры общего назначения под OSE.
- Mach ядра Порты Mach
- Microsoft ActiveX ( , объектная модель компонентов (COM), сервер транзакций Microsoft ( COM+ ), объектная модель распределенных компонентов (DCOM), динамический обмен данными (DDE), связывание и внедрение объектов OLE), анонимные каналы , именованные каналы , локальные процедуры Вызов , MailSlots , цикл сообщений , MSRPC , удаленное взаимодействие .NET и Windows Communication Foundation (WCF)
- Novell от SPX
- POSIX mmap , очереди сообщений , семафоры , [ 4 ] и общая память
- ОС RISC Сообщения
- Солярис Двери
- Очереди сообщений System V , семафоры и общая память
- Прозрачное межпроцессное взаимодействие Linux (TIPC)
- OpenBinder Открыть подшивку
- QNX Служба PPS (постоянная публикация/подписка)
Распределенные объектные модели
[ редактировать ]Ниже приведены API-интерфейсы, специфичные для платформы или языка программирования, которые используют IPC, но сами не реализуют его:
- Libt2n для C++ только под Linux, обрабатывает сложные объекты и исключения.
- PHP -сессии
- Распределенный Ruby
- Общая архитектура брокера объектных запросов (CORBA)
- объекты Асинхронный IPC Electron разделяет JSON между основным процессом и процессом рендеринга. [ 5 ]
См. также
[ редактировать ]- Розетки Беркли
- Программирование компьютерных сетей
- Взаимодействие с последовательными процессами (парадигма CSP)
- Служба распространения данных
- База данных как IPC
- Вызов защищенной процедуры
Ссылки
[ редактировать ]- Стивенс, Ричард . Сетевое программирование UNIX, Том 2, Второе издание: Межпроцессные коммуникации. Прентис Холл, 1999. ISBN 0-13-081081-9
- У. Рамачандран, М. Соломон, М. Вернон Аппаратная поддержка межпроцессного взаимодействия. Материалы 14-го ежегодного международного симпозиума по компьютерной архитектуре. Питтсбург, Пенсильвания, США. Страницы: 178 - 188. Год издания: 1987. ISBN 0-8186-0776-9
- Кровелла, М. Бьянкини, Р. ЛеБлан, Т. Маркатос, Э. Вишневски, Р. Использование соотношения количества коммуникаций и вычислений при разработке параллельных программ и прогнозировании производительности, 1–4 декабря 1992 г., стр. 238–245. ISBN 0-8186-3200-3
- ^ Jump up to: а б «Межпроцессные коммуникации» . Майкрософт.
- ^ Камурати, П. (1993). «Межпроцессное взаимодействие для проектирования системного уровня». Международный семинар по кодированию аппаратного и программного обеспечения .
- ^ «Взаимодействие Windows/WSL с AF_UNIX» . Майкрософт. 7 февраля 2018 года . Проверено 25 мая 2018 г.
- ^ " Параллельное программирование - связь между процессами "
- ^ «IpcMain | Электрон» .