Взаимодействие между процессами ( англ. Inter-Process Communication, сокращенно англ. IPC ) - набор средств обмена сообщениями процессами.
Средства IPC могут использоваться для взаимодействия процессов :
-
которые выполняются на одном компьютере (для многомашинных систем - под управлением одной операционной системы), также известные как собственно IPC;
-
которые выполняются на разных компьютерах (для многомашинных систем - под управлением отдельных операционных систем), также известные как средства межмашинного взаимодействия ;
-
для обеспечения взаимодействия процесса с самим собой - например, для синхронизации или обмена данными между различными нитями одного процесса.
Взаимодействие процессов внутри одной машины
Для взаимодействия процессов, выполняемых на одном компьютере (под управлением одной операционной системы ) используют (механизмы взаимодействия обеспечиваются ядром операционной системы, в которой выполняются процессы):
-
сигналы - асинхронные (неожиданные) сообщения, не передают данные между процессами, а извещают о событии (чрезвычайной ситуации), на которую процесс должен отреагировать выполнением предустановленной действия (функции или команды в зависимости от использованных средств программирования);
-
неименованные и именованные каналы ( англ. pipes ) передачи данных как синхронных (ожидаемых) сообщений; отправки сообщения происходит подобно операции записи в файл, получения - подобно чтения данных из файла, если канал пуст - процесс, который ожидает данные приостанавливается до поступления данных в канал.
-
очереди сообщений - пакеты данных, передаваемые между процессами с увидомленням получателя о поступлении пакета;
-
сегменты делимой памяти - средство, позволяющее нескольким процессам совместно использовать (разделять) фрагмент оперативной памяти с целью обмена данными; отправка данных происходит путем записи в память, получения - чтением из памяти.
Взаимодействие процессов, выполняемых на разных машинах
Взаимодействие процессов, выполняемых на разных компьютерах - в управлении отдельных операционных систем, межмашинной взаимодействие - обеспечивается через специальную абстракцию - сокет. В зависимости от уровня использования сокетов существуют следующие средства межмашинного взаимодействия процессов (механизмы взаимодействия согласовано обеспечиваются ядрами операционных систем, в которых выполняются процессы):
-
прямое использование сокетов - технология, требующая программирования на низком уровне и реализации протокола передачи данных;
-
RPC (Remote Procedure Call), удаленный вызов процедур - технология, обеспечивающая взаимодействие между процессами подобно вызова функций, данные в одну сторону передаются как аргументы функций (удаленных процедур), в другом - как результаты выполнения функций (удаленных процедур).
-
CORBA - технология, предусматривающая возможность взаимодействия между процессами как между объектами CORBA, является дальнейшим развитием технологии RPC.
Также существуют и другие технологии, которые в основном являются модификациями существующих: XML-RPC, SOAP и т.п.. Кроме того, сокеты могут использоваться также для взаимодействия процессов в пределах одной машины, так например работает x.Org.
Дополнительные сведения
Средства межмашинного взаимодействия также могут использоваться для обеспечения процессов, выполняемых на одной машине, все указанные средства также могут использоваться для обмена данных разных нитей одного процесса.
Одним из наиболее элегантно реализованных средств IPC является конвейер команд операционных систем UNIX (базируется на механизме неименованные каналов передачи данных).