Эта статья включает список общих ссылок , но в ней отсутствуют соответствующие встроенные цитаты . ( Август 2015 ) |
В информатике межпроцессное взаимодействие ( IPC ), также называемое межпроцессным взаимодействием , — это механизмы, предоставляемые операционной системой для процессов , чтобы управлять общими данными. Обычно приложения могут использовать IPC, классифицируемые как клиенты и серверы , где клиент запрашивает данные, а сервер отвечает на запросы клиента. [1] Многие приложения являются как клиентами, так и серверами, что обычно наблюдается в распределенных вычислениях .
IPC очень важен для процесса проектирования микроядер и наноядер , которые сокращают количество функций, предоставляемых ядром. Эти функции затем достигаются путем взаимодействия с серверами через IPC, что приводит к значительному увеличению коммуникации по сравнению с обычным монолитным ядром. Интерфейсы IPC обычно охватывают переменные аналитические структуры фреймворка. Эти процессы обеспечивают совместимость между многовекторными протоколами, на которых основаны модели IPC. [2]
Механизм IPC может быть синхронным или асинхронным. Примитивы синхронизации могут использоваться для синхронного поведения с асинхронным механизмом IPC.
Различные подходы к IPC были адаптированы к различным требованиям к программному обеспечению , таким как производительность , модульность и системные обстоятельства, такие как пропускная способность сети и задержка . [1]
Метод | Краткое описание | Предоставляется ( операционными системами или другими средами) |
---|---|---|
Файл | Запись, хранящаяся на диске, или запись, синтезируемая по запросу файловым сервером, к которой могут получить доступ несколько процессов. | Большинство операционных систем |
Файл коммуникаций | Уникальная форма IPC конца 1960-х годов, которая наиболее близка к протоколу 9P Plan 9 . | Система разделения времени Дартмута |
Сигнал ; также Асинхронная системная ловушка | Системное сообщение, отправляемое одним процессом другому, обычно не используемое для передачи данных, а используемое для удаленного управления партнерским процессом. | Большинство операционных систем |
Гнездо | Данные, отправляемые через сетевой интерфейс, либо другому процессу на том же компьютере, либо другому компьютеру в сети. Ориентированные на поток ( TCP ; данные, записанные через сокет, требуют форматирования для сохранения границ сообщения) или, реже, ориентированные на сообщения ( UDP , SCTP ). | Большинство операционных систем |
Сокет домена Unix | Аналогично интернет-сокету, но вся коммуникация происходит внутри ядра. Доменные сокеты используют файловую систему в качестве своего адресного пространства. Процессы ссылаются на доменный сокет как на inode , и несколько процессов могут взаимодействовать с одним сокетом | Все операционные системы POSIX и Windows 10 [3] |
Очередь сообщений | Поток данных, похожий на сокет, но обычно сохраняющий границы сообщений. Обычно реализуемые операционной системой, они позволяют нескольким процессам читать и писать в очередь сообщений без прямого подключения друг к другу. | Большинство операционных систем |
Анонимная трубка | Однонаправленный канал данных, использующий стандартный ввод и вывод . Данные, записанные на конец записи канала, буферизуются операционной системой до тех пор, пока они не будут прочитаны с конца чтения канала. Двусторонняя связь между процессами может быть достигнута путем использования двух каналов в противоположных "направлениях". | Все системы POSIX , Windows |
Именованная труба | Канал, который рассматривается как файл. Вместо использования стандартного ввода и вывода, как в случае с анонимным каналом, процессы записывают и считывают данные из именованного канала, как если бы это был обычный файл. | Все системы POSIX, Windows, AmigaOS 2.0+ |
Общая память | Множеству процессов предоставляется доступ к одному и тому же блоку памяти , что создает общий буфер для взаимодействия процессов друг с другом. | Все системы POSIX, Windows |
Передача сообщений | Позволяет нескольким программам общаться с помощью очередей сообщений и/или каналов, не управляемых ОС. Обычно используется в моделях параллелизма. | Используется в парадигмах LPC , RPC , RMI и MPI , Java RMI , CORBA , COM , DDS , MSMQ , MailSlots , QNX и других |
Файл, отображенный в памяти | Файл, сопоставленный с ОЗУ , может быть изменен путем прямого изменения адресов памяти вместо вывода в поток. Он имеет те же преимущества, что и стандартный файл . | Все системы POSIX, Windows |
Ниже перечислены системы обмена сообщениями и информационные системы, которые используют механизмы IPC, но сами не реализуют IPC:
Ниже приведены API-интерфейсы, специфичные для платформы или языка программирования:
Ниже приведены API-интерфейсы, специфичные для платформы или языка программирования, которые используют IPC, но сами не реализуют его: