Межпроцессное взаимодействие

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Межпроцессное взаимодействие (англ. 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:

API, специфичные для определённых платформ или языков программирования:

См. также[править | править вики-текст]

Ссылки[править | править вики-текст]

  1. Йохан Лиетке. On µ-Kernel Construction, Proc. 15th ACM Symposium on Operating System Principles (SOSP), декабрь 1995

Дополнительные источники[править | править вики-текст]