Межпроцессное взаимодействие
Hабор способов обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удаленных вызовов (RPC). Методы IPC зависят от пропускной способности и задержки взаимодействия между потоками и типа передаваемых данных.
IPC также может упоминаться как межпотоковое взаимодействие (англ. inter-thread communication), межпоточное взаимодействие и межпрограммное взаимодействие (англ. inter-application communication).
IPC наряду с концепцией адресного пространства является основой для разграничения адресного пространства.Реализации
Существует несколько API, которые могут использоваться для IPC. Вот несколько платформо-независимых API:
- анонимные каналы и именованные каналы
- CORBA
- D-Bus от Freedesktop.org
- Distributed Computing Environment (DCE)
- Шина сообщений (Message Bus или MBUS) (описана в RFC 3259)
- Lightweight Communications and Marshalling (LCM)
- ONC RPC
- Сокеты
- XMLXML-RPC или SOAP
- Thrift
- TIPC
- Internet Communications Engine (ICE) от ZeroC
- при обращении к локальному IP функции IPC выполняют сетевые протоколы, для этих целей у каждого компьютера есть специальный IP-адрес.
Ниже указана платформа или язык программирования указанных API:
- Механизм Apple events от Apple Inc. (ранее известный как Interapplication Communications (IAC)).
- JavaRemote Method Invocation (RMI)
- KDE's Desktop Communications Protocol (DCOP)
- Libt2n для C++ только под Linux, обрабатывает сложные объекты и исключения
- Порты Machа
- Технологии компании Microsoft: ActiveX, Component Object Model (COM), Microsoft Transaction Server (COM+), Distributed Component Object Model (DCOM), Dynamic Data Exchange (DDE), Object Linking and Embedding (OLE), анонимные каналы, именованные каналы, Local Procedure Call, Message loop, MSRPC, .NET Remoting и Windows Communication Foundation
- SPX компании Novell
- POSIXmmap, очереди сообщений, семафоры и разделяемая память
- Сообщения RISC OS
- Технология SolarisDoors
- Очереди сообщений, семафоры и разделяемая памятьUNIX System V
- Распределенный Ruby
- Распределенное межпроцессное взаимодействие (Distributed Inter-Process Communication)
Таблица методов IPC:
Метод | Реализуется (операционной системой или другим окружением) |
---|---|
Файл | Все операционные системы. |
Сигнал | Большинство операционных систем; некоторые системы, как например, Windows, только реализуют сигналы в библиотеке запуска Си, но не обеспечивают их полноценной поддержки для использования методов IPC. |
Сокет | Большинство операционных систем. |
Канал | Все системы, соответствующие POSIX. |
Именованный канал | Все системы, соответствующие POSIX. |
Семафор | Все системы, соответствующие POSIX. |
Разделяемая память | Все системы, соответствующие POSIX. |
Обмен сообщениями (без разделения) | Используется в парадигме MPI, JavaRMI, CORBA и других. |
Проецируемый в память файл | Все системы, соответствующие POSIX; несет риск появления состояния гонки в случае использования временного файла. Windows также поддерживает эту технологию, но использует API отличный от POSIX. |
Очередь сообщений | Большинство операционных систем. |
Почтовый ящик | Некоторые операционные системы. |