Межпроцессное взаимодействие (англ. Inter-Process Communication, IPC) — набор способов обмена данными между множеством потоков в одном или более процессах. Процессы могут быть запущены на одном или более компьютерах, связанных между собой сетью. IPC-способы делятся на методы обмена сообщениями, синхронизации, разделяемой памяти и удаленных вызовов (RPC). Методы IPC зависят от пропускной способности и задержки взаимодействия между потоками и типа передаваемых данных.
IPC также может упоминаться как межпотоковое взаимодействие (англ. inter-thread communication), межпоточное взаимодействие и межпрограммное взаимодействие (англ. inter-application communication).
IPC наряду с концепцией адресного пространства является основой для разграничения адресного пространства.[1]
Метод | Реализуется (операционной системой или другим окружением) |
---|---|
Файл | Все операционные системы. |
Сигнал | Большинство операционных систем; некоторые системы, как например, Windows, только реализуют сигналы в библиотеке запуска Си, но не обеспечивают их полноценной поддержки для использования методов IPC. |
Сокет | Большинство операционных систем. |
Канал | Все системы, соответствующие POSIX. |
Именованный канал | Все системы, соответствующие POSIX. |
Семафор | Все системы, соответствующие POSIX. |
Разделяемая память | Все системы, соответствующие POSIX. |
Обмен сообщениями (без разделения) |
Используется в парадигме MPI, Java RMI, CORBA и других. |
Проецируемый в память файл | Все системы, соответствующие POSIX; несет риск появления состояния гонки в случае использования временного файла. Windows также поддерживает эту технологию, но использует API отличный от POSIX. |
Очередь сообщений | Большинство операционных систем. |
Почтовый ящик | Некоторые операционные системы. |
Существует несколько API, которые могут использоваться для IPC. Вот несколько платформо-независимых API:
API, специфичные для определённых платформ или языков программирования:
Межпроцессное взаимодействие в информатике | |
---|---|
Методы | Файл · Memory-mapped file · Обмен сообщениями · Message queue and mailbox · Именованный канал · Anonymous pipe · Pipe · Семафор (критическая секция, мьютекс, фьютекс) · Shared memory · Сигнал · Сокет · Сокет домена UNIX |
Избранные протоколы и стандарты |
Apple events · COM+ · CORBA · D-Bus · DCE · DCOP · DIPC · ICE · LINX · ONC RPC · POSIX (различные методы) · SOAP · Thrift · TIPC · XML-RPC |
Межпроцессное взаимодействие c++, межпроцессное взаимодействие в ос критические области.
GDV, Эдвард Уайт, Файл:Kolej Warszawsko-Petersburska - mapa.jpg.