Meziprocesová komunikace

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Meziprocesová komunikace ( IPC) je v informatice sada technik pro výměnu dat mezi dvěma nebo více procesy nebo thready. Komunikace může probíhat i mezi různými počítači propojenými počítačovou sítí. IPC může být též označována jako mezithreadová komunikace a meziaplikační komunikace .

IPC techniky můžeme rozdělit na metody pro zasílání zpráv, synchronizace, sdílená paměť a vzdálené volání procedur (RPC). Metoda použitá pro IPC může záviset na datové propustnosti, latenci komunikace mezi thready a typem dat, která je potřeba přenášet a podobně.

Implementace

Různé metody meziprocesové komunikace mohou být implementovány buď přímo jádrem operačního systému nebo pomocí knihovních funkcí, které navenek používají jinou metodu, než je použita pro vlastní implementaci (pro vlastní implementaci je typicky používána sdílená paměť).

Programátor používá při programování API (aplikační rozhraní), které může být standardizováno (např. POSIX, Single UNIX Specification), může být určeno příslušnou platformou (Windows API, D-Bus), ale může mít i zcela volné či jednoúčelové rozhraní.

Příklady využití

Ve výpočetně náročných úlohách je vhodné využít všechna [url= Server][Centrální procesorová jednotka|jádra]] a mikroprocesory počítače, někdy umístěné dokonce ve více počítačích (viz počítačový cluster). Proto je vhodné využít multitasking (multiprogramování), kdy výpočet řeší najednou více procesů či vláken (threadů). +more Je nevýhodné, aby práce byla rozdělena hned na začátku výpočtu, protože není zřejmé, kolik dat bude jednotlivými výpočty nakonec zpracováno. Proto je pomocí meziprocesové komunikace zajišťována komunikace mezi mateřským procesem, který práci rozděluje a podřízenými procesy, které obstarávají vlastní výpočty. Jakmile podřízený proces zpracuje přidělená data, může požádat o přidělení dalších dat ke zpracování.

[[Apache[/url]] obsluhuje typicky mnoho požadavků webových prohlížečů najednou. Naprogramován je jako víceprocesová aplikace, kdy rodičovský proces naslouchá na síťovém portu a při příchodu požadavku odštěpí potomka, který převezme obsluhu webového klienta a vyřízení jeho požadavku. +more Tento model významně zjednodušuje programování, protože programátor nemusí řešit obsluhu více různě rychlých klientů zároveň. Zároveň však není vhodné, aby rodičovský proces vytvářel potomka až ve chvíli, kdy přijde požadavek, protože vytvoření potomka je časově a výpočetně poměrně náročná úloha (viz fork (systémové volání)). Proto jsou potomci vytvořeni ve vhodném množství (anglicky Thread Pool) ihned při startu rodičovského procesu a ten jim pomocí meziprocesové komunikace průběžně přiděluje úkoly.

Rozdělení meziprocesové komunikace

Platformně nezávislé

anonymní roura a pojmenovaná roura * Common Object Request Broker Architecture (CORBA) * D-Bus z Freedesktop. +moreorg * Distributed Computing Environment (DCE) * Message Bus (MBUS) (specifikováno v RFC 3259) * ONC RPC * Socket * XML XML-RPC nebo SOAP * TIPC * Internet Communications Engine od ZeroC (ICE).

Závislé na platformě nebo na API programovacího jazyka

Apple events od Apple Inc. +more (dříve známé jako Interapplication Communications (IAC)) * Desktop Communications Protocol z KDE (DCOP) * Libt2n pro C++ (jen pro Linux, pracuje s komplexními objekty a výjimkami * jádro systému Mach (jádro) * Microsoft: ActiveX, Component Object Model (COM), Microsoft Transaction Server (COM+), Distributed Component Object Model (DCOM), Dynamic Data Exchange (DDE), Object Linking and Embedding (OLE), anonymní roura, pojmenovaná roura, Local Procedure Call, Message loop, MSRPC, . NET Remoting a Windows Communication Foundation * SPX od Novellu * POSIX: mmap, fronty zpráv, semafory a sdílená paměť * zprávy v RISC OS * Doors ze Solarisu * UNIX System V: fronty zpráv, semafory a sdílená paměť * Distributed Ruby * Distributed Inter-Process Communication (DIPC).

Tabulka IPC metod

MetodaPoskytuje (operační systém nebo jiné prostředí)
SouborVšechny operační systémy.
SignálVětšina operačních systémů; některé systémy (např. +more Microsoft Windows) implementují signály jen v běhové knihovně jazyka C a v současné době nepodporují jejich použití jako IPC techniku.
SoketVětšina operačních systémů.
RouraVšechny POSIXové systémy.
Pojmenovaná rouraVšechny POSIXové systémy.
SemaforVšechny POSIXové systémy.
Sdílená paměťVšechny POSIXové systémy.
Zasílání zpráv (bez sdílení)Použito v MPI paradigma, Java RMI, CORBA a další.
mmap (paměťově mapovaný soubor)Všechny POSIXové systémy; může způsobit race condition, pokud je použit dočasný soubor, Microsoft Windows též podporuje, ale API je odlišné.
Fronta zprávVětšina operačních systémů.
E-mailová schránkaNěkteré operační systémy.
.

Reference

Související články

Mikrojádro * Nanojádro

Externí odkazy

[url=http://www. cs. +morecf. ac. uk/Dave/C/]Ukázky meziprocesové komunikace v systému UNIX[/url] (anglicky) * [url=https://web. archive. org/web/20050425201941/http://www. wlug. org. nz/ipc%285%29]Linux System V IPC Main Page[/url] (anglicky).

Kategorie:Programování

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top