Межпроцессное взаимодействие
Межпроцессное взаимодействие (англ. Inter-Process Communication, IPC) в набор способов обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удаленных вызовов (RPC). Методы IPC зависят от пропускной способности и задержки взаимодействия между потоками и типа передаваемых данных.
IPC также может упоминаться как межпотоковое взаимодействие (англ. inter-thread communication), межпоточное взаимодействие и межпрограммное взаимодействие (англ. inter-application communication).
IPC наряду с концепцией адресного пространства является основой для разграничения адресного пространства.[1]
Содержание |
[править] Таблица методов IPC
| Метод | Реализуется (операционной системой или другим окружением) |
|---|---|
| Файл | Все операционные системы. |
| Сигнал | Большинство операционных систем; некоторые системы, как например, Windows, только реализуют сигналы в библиотеке запуска Си, но не обеспечивают их полноценной поддержки для использования методов IPC. |
| Сокет | Большинство операционных систем. |
| Канал | Все системы, соответствующие POSIX. |
| Именованный канал | Все системы, соответствующие POSIX. |
| Семафор | Все системы, соответствующие POSIX. |
| Разделяемая память | Все системы, соответствующие POSIX. |
| Обмен сообщениями (без разделения) |
Используется в парадигме MPI, Java RMI, CORBA и других. |
| Проецируемый в память файл | Все системы, соответствующие POSIX; несет риск появления состояния гонки в случае использования временного файла. Windows также поддерживает эту технологию, но использует API отличный от POSIX. |
| Очередь сообщений | Большинство операционных систем. |
| Почтовый ящик | Некоторые операционные системы. |
[править] Реализации
Существует несколько API, которые могут использоваться для IPC. Вот несколько платформо-независимых API:
- анонимные каналы и именованные каналы
- CORBA
- D-Bus от Freedesktop.org
- Distributed Computing Environment (DCE)
- Шина сообщений (Message Bus или MBUS) (описана в RFC 3259)
- Lightweight Communications and Marshalling (LCM)
- ONC RPC
- Сокеты
- XML XML-RPC или SOAP
- Thrift
- TIPC
- Internet Communications Engine (ICE) от ZeroC
- при обращении к локальному IP функции IPC выполняют сетевые протоколы, для этих целей у каждого компьютера есть специальный IP-адрес.
Ниже указана платформа или язык программирования указанных API:
- Механизм Apple events от Apple Inc. (ранее известный как Interapplication Communications (IAC)).
- Java Remote Method Invocation (RMI)
- Desktop Communications Protocol(DCOP) (часть KDE)
- 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
- POSIX mmap, очереди сообщений, семафоры и разделяемая память
- Сообщения RISC OS
- Технология Solaris Doors
- Очереди сообщений, семафоры и разделяемая память UNIX System V
- Распределенный Ruby
- Распределенное межпроцессное взаимодействие (Distributed Inter-Process Communication)
[править] См. также
[править] Ссылки
- в‘ Йохан Лиетке. On µ-Kernel Construction, Proc. 15th ACM Symposium on Operating System Principles (SOSP), декабрь 1995
- Stevens, Richard. UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9
- U. Ramachandran, M. Solomon, M. Vernon Hardware support for interprocess communication Proceedings of the 14th annual international symposium on Computer architecture. Pittsburgh, Pennsylvania, United States. Pages: 178в188. Year of Publication: 1987 ISBN 0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Using communication-to-computation ratio in parallel program designand performance prediction 1-4 December 1992. pp. 238в245 ISBN 0-8186-3200-3
[править] Дополнительные источники
| Межпроцессное взаимодействие в информатике | |
|---|---|
| Методы | Файл · Memory-mapped file · Обмен сообщениями · Message queue and mailbox · Именованный канал · Anonymous pipe · Pipe · Семафор (критическая секция, мьютекс, фьютекс) · Shared memory · Сигнал · Сокет · Unix domain socket |
| Избранные протоколы и стандарты |
Apple events · COM+ · CORBA · D-Bus · DCE · DCOP · DIPC · ICE · LINX · ONC RPC · POSIX (различные методы) · SOAP · Thrift · TIPC · XML-RPC |
