В информатике , межпроцессного взаимодействия или межпроцессного взаимодействия ( IPC ) относится конкретно к механизмам операционная система обеспечивает , чтобы позволить процессам для управления общими данными. Как правило, приложения могут использовать IPC, классифицируемые как клиенты и серверы , где клиент запрашивает данные, а сервер отвечает на запросы клиентов. [1] Многие приложения являются одновременно клиентами и серверами, как это обычно бывает в распределенных вычислениях .
IPC очень важен для процесса проектирования микроядер и наноядер , которые сокращают количество функций, предоставляемых ядром. Эти функции затем достигаются путем связи с серверами через IPC, что приводит к значительному увеличению обмена данными по сравнению с обычным монолитным ядром. Интерфейсы IPC обычно включают в себя изменяемые аналитические структуры. Эти процессы обеспечивают совместимость между многовекторными протоколами, на которых основаны модели IPC. [2]
Механизм IPC бывает синхронным или асинхронным. Примитивы синхронизации могут использоваться для обеспечения синхронного поведения с асинхронным механизмом IPC.
Подходы
Различные подходы к IPC были адаптированы к различным требованиям к программному обеспечению , таким как производительность , модульность и системные обстоятельства, такие как пропускная способность сети и задержка . [1]
Метод | Краткое описание | Предоставляется ( операционными системами или другими средами) |
---|---|---|
Файл | Запись, хранящаяся на диске, или запись, синтезированная по запросу файловым сервером, к которой могут обращаться несколько процессов. | Большинство операционных систем |
Файл сообщений | Уникальная форма IPC в конце 1960-х годов , который наиболее близко напоминает план 9 «s протокол 9P | Дартмутская система разделения времени |
Сигнал ; также Асинхронная системная ловушка | Системное сообщение, отправляемое от одного процесса к другому, обычно не используется для передачи данных, а вместо этого используется для удаленного управления партнерским процессом. | Большинство операционных систем |
Разъем | Данные, отправляемые через сетевой интерфейс в другой процесс на том же компьютере или на другой компьютер в сети. Потоково-ориентированные ( TCP ; данные, записываемые через сокет, требуют форматирования для сохранения границ сообщений) или, реже, ориентированные на сообщения ( UDP , SCTP ). | Большинство операционных систем |
Доменный сокет Unix | Подобно интернет-сокету, но все коммуникации происходят внутри ядра. Сокеты домена используют файловую систему в качестве адресного пространства. Процессы ссылаются на сокет домена как на индексный дескриптор , и несколько процессов могут взаимодействовать с одним сокетом. | Все операционные системы 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 |
Приложения
Интерфейсы удаленного вызова процедур
- Java «S Remote Method Invocation (RMI)
- ONC RPC
- XML-RPC или SOAP
- JSON-RPC
- Шина сообщений (Mbus) (указана в RFC 3259)
- Удаленное взаимодействие .NET
- gRPC
Стек связи платформы
Ниже перечислены системы обмена сообщениями и информационные системы, которые используют механизмы IPC, но сами не реализуют IPC:
- KDE «S Desktop Communications Protocol (DCOP) - устаревший D-Bus
- D-автобус
- OpenWrt использует архитектуру микроавтобуса ubus
- MCAPI Multicore Communications API
- SIMPL Проект синхронного межпроцессного обмена сообщениями для Linux (SIMPL)
- 9P (протокол файловой системы Plan 9)
- Распределенная вычислительная среда (DCE)
- Бережливость
- ZeroC «S Internet Communications Engine (ICE)
- ØMQ
- Enduro / X Промежуточное ПО
- YAMI4
Стек связи операционной системы
Ниже перечислены API, зависящие от платформы или языка программирования:
- Прозрачное межпроцессное взаимодействие Linux (TIPC)
- События Apple Computer от Apple , ранее известные как Interapplication Communications (IAC)
- LINX от Enea для Linux (с открытым исходным кодом) и различные DSP и универсальные процессоры под OSE
- Маха ядра Ports Маха
- Microsoft «s ActiveX , Component Object Model (COM), Microsoft Transaction Server ( COM + ), Distributed Component Object Model (DCOM), динамический обмен данных (DDE), связывание и внедрение объектов (OLE), анонимные трубы , названные трубы , локальная процедура Вызов , почтовые ящики , цикл сообщений , MSRPC , .NET Remoting и Windows Communication Foundation (WCF)
- Novell «s SPX
- POSIX mmap , очереди сообщений , семафоры , [4] и разделяемая память
- Сообщения ОС RISC
- Двери Solaris
- Очереди сообщений, семафоры и разделяемая память System V
- OpenBinder Открыть подшивку
- Служба PPS (постоянная публикация / подписка) QNX
Распределенные объектные модели
Ниже перечислены API, специфичные для платформы или языка программирования, которые используют IPC, но сами не реализуют его:
- Libt2n для C ++ только под Linux, обрабатывает сложные объекты и исключения
- Сеансы PHP
- Распределенный Ruby
- Общая архитектура брокера объектных запросов (CORBA)
Смотрите также
- Программирование компьютерных сетей
- Взаимодействие с последовательными процессами (парадигма CSP)
- Служба распространения данных
- Вызов защищенной процедуры
Рекомендации
- ^ а б «Межпроцессное взаимодействие» . Microsoft.
- ^ Камурати, П. (1993). «Межпроцессные коммуникации для проектирования системного уровня». Международный семинар по разработке программного и аппаратного обеспечения .
- ^ «Взаимодействие Windows / WSL с AF_UNIX» . Microsoft . Проверено 25 мая 2018 .
- ^ « Параллельное программирование - связь между процессами »
- Стивенс, Ричард . Сетевое программирование UNIX, Том 2, Второе издание: Межпроцессное взаимодействие. Прентис Холл, 1999. ISBN 0-13-081081-9
- У. Рамачандран, М. Соломон, М. Вернон Аппаратная поддержка межпроцессного взаимодействия Труды 14-го ежегодного международного симпозиума по компьютерной архитектуре. Питтсбург, Пенсильвания, США. Страницы: 178 - 188. Год издания: 1987. ISBN 0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Использование соотношения коммуникаций и вычислений при проектировании параллельных программ и прогнозировании производительности 1–4 декабря 1992 г., стр. 238–245 ISBN 0-8186-3200-3
Внешние ссылки
- Linux IPC с субмикросекундными задержками
- Справочная страница Linux ipc (5), описывающая System V IPC
- Windows IPC
- IPC доступен с использованием Qt
- Сетевое программирование Unix (Том 2: Межпроцессное взаимодействие) У. Ричард Стивенс
- Межпроцессное взаимодействие и конвейеры в C
- DIPC, Распределенная система V IPC