Межпроцессное взаимодействие: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Addbot (обсуждение | вклад)
м Перемещение 23 интервики на Викиданные, d:q751436
Нет описания правки
Строка 1:
'''Межпроцессное взаимодействие''' ({{lang-en|Inter'''i'''nter-Process'''p'''rocess Communication'''c'''ommunication}}, '''IPC'''}}) — набор способов обменаобмен данными между множеством [[МногопоточностьПоток выполнения|потоковпотоками]] в одномодного и/или болееразных [[Процесс (информатика)|процессахпроцессов]]. ПроцессыРеализуется могутпосредством быть запущены на одном или более компьютерахмеханизмов, связанных между собойпредоставляемых [[КомпьютернаяЯдро операционной сетьсистемы|сетьюядром]]. IPC-способы делятся на методы [[ОбменОперационная сообщениямисистема|обмена сообщениямиОС]], или [[СинхронизацияПроцесс (информатика)|синхронизациипроцессом]], использующим механизмы [[РазделяемаяОперационная памятьсистема|разделяемой памятиОС]] и [[Remoteреализующим Procedureновые Call|удаленныхвозможности вызовов]] (RPC)IPC. МетодыМожет IPCосуществляться зависяткак отна пропускнойодном способностикомпьютере, так и задержки взаимодействия между потокаминесколькими икомпьютерами типа[[Компьютерная передаваемых данныхсеть|сети]].
 
Из механизмов, предоставляемых [[Операционная система|ОС]] и используемых для IPC, можно выделить:
IPC также может упоминаться как '''межпотоковое взаимодействие''' ({{lang-en|inter-thread communication}}), '''межпоточное взаимодействие''' и '''межпрограммное взаимодействие''' ({{lang-en|inter-application communication}}).
* механизмы [[Обмен сообщениями|обмена сообщениями]];
* механизмы [[Синхронизация (информатика)|синхронизации]];
* механизмы [[Разделяемая память|разделения памяти]];
* механизмы [[Remote Procedure Call|удалённых вызовов]] (RPC).
 
Для оценки производительности различных механизмов IPC используют следующие параметры:
IPC наряду с концепцией [[Адресация памяти|адресного пространства]] является основой для разграничения адресного пространства.<ref> [[Йохан Лиетке]]. ''[http://i30www.ira.uka.de/research/publications/papers/index.php?lid=en&docid=642 On µ-Kernel Construction]'', ''Proc. 15th ACM Symposium on Operating System Principles (SOSP)'', декабрь 1995</ref>
* пропускная способность (количество сообщений в единицу времени, которое [[Ядро операционной системы|ядро]] [[Операционная система|ОС]] или [[Процесс (информатика)|процесс]] способна обработать);
* задержки (время между отправкой сообщения одним [[Поток выполнения|потоком]] и его получением другим потоком).
 
IPC также может упоминатьсяназываться кактерминами «'''межпотоковое/межпоточное взаимодействие'''» ({{lang-en|inter'''i'''nter-thread communication}}), '''межпоточноеt'''hread взаимодействие'''c'''ommunication}}) и «'''межпрограммное взаимодействие'''» ({{lang-en|inter'''i'''nter-application'''a'''pplication communication'''c'''ommunication}}).
 
IPC, наряду с концепциеймеханизмами [[Адресация памяти|адресногоадресации пространствапамяти]], является основой для разграничения адресного пространства. между [[Процесс (информатика)|процессами]]<ref> [[ЙоханЛидтке, ЛиеткеЙохен|Йохен Лидтке]] ({{lang-de|[[:en:Jochen Liedtke|Jochen Liedtke]]}}{{ref-en}}). ''[http://i30www.ira.uka.de/research/publications/papers/index.php?lid=en&docid=642 On µ-Kernel Constructionconstruction]'', ''// Proc. 15th [[Ассоциация вычислительной техники|ACM]] [[:en:Symposium on Operating SystemSystems Principles|Symposium on operating system principles]] (SOSP)'',. декабрьДекабрь 1995</ref>.
 
== Таблица методов IPC ==
 
==Таблица методов IPC==
{| class="wikitable"
! Метод !! Реализуется ([[Операционная система|операционной системойОС]] или другим[[Процесс окружением(информатика)|процессом]]
|-
| [[Файл]] || Все [[Операционная система|операционные системыОС]].
|-
| [[Сигналы (UNIX)|Сигнал]] || Большинство [[Операционная система|операционных системОС]]; некоторыев системы,некоторых как[[Операционная система|ОС]], например, в [[Windows]], толькосигналы реализуютдоступны сигналытолько в библиотекебиблиотеках, запускареализующих Си,[[Стандартная нобиблиотека неязыка обеспечиваютСи|стандартную ихбиблиотеку полноценнойязыка поддержкиСи]], дляи использованияне методовмогут использоваться для IPC.
|-
| [[Сокет (программный интерфейс)|Сокет]] || Большинство [[Операционная система|операционных системОС]].
|-
| [[КонвеерКонвейер (UnixUNIX)|Канал]] || Все системы[[Операционная система|ОС]], соответствующиесовместимые со стандартом [[POSIX]].
|-
| [[Именованный канал]] || Все системы[[Операционная система|ОС]], соответствующиесовместимые со стандартом [[POSIX]].
|-
| [[Семафор (информатика)|Семафор]] || Все системы[[Операционная система|ОС]], соответствующиесовместимые со стандартом [[POSIX]].
|-
| [[Разделяемая память]] || Все системы[[Операционная система|ОС]], соответствующиесовместимые со стандартом [[POSIX]].
|-
| [[Обмен сообщениями]] <br />(без разделения) || Используется в парадигме [[Message Passing Interface|MPI]], [[Java]] [[RMI]], [[CORBA]] и других.
|-
| [[Mmap|Проецируемый в память файл]] (mmap) || Все системы[[Операционная система|ОС]], соответствующиесовместимые со стандартом [[POSIX]];. несетПри риск появленияиспользовании [[СостояниеВременный гонкифайл|состояниявременного гонкифайла]] в случаевозможно использованиявозникновение [[ВременныйСостояние файлгонки|временного файлагонки]]. [[Операционная система|ОС]] [[Windows]] также поддерживаетпредоставляет этуэтот технологиюмеханизм, но используетпосредством [[API]], отличныйотличающегося от [[API]], описанного в стандарте [[POSIX]].
|-
| [[Очередь сообщений]] || Большинство [[Операционная система|операционных системОС]].
|-
| [[Mailslot|Почтовый ящик]] || Некоторые [[Операционная система|операционные системыОС]].
|-
|}
 
== Реализации ==
Существует несколько [[Интерфейс программирования приложений|API]], которые могут использоваться для IPC. Вот несколько платформо-независимых API:
* [[Анонимный канал|анонимные каналы]] и [[Именованный канал|именованные каналы]]
* [[CORBA]]
* [[D-Bus]] от [[Freedesktop.org]]
* [[Distributed Computing Environment]] (DCE)
* Шина сообщений (Message Bus или MBUS) (описана в RFC 3259)
* [[Lightweight Communications and Marshalling]] (LCM)
* [[Sun RPC|ONC RPC]]
* [[Сокет (программный интерфейс)|Сокеты]]
* [[XML]] [[XML-RPC]] или [[SOAP]]
* [[Thrift (протокол)|Thrift]]
* [[TIPC]]
* [[Internet Communications Engine]] (ICE) от [[ZeroC]]
* при обращении к локальному IP функции IPC выполняют [[сетевой протокол|сетевые протоколы]], для этих целей у каждого компьютера есть [[localhost|специальный IP-адрес]].
 
Существует несколько [[Интерфейс программирования приложений|API]], которыеподходящих могутдля использоваться дляреализации IPC. Вот несколько платформо-независимых API:
API, специфичные для определённых платформ или языков программирования:
 
* Механизм [[Apple events]] от [[Apple|Apple Inc.]] (ранее известный как Interapplication Communications (IAC)).
API, не зависимые от платформы:
* [[Java]] [[RMI|Remote Method Invocation]] (RMI)
* [[Анонимный канал|анонимные каналы]] и [[Именованный канал|именованные]] каналы]];
* [[DCOP|Desktop Communications Protocol]](DCOP) (часть [[KDE]])
* [[CORBA]];
* [[Libt2n]] для [[C++]] только под Linux, обрабатывает сложные объекты и исключения
* [[D-Bus]] от [[Freedesktop.org]];
* Порты [[Mach]]а
* [[Distributed Computing Environment]] (DCE);
* Технологии компании [[Microsoft]]: [[ActiveX]], [[Component Object Model]] (COM), [[Microsoft Transaction Server]] ([[COM+]]), [[Distributed Component Object Model]] (DCOM), [[Dynamic Data Exchange]] (DDE), [[Object Linking and Embedding]] (OLE), [[Анонимный канал|анонимные каналы]], [[Именованный канал|именованные каналы]], [[Local Procedure Call]], [[Message loop in Microsoft Windows|Message loop]], [[MSRPC]], [[.NET Remoting]] и [[Windows Communication Foundation]]
* Шинашина сообщений (Message{{lang-en|message Bus илиbus}}, MBUS) (описана в RFC 3259);
* [[IPX/SPX|SPX]] компании [[Novell]]
* [[Lightweight Communications and Marshalling]] (LCM);
* [[POSIX]] [[mmap]], [[Очередь сообщения|очереди сообщений]], [[Семафор (информатика)|семафоры]] и [[разделяемая память]]
* [[Sun RPC|ONC RPC]];
* Сообщения [[RISC OS]]
* [[Сокет (программный интерфейс)|Сокетысокеты]] ({{lang-en|socket}});
* Технология [[Solaris]] [[Doors (компьютеры)|Doors]]
* [[XML]] [[XML-RPC]] или [[SOAP]];
* Очереди сообщений, семафоры и [[разделяемая память]] [[UNIX System V]]
* [[Thrift (протокол)|Thrift]] (протокол);
* [[Распределенный Ruby]]
* [[TIPC]];
* [[Распределенное межпроцессное взаимодействие]] (Distributed Inter-Process Communication)
* [[Internet Communications Engine]] (ICE) от [[ZeroC]];
* [[ToolTalk]] компании [[Sun Microsystems]]
* [[localhost]] (виртуальный сетевой интерфейс; функции IPC выполняют [[Протокол передачи данных|сетевые протоколы]]).
 
API, специфичные для определённых платформ или [[Язык программирования|языков программирования]]:
* Механизммеханизм [[Apple events]] от [[Apple|Apple Inc.]] (ранее известный как Interapplication«interapplication Communicationscommunications» (IAC)).;
* [[Java]] [[RMI|Remoteremote Methodmethod Invocationinvocation]] (RMI);
* [[DCOP|desktop communications protocol]] (DCOP) (компонент [[KDE]] версии 3);
* [[Libt2n]] для [[C++]] (только под [[Linux,]]; обрабатывает сложные объекты и исключения);
* порты микроядра [[Mach]];
* Технологиитехнологии компании [[Microsoft]]: [[ActiveX]], [[Component Object Model]] (COM), [[Microsoft Transaction Server]] ([[COM+]]), [[Distributed Component Object Model]] (DCOM), [[Dynamic Data Exchange]] (DDE), [[Object Linking and Embedding]] (OLE), [[Анонимный канал|анонимные каналы]], [[Именованный канал|именованные каналы]], [[Local Procedure Call]], [[:en:Message loop in Microsoft Windows|Messagemessage loop]], [[MSRPC]], [[.NET Remoting]] и [[Windows Communication Foundation]];
* [[Протокол передачи данных|протокол]] [[IPX/SPX|SPX]] компании [[Novell]];
* механизмы, описанные в стандарте [[POSIX]]: [[mmap]], [[Очередь сообщения|очереди сообщений]], [[Семафор (информатика)|семафоры]] и, [[разделяемая память]];
* сообщения в [[Операционная система|ОС]] [[RISC OS]];
* технология [[Doors (компьютеры)|Doors]] в [[Операционная система|ОС]] [[Solaris]];
* Очередиочереди сообщений, семафоры и [[разделяемая память]] в [[Операционная система|ОС]] [[UNIX System V]];
* [[распределённый Ruby]];
* [[Распределенноераспределённое межпроцессное взаимодействие]] (Distributeddistributed Inter-Process CommunicationIPC);
* [[IPX/SPX|SPXToolTalk]] от компании [[NovellSun Microsystems]].
 
== См. также ==
 
* [[Сетевое программирование]]
* [[.NET Remoting]]
Строка 72 ⟶ 87 :
 
== Ссылки ==
 
<div class="references-small">
<references />
* [[W. Richard Stevens|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 ''[http://portal.acm.org/citation.cfm?id=30371&coll=portal&dl=ACM 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. ''[http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=242738 Using communication-to-computation ratio in parallel program designand performance prediction]'' 1-4 December 1992. pp. 238—245 ISBN 0-8186-3200-3
 
</div>
 
== Дополнительные источники ==
 
* [http://www.wlug.org.nz/ipc(5) Linux System V IPC Main Page]
* [http://msdn.microsoft.com/en-us/library/aa365574(VS.85).aspx Windows IPC]
 
== Примечания ==
{{примечания}}
 
{{IPC}}
[[Категория:Межпроцессное взаимодействие| ]]