Межпроцессного взаимодействия - Inter-process communication
В информатике , межпроцессного взаимодействия или межпроцессного взаимодействия ( IPC ) относится конкретно к механизмам операционная система обеспечивает , чтобы позволить процессам для управления общими данными. Обычно приложения могут использовать IPC, классифицируемые как клиенты и серверы , где клиент запрашивает данные, а сервер отвечает на запросы клиентов. Многие приложения являются одновременно клиентами и серверами, как это обычно бывает в распределенных вычислениях .
IPC очень важен для процесса проектирования микроядер и наноядер , которые сокращают количество функций, предоставляемых ядром. Эти функции затем достигаются путем связи с серверами через IPC, что приводит к значительному увеличению обмена данными по сравнению с обычным монолитным ядром. Интерфейсы IPC обычно включают в себя изменяемые аналитические структуры. Эти процессы обеспечивают совместимость между многовекторными протоколами, на которых основаны модели IPC.
Механизм IPC бывает синхронным или асинхронным. Примитивы синхронизации могут использоваться для обеспечения синхронного поведения с асинхронным механизмом IPC.
Подходы
Различные подходы к IPC были адаптированы к различным требованиям к программному обеспечению , таким как производительность , модульность и системные обстоятельства, такие как пропускная способность сети и задержка .
Метод | Краткое описание | Предоставляется ( операционными системами или другими средами) |
---|---|---|
Файл | Запись, хранящаяся на диске, или запись, синтезированная по запросу файловым сервером, к которой могут получить доступ несколько процессов. | Большинство операционных систем |
Файл сообщений | Уникальная форма IPC в конце 1960-х годов , который наиболее близко напоминает план 9 «s протокол 9P | Дартмутская система разделения времени |
Сигнал ; также Асинхронная системная ловушка | Системное сообщение, отправляемое от одного процесса к другому, обычно не используется для передачи данных, а вместо этого используется для удаленного управления партнерским процессом. | Большинство операционных систем |
Разъем | Данные, отправляемые через сетевой интерфейс в другой процесс на том же компьютере или на другой компьютер в сети. Потоково-ориентированные ( TCP ; данные, записываемые через сокет, требуют форматирования для сохранения границ сообщений) или, реже, ориентированные на сообщения ( UDP , SCTP ). | Большинство операционных систем |
Доменный сокет Unix | Подобно интернет-сокету, но все коммуникации происходят внутри ядра. Сокеты домена используют файловую систему в качестве адресного пространства. Процессы ссылаются на сокет домена как на индексный дескриптор , и несколько процессов могут взаимодействовать с одним сокетом. | Все операционные системы POSIX и Windows 10 |
Очередь сообщений | Поток данных, подобный сокету, но обычно сохраняющий границы сообщения. Обычно реализуемые операционной системой, они позволяют нескольким процессам читать и записывать в очередь сообщений, не подключаясь друг к другу напрямую. | Большинство операционных систем |
Анонимная труба | Однонаправленный канал данных со стандартным вводом и выводом . Данные, записанные в конец канала для записи, буферизуются операционной системой до тех пор, пока не будут прочитаны из конца канала для чтения. Двусторонняя связь между процессами может быть достигнута за счет использования двух каналов в противоположных «направлениях». | Все системы POSIX , Windows |
Именованная труба | Канал, который рассматривается как напильник. Вместо использования стандартного ввода и вывода, как в случае с анонимным каналом, процессы записывают и читают из именованного канала, как если бы это был обычный файл. | Все системы POSIX, Windows, AmigaOS 2.0+ |
Общая память | Многим процессам предоставляется доступ к одному и тому же блоку памяти , который создает общий буфер для взаимодействия процессов друг с другом. | Все системы POSIX, Windows |
Передача сообщений | Позволяет нескольким программам обмениваться данными с использованием очередей сообщений и / или каналов, не управляемых ОС. Обычно используется в моделях параллелизма. | Используется в парадигмах LPC , RPC , RMI и MPI , Java RMI , CORBA , COM , DDS , MSMQ , MailSlots , QNX и др. |
Файл с отображением в память | Файл сопоставлен с ОЗУ и может быть изменен путем непосредственного изменения адресов памяти вместо вывода в поток. Он имеет те же преимущества, что и стандартный файл . | Все системы POSIX, Windows |
Приложения
Интерфейсы удаленного вызова процедур
- Java «S Remote Method Invocation (RMI)
- ONC RPC
- XML-RPC или SOAP
- JSON-RPC
- Шина сообщений (Mbus) (указана в RFC 3259)
- Удаленное взаимодействие .NET
- gRPC
Стек связи платформы
Ниже перечислены системы обмена сообщениями и информационные системы, которые используют механизмы IPC, но сами не реализуют IPC:
- KDE «S Desktop Communications Protocol (DCOP) - устаревший D-Bus
- D-автобус
- OpenWrt использует архитектуру микроавтобуса ubus
- MCAPI Multicore Communications API
- SIMPL Проект синхронного межпроцессного обмена сообщениями для Linux (SIMPL)
- 9P (протокол файловой системы Plan 9)
- Распределенная вычислительная среда (DCE)
- Бережливость
- ZeroC «S Internet Communications Engine (ICE)
- ØMQ
- Enduro / X Промежуточное ПО
- YAMI4
Стек связи операционной системы
Ниже перечислены API, зависящие от платформы или языка программирования:
- Прозрачное межпроцессное взаимодействие Linux (TIPC)
- События Apple Computer от Apple , ранее известные как Interapplication Communications (IAC)
- LINX от Enea для Linux (с открытым исходным кодом) и различные DSP и универсальные процессоры под OSE
- Маха ядра Ports Маха
- Microsoft «s ActiveX , Component Object Model (COM), Microsoft Transaction Server ( COM + ), Distributed Component Object Model (DCOM), динамический обмен данных (DDE), связывание и внедрение объектов (OLE), анонимные трубы , названные трубы , локальная процедура Вызов , почтовые ящики , цикл сообщений , MSRPC , .NET Remoting и Windows Communication Foundation (WCF)
- Novell «s SPX
- POSIX mmap , очереди сообщений , семафоры и разделяемая память
- Сообщения ОС RISC
- Двери Solaris
- Очереди сообщений, семафоры и разделяемая память System V
- OpenBinder Открыть подшивку
- Служба PPS (постоянная публикация / подписка) QNX
Распределенные объектные модели
Ниже перечислены API, специфичные для платформы или языка программирования, которые используют IPC, но сами не реализуют его:
- Libt2n для C ++ только под Linux, обрабатывает сложные объекты и исключения
- Сеансы PHP
- Распределенный Ruby
- Общая архитектура брокера объектных запросов (CORBA)
- Асинхронный IPC Electron , разделяет объекты JSON между основным процессом и процессом рендеринга
Смотрите также
- Программирование компьютерных сетей
- Взаимодействие с последовательными процессами (парадигма CSP)
- Служба распространения данных
- Вызов защищенной процедуры
Рекомендации
- Стивенс, Ричард . Сетевое программирование UNIX, Том 2, Второе издание: Межпроцессное взаимодействие. Прентис Холл, 1999. ISBN 0-13-081081-9
- У. Рамачандран, М. Соломон, М. Вернон Аппаратная поддержка межпроцессного взаимодействия Труды 14-го ежегодного международного симпозиума по компьютерной архитектуре. Питтсбург, Пенсильвания, США. Страницы: 178 - 188. Год публикации: 1987 ISBN 0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Использование соотношения коммуникаций и вычислений при проектировании параллельных программ и прогнозировании производительности 1–4 декабря 1992 г. стр. 238–245 ISBN 0-8186-3200 -3
Внешние ссылки
- Linux IPC с субмикросекундными задержками
- Справочная страница Linux ipc (5), описывающая System V IPC
- Windows IPC
- IPC доступен с использованием Qt
- Сетевое программирование Unix (Том 2: Межпроцессное взаимодействие) У. Ричард Стивенс
- Межпроцессное взаимодействие и конвейеры в C
- DIPC, Распределенная система V IPC