28-07-2023
Межпроцессное взаимодействие (англ. 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 domain socket |
Избранные протоколы и стандарты |
Apple events · COM+ · CORBA · D-Bus · DCE · DCOP · DIPC · ICE · LINX · ONC RPC · POSIX (различные методы) · SOAP · Thrift · TIPC · XML-RPC |
Inter-process communication.