Межпроцессного взаимодействия - Inter-process communication
Эта статья включает в себя список общих использованная литература, но он остается в основном непроверенным, потому что ему не хватает соответствующих встроенные цитаты.Август 2015 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
В Информатика, межпроцессного взаимодействия или межпроцессного взаимодействия (МПК) относится конкретно к механизмам Операционная система обеспечивает возможность процессы для управления общими данными. Как правило, приложения могут использовать IPC, относящиеся к категории клиенты и серверы, где клиент запрашивает данные, а сервер отвечает на запросы клиента.[1] Многие приложения являются одновременно клиентами и серверами, как обычно распределенных вычислений.
IPC очень важен для процесса проектирования микроядра и наноядра, которые сокращают количество функций, предоставляемых ядром. Эти функции затем достигаются путем связи с серверами через IPC, что приводит к значительному увеличению обмена данными по сравнению с обычным монолитным ядром. Интерфейсы IPC обычно включают в себя изменяемые аналитические структуры. Эти процессы обеспечивают совместимость между многовекторными протоколами, на которых основаны модели IPC.[2]
Механизм IPC либо синхронный или асинхронный. Примитивы синхронизации может использоваться для синхронного поведения с асинхронным механизмом IPC.
Подходы
Различные подходы к IPC были адаптированы для разных требования к программному обеспечению, такие как спектакль, модульность, и системные обстоятельства, такие как пропускная способность сети и задержка.[1]
Метод | Краткое описание | Предоставлено (операционные системы или в других средах) |
---|---|---|
файл | Запись, хранящаяся на диске, или запись, синтезированная по запросу файловым сервером, к которой могут получить доступ несколько процессов. | Большинство операционных систем |
Файл сообщений | Уникальная форма IPC конца 1960-х годов, которая больше всего похожа на План 9 с Протокол 9P | Дартмутская система разделения времени |
Сигнал; также Асинхронная системная ловушка | Системное сообщение, отправляемое от одного процесса к другому, обычно не используется для передачи данных, а вместо этого используется для удаленного управления партнерским процессом. | Большинство операционных систем |
Разъем | Данные, отправляемые через сетевой интерфейс другому процессу на том же компьютере или другому компьютеру в сети. Ориентированный на поток (TCP; данные, записываемые через сокет, требуют форматирования для сохранения границ сообщения) или, что реже, ориентированы на сообщения (UDP, SCTP ). | Большинство операционных систем |
Доменный сокет Unix | Подобно интернет-сокету, но все коммуникации происходят внутри ядра. Доменные сокеты используют файловую систему в качестве адресного пространства. Процессы ссылаются на доменный сокет как на индекс, и несколько процессов могут взаимодействовать с одним сокетом | Все операционные системы POSIX и Windows 10[3] |
Очередь сообщений | Поток данных, подобный сокету, но обычно сохраняющий границы сообщения. Обычно реализуемые операционной системой, они позволяют нескольким процессам читать и писать в очередь сообщений не будучи напрямую связаны друг с другом. | Большинство операционных систем |
Анонимная труба | Однонаправленный канал данных с использованием стандартный ввод и вывод. Данные, записываемые в конец канала для записи, буферизуются операционной системой до тех пор, пока не будут прочитаны из конца канала для чтения. Двусторонняя связь между процессами может быть достигнута с помощью двух каналов в противоположных «направлениях». | Все POSIX системы, Windows |
Именованная труба | Канал, который рассматривается как напильник. Вместо использования стандартного ввода и вывода, как в случае с анонимным каналом, процессы записывают и читают из именованного канала, как если бы это был обычный файл. | Все системы POSIX, Windows, AmigaOS 2.0+ |
Общая память | Несколько процессов получают доступ к одному блоку объем памяти, который создает общий буфер для взаимодействия процессов друг с другом. | Все системы POSIX, Windows |
Передача сообщений | Позволяет нескольким программам обмениваться данными с использованием очередей сообщений и / или каналов, не управляемых ОС. Обычно используется в моделях параллелизма. | Используется в RPC, RMI, и MPI парадигмы Java RMI, CORBA, DDS, MSMQ, Почтовые ящики, QNX, другие |
Файл с отображением в память | Файл сопоставлен с ОЗУ и может быть изменен путем прямого изменения адресов памяти вместо вывода в поток. Он имеет те же преимущества, что и стандартный файл. | Все системы POSIX, Windows |
Приложения
Интерфейсы удаленного вызова процедур
- Ява с Вызов удаленного метода (RMI)
- ONC RPC
- XML-RPC или МЫЛО
- JSON-RPC
- Шина сообщений (Mbus) (указана в RFC 3259 )
- .NET Remoting
- gRPC
Стек связи платформы
Ниже перечислены системы обмена сообщениями и информационные системы, которые используют механизмы IPC, но сами не реализуют IPC:
- KDE с Протокол связи рабочего стола (DCOP) - не рекомендуется D-Bus
- D-автобус
- OpenWrt использует ubus архитектура микроавтобуса
- MCAPI API многоядерных коммуникаций
- ПРОСТО Проект синхронного межпроцессного обмена сообщениями для Linux (ПРОСТОЙ)
- 9P (Протокол файловой системы Plan 9)
- Распределенная вычислительная среда (DCE)
- Бережливость
- ZeroC с Internet Communications Engine (ДВС)
- ØMQ
- Эндуро / X ПО промежуточного слоя
- YAMI4
Стек связи операционной системы
Ниже перечислены API, зависящие от платформы или языка программирования:
- Прозрачное межпроцессное взаимодействие Linux (TIPC)
- Компьютер Apple с События Apple, ранее известная как Interapplication Communications (IAC)
- Энеи LINX для Linux (с открытым исходным кодом) и различных DSP и универсальных процессоров под OSE
- В Ядро Маха Порты Маха
- Microsoft с ActiveX, Компонентная объектная модель (COM), Сервер транзакций Microsoft (COM + ), Распределенная компонентная объектная модель (DCOM), Динамический обмен данными (DDE), Связывание и внедрение объектов (OLE), анонимные трубы, именованные каналы, Вызов местной процедуры, Почтовые ящики, Цикл сообщений, MSRPC, .NET Remoting, и Фонд связи Windows (WCF)
- Novell с SPX
- POSIX mmap, очереди сообщений, семафоры,[4] и Общая память
- ОС RISC сообщения
- Солярис Двери
- Система V очереди сообщений, семафоры и разделяемая память
- OpenBinder Открыть папку
- QNX служба PPS (постоянная публикация / подписка)
Распределенные объектные модели
Ниже перечислены 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