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

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

Межпроцессное взаимодействие (англ. inter-process communication, IPC) — обмен данными между потоками одного и/или разных процессов. Реализуется посредством механизмов, предоставляемых ядром ОС или процессом, использующим механизмы ОС и реализующим новые возможности IPC. Может осуществляться как на одном компьютере, так и между несколькими компьютерами сети.

Из механизмов, предоставляемых ОС и используемых для IPC, можно выделить:

Для оценки производительности различных механизмов IPC используют следующие параметры:

  • пропускная способность (количество сообщений в единицу времени, которое ядро ОС или процесс способна обработать);
  • задержки (время между отправкой сообщения одним потоком и его получением другим потоком).

IPC может называться терминами «межпотоковое/межпоточное взаимодействие» (англ. inter-thread communication) и «межпрограммное взаимодействие» (англ. inter-application communication).

IPC, наряду с механизмами адресации памяти, является основой для разграничения адресного пространства между процессами[1].

Таблица методов IPC[править | править вики-текст]

Метод Реализуется ОС или процессом
Файл Все ОС.
Сигнал Большинство ОС; в некоторых ОС, например, в Windows, сигналы доступны только в библиотеках, реализующих стандартную библиотеку языка Си, и не могут использоваться для IPC.
Сокет Большинство ОС.
Канал Все ОС, совместимые со стандартом POSIX.
Именованный канал Все ОС, совместимые со стандартом POSIX.
Семафор Все ОС, совместимые со стандартом POSIX.
Разделяемая память Все ОС, совместимые со стандартом POSIX.
Обмен сообщениями
(без разделения)
Используется в парадигме MPI, Java RMI, CORBA и других.
Проецируемый в память файл (mmap) Все ОС, совместимые со стандартом POSIX. При использовании временного файла возможно возникновение гонки. ОС Windows также предоставляет этот механизм, но посредством API, отличающегося от API, описанного в стандарте POSIX.
Очередь сообщений Большинство ОС.
Почтовый ящик Некоторые ОС.

Реализации[править | править вики-текст]

Существует несколько API, подходящих для реализации IPC.

API, не зависимые от платформы:

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

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

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

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

Примечания[править | править вики-текст]