Meziprocesová komunikace - Inter-process communication
![]() | Tento článek obsahuje seznam obecných Reference, ale zůstává z velké části neověřený, protože postrádá dostatečné odpovídající vložené citace.Srpna 2015) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |

v počítačová věda, meziprocesová komunikace nebo meziprocesová komunikace (IPC) konkrétně odkazuje na mechanismy a operační systém poskytuje povolit procesy spravovat sdílená data. Aplikace obvykle mohou používat IPC, kategorizované jako klienty a servery, kde klient požaduje data a server odpovídá na požadavky klienta.[1] Mnoho aplikací jsou klienti i servery, jak je běžně vidět v distribuované výpočty.
IPC je pro proces návrhu velmi důležité mikrokernely a nanokernels, které snižují počet funkcí poskytovaných jádrem. Tyto funkce jsou poté získány komunikací se servery přes IPC, což vede k velkému nárůstu komunikace ve srovnání s běžným monolitickým jádrem. Rozhraní IPC obecně zahrnují variabilní analytické rámcové struktury. Tyto procesy zajišťují kompatibilitu mezi vícevektorovými protokoly, na které se modely IPC spoléhají.[2]
Mechanismus IPC je buď synchronní nebo asynchronní. Synchronizační primitiva lze použít k synchronnímu chování s asynchronním mechanismem IPC.
Přístupy
Různé přístupy k IPC byly přizpůsobeny různým softwarové požadavky, jako výkon, modularita a systémové okolnosti, jako je šířka pásma sítě a latence.[1]
Metoda | Stručný popis | Poskytuje (operační systémy nebo jiné prostředí) |
---|---|---|
Soubor | Záznam uložený na disku nebo záznam syntetizovaný na vyžádání souborovým serverem, ke kterému lze přistupovat několika procesy. | Většina operačních systémů |
Komunikační soubor | Unikátní forma IPC z konce 60. let, která se nejvíce podobá Plán 9 je 9P protokol | Systém sdílení času v Dartmouthu |
Signál; taky Asynchronous System Trap | Systémová zpráva odeslaná z jednoho procesu do druhého, obvykle se nepoužívá k přenosu dat, ale používá se k dálkovému ovládání partnerského procesu. | Většina operačních systémů |
Zásuvka | Data odeslaná přes síťové rozhraní, a to buď do jiného procesu ve stejném počítači, nebo do jiného počítače v síti. Stream-orientovaný (TCP; data zapsaná prostřednictvím soketu vyžadují formátování, aby se zachovaly hranice zpráv) nebo zřídka orientované na zprávy (UDP, SCTP ). | Většina operačních systémů |
Unixová doménová zásuvka | Podobně jako internetová zásuvka, ale veškerá komunikace probíhá v jádře. Doménové zásuvky používají souborový systém jako svůj adresní prostor. Procesy odkazují na soket domény jako inode a s jedním soketem může komunikovat více procesů | Všechny operační systémy POSIX a Windows 10[3] |
Fronta zpráv | Datový proud podobný soketu, ale který obvykle zachovává hranice zpráv. Obvykle implementované operačním systémem umožňují více procesům číst a zapisovat do systému fronta zpráv aniž by k sobě byli přímo připojeni. | Většina operačních systémů |
Anonymní dýmka | Jednosměrný datový kanál pomocí standardní vstup a výstup. Data zapsaná na konec zápisu kanálu je operačním systémem ukládána do vyrovnávací paměti, dokud nejsou načtena z konce čtení kanálu. Obousměrné komunikace mezi procesy lze dosáhnout použitím dvou potrubí v opačných „směrech“. | Všechno POSIX systémy, Windows |
Pojmenovaná roura | Trubka, se kterou se zachází jako se souborem. Místo použití standardního vstupu a výstupu jako u anonymního kanálu procesy zapisují a čtou z pojmenovaného kanálu, jako by to byl běžný soubor. | Všechny systémy POSIX, Windows, AmigaOS 2.0+ |
Sdílená paměť | Více procesů má přístup ke stejnému bloku Paměť, který vytváří sdílenou vyrovnávací paměť pro procesy, aby mohly navzájem komunikovat. | Všechny systémy POSIX, Windows |
Předávání zpráv | Umožňuje více programům komunikovat pomocí front zpráv nebo kanálů spravovaných jiným operačním systémem. Běžně se používá v modelech souběžnosti. | Použito v RPC, RMI, a MPI paradigmata, Java RMI, CORBA, DDS, MSMQ, MailSlots, QNX, ostatní |
Soubor mapovaný do paměti | Soubor namapovaný na RAM a lze je upravit přímou změnou adres paměti namísto výstupu do streamu. Sdílí stejné výhody jako standard soubor. | Všechny systémy POSIX, Windows |
Aplikace
![]() |
Vzdálená rozhraní pro volání procedur
- Jáva je Vzdálené vyvolání metody (RMI)
- ONC RPC
- XML-RPC nebo MÝDLO
- JSON-RPC
- Sběrnice zpráv (Mbus) (uvedeno v RFC 3259 )
- Vzdálená komunikace .NET
- gRPC
Zásobník komunikace platformy
Následuje zasílání zpráv a informační systémy, které využívají mechanismy IPC, ale samotné IPC neimplementují:
- KDE je Desktopový komunikační protokol (DCOP) - zastaralé D-Bus
- D-Bus
- OpenWrt používá ubus architektura mikro sběrnic
- MCAPI Vícejádrové komunikační API
- JEDNODUCHÉ The Synchronous Interprocess Messaging Project for Linux (JEDNODUCHÉ)
- 9P (Plán 9 Protokol souborového systému)
- Distribuované výpočetní prostředí (DCE)
- Šetrnost
- ZeroC je Engine pro internetovou komunikaci (LED)
- ØMQ
- Enduro / X Middleware
- YAMI4
Komunikační zásobník operačního systému
Následují API specifická pro platformu nebo programovací jazyk:
- Linux Transparentní meziprocesová komunikace (TIPC)
- Počítač Apple je Události Apple, dříve známá jako Interapplication Communications (IAC)
- Enea LINX pro Linux (open source) a různé DSP a univerzální procesory pod OSE
- The Machovo jádro Machovy porty
- Microsoft je ActiveX, Komponentní objektový model (COM), Microsoft Transaction Server (COM + ), Distribuovaný komponentový objektový model (DCOM), Dynamická výměna dat (DDE), Propojování a vkládání objektů (OLE), anonymní kanály, pojmenované trubky, Místní volání procedury, MailSlots, Smyčka zpráv, MSRPC, Vzdálená komunikace .NET, a Windows Communication Foundation (WCF)
- Novell je SPX
- POSIX mmap, fronty zpráv, semafory,[4] a sdílená paměť
- RISC OS zprávy
- Solaris Dveře
- Systém V fronty zpráv, semafory a sdílená paměť
- OpenBinder Otevřete pořadač
- QNX Služba PPS (trvalé publikování / předplatné)
Distribuované objektové modely
Následují rozhraní API specifická pro platformu nebo programovací jazyk, která používají IPC, ale sami jej neimplementují:
- Libt2n pro C ++ pouze v systému Linux zpracovává složité objekty a výjimky
- PHP zasedání
- Distribuovaný Ruby
- Společná architektura zprostředkovatele požadavků na objekty (CORBA)
Viz také
- Programování počítačové sítě
- Komunikace postupných procesů (Paradigma CSP)
- Služba distribuce dat
- Volání chráněného postupu
Reference
- ^ A b „Meziprocesová komunikace“. Microsoft.
- ^ Camurati, P (1993). "Meziprocesová komunikace pro návrh na úrovni systému". Mezinárodní workshop o kódování hardwaru / softwaru.
- ^ "Windows / WSL Interop s AF_UNIX". Microsoft. Citováno 25. května 2018.
- ^ "Souběžné programování - komunikace mezi procesy "
- Stevens, Richard. UNIX Network Programming, díl 2, druhé vydání: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9
- U. Ramachandran, M. Solomon, M. Vernon Hardwarová podpora meziprocesové komunikace Sborník ze 14. ročníku mezinárodního sympozia o počítačové architektuře. Pittsburgh, Pensylvánie, Spojené státy. Strany: 178 - 188. Rok vydání: 1987 ISBN 0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Využití poměru komunikace k výpočtu v návrhu paralelního programu a predikci výkonu 1. – 4. Prosince 1992. s. 238–245 ISBN 0-8186-3200-3