Skip to main content

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








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


Материал из Википедии — свободной энциклопедии

Перейти к навигации
Перейти к поиску



Межпроцессное взаимодействие (англ. inter-process communication, IPC) — обмен данными между потоками одного или разных процессов. Реализуется посредством механизмов, предоставляемых ядром ОС или процессом, использующим механизмы ОС и реализующим новые возможности IPC. Может осуществляться как на одном компьютере, так и между несколькими компьютерами сети.


Из механизмов, предоставляемых ОС и используемых для IPC, можно выделить:


  • механизмы обмена сообщениями;

  • механизмы синхронизации;

  • механизмы разделения памяти;

  • механизмы удалённых вызовов (RPC).

Для оценки производительности различных механизмов IPC используют следующие параметры:


  • пропускная способность (количество сообщений в единицу времени, которое ядро ОС или процесс способно обработать);

  • задержки (время между отправкой сообщения одним потоком и его получением другим потоком).

IPC может называться терминами межпотоковое взаимодействие (англ. inter-thread communication) и межпрограммное взаимодействие (англ. inter-application communication).


Межпроцессное взаимодействие, наряду с механизмами адресации памяти, является основой для разграничения адресного пространства между процессами[1].




Содержание





  • 1 Таблица методов межпроцессного взаимодействия


  • 2 См. также


  • 3 Примечания


  • 4 Литература


  • 5 Ссылки




Таблица методов межпроцессного взаимодействия[править | править код]




























МетодРеализуется ОС или процессом
ФайлВсе ОС.
СигналБольшинство ОС; в некоторых ОС, например, в Windows, сигналы доступны только в библиотеках, реализующих стандартную библиотеку языка Си, и не могут использоваться для IPC.
СокетБольшинство ОС.
КаналВсе ОС, совместимые со стандартом POSIX.
Именованный каналВсе ОС, совместимые со стандартом POSIX.

Неименованный канал
Все ОС, совместимые со стандартом POSIX.
СемафорВсе ОС, совместимые со стандартом POSIX.
Разделяемая памятьВсе ОС, совместимые со стандартом POSIX.

Обмен сообщениями
(без разделения)
Используется в парадигме MPI, Java RMI, CORBA и других.

Проецируемый в память файл (mmap)
Все ОС, совместимые со стандартом POSIX. При использовании временного файла возможно возникновение гонки. ОС Windows также предоставляет этот механизм, но посредством API, отличающегося от API, описанного в стандарте POSIX.

Очередь сообщений (Message queue)
Большинство ОС.
Почтовый ящикНекоторые ОС.


См. также[править | править код]


  • Сигналы межпроцессного взаимодействия


Примечания[править | править код]




  1. Йохен Лидтке (нем. Jochen Liedtke (англ.)). On µ-Kernel construction (недоступная ссылка) // Proc. 15th ACM Symposium on operating system principles (SOSP). Декабрь 1995




Литература[править | править код]



  • Stevens, Richard. UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9

  • U. Ramachandran, M. Solomon, M. Vernon Hardware support for interprocess communication Proceedings of the 14th annual international symposium on Computer architecture. Pittsburgh, Pennsylvania, United States. Pages: 178—188. Year of Publication: 1987 ISBN 0-8186-0776-9

  • Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Using communication-to-computation ratio in parallel program designand performance prediction 1-4 December 1992. pp. 238—245 ISBN 0-8186-3200-3


Ссылки[править | править код]


  • Linux System V IPC Main Page

  • Windows IPC











Источник — https://ru.wikipedia.org/w/index.php?title=Межпроцессное_взаимодействие&oldid=88843291





Навигация

























(window.RLQ=window.RLQ||).push(function()mw.config.set("wgPageParseReport":"limitreport":"cputime":"0.120","walltime":"0.197","ppvisitednodes":"value":721,"limit":1000000,"ppgeneratednodes":"value":0,"limit":1500000,"postexpandincludesize":"value":18123,"limit":2097152,"templateargumentsize":"value":1056,"limit":2097152,"expansiondepth":"value":13,"limit":40,"expensivefunctioncount":"value":2,"limit":500,"unstrip-depth":"value":0,"limit":20,"unstrip-size":"value":819,"limit":5000000,"entityaccesscount":"value":0,"limit":400,"timingprofile":["100.00% 150.858 1 -total"," 38.30% 57.785 1 Шаблон:Примечания"," 37.55% 56.649 1 Шаблон:Rq"," 33.90% 51.142 1 Шаблон:Ambox"," 16.64% 25.099 1 Шаблон:Ref-en"," 14.83% 22.371 1 Шаблон:Ref-lang"," 13.76% 20.755 2 Шаблон:Ref-info"," 13.66% 20.607 1 Шаблон:IPC"," 11.93% 17.990 1 Шаблон:Навигационная_таблица"," 4.90% 7.385 16 Шаблон:Rq/"],"scribunto":"limitreport-timeusage":"value":"0.029","limit":"10.000","limitreport-memusage":"value":1219962,"limit":52428800,"cachereport":"origin":"mw1243","timestamp":"20181010152052","ttl":1900800,"transientcontent":false);mw.config.set("wgBackendResponseTime":123,"wgHostname":"mw1329"););

Popular posts from this blog

大跃进

马相伯