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

Как компьютерные операционные системы обеспечивают обмен данными
Система сетевых вычислений , которая соединяет множество персональных компьютеров через Интернет посредством межпроцессного сетевого взаимодействия.

В информатике межпроцессное взаимодействие ( 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, но сами не реализуют его:

Смотрите также

Ссылки

  • Стивенс, Ричард . Сетевое программирование UNIX, том 2, второе издание: Межпроцессное взаимодействие. Prentice Hall, 1999. ISBN  0-13-081081-9
  • U. Ramachandran, M. Solomon, M. Vernon Аппаратная поддержка межпроцессного взаимодействия Труды 14-го ежегодного международного симпозиума по архитектуре компьютеров. Питтсбург, Пенсильвания, США. Страницы: 178 - 188. Год издания: 1987 ISBN 0-8186-0776-9 
  • Кровелла, М. Бьянкини, Р. Леблан, Т. Маркатос, Э. Вишневски, Р. Использование соотношения коммуникации к вычислениям при проектировании параллельных программ и прогнозировании производительности 1–4 декабря 1992 г. стр. 238–245 ISBN 0-8186-3200-3 
  1. ^ ab «Межпроцессное взаимодействие». Microsoft.
  2. ^ Камурати, П. (1993). «Межпроцессные коммуникации для проектирования на уровне системы». Международный семинар по проектированию аппаратного и программного обеспечения .
  3. ^ "Windows/WSL Interop with AF_UNIX". Microsoft. 7 февраля 2018 г. Получено 25 мая 2018 г.
  4. ^ "Параллельное программирование - связь между процессами"
  5. ^ "IpcMain | Электрон".
  • Страница руководства Linux ipc(5) с описанием System V IPC
  • Windows IPC
  • IPC доступен с использованием Qt
  • Сетевое программирование Unix (том 2: межпроцессное взаимодействие) У. Ричарда Стивенса
  • Межпроцессное взаимодействие и каналы в C
  • DIPC, распределенная система V IPC
Взято с "https://en.wikipedia.org/w/index.php?title=Межпроцессное_взаимодействие&oldid=1237651895"