Meziprocesová komunikace

Meziprocesová komunikace (anglicky Inter-Process Communication, 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 (anglicky inter-thread communication) a meziaplikační komunikace (anglicky inter-application communication).

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 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ů). 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 HTTP Server 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. 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é

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

Tabulka IPC metod

Metoda Poskytuje (operační systém nebo jiné prostředí)
Soubor Všechny operační systémy.
Signál Většina operačních systémů; některé systémy (např. Microsoft Windows) implementují signály jen v běhové knihovně jazyka C a v současné době nepodporují jejich použití jako IPC techniku.
Soket Většina operačních systémů.
Roura Všechny POSIXové systémy.
Pojmenovaná roura Všechny POSIXové systémy.
Semafor Vš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áv Většina operačních systémů.
E-mailová schránka Některé operační systémy.

Reference

V tomto článku byl použit překlad textu z článku Inter-process communication na anglické Wikipedii.

Související články

Externí odkazy


Zdroj datcs.wikipedia.org
Originálcs.wikipedia.org/wiki/Meziprocesová_komunikace
Zobrazit sloupec 

Kalkulačka - Výpočet

Výpočet čisté mzdy

Důchodová kalkulačka

Přídavky na dítě

Příspěvek na bydlení

Rodičovský příspěvek

Životní minimum

Hypoteční kalkulačka

Povinné ručení

Banky a Bankomaty

Úrokové sazby, Hypotéky

Směnárny - Euro, Dolar

Práce - Volná místa

Úřad práce, Mzda, Platy

Dávky a příspěvky

Nemocenská, Porodné

Podpora v nezaměstnanosti

Důchody

Investice

Burza - ČEZ

Dluhopisy, Podílové fondy

Ekonomika - HDP, Mzdy

Kryptoměny - Bitcoin, Ethereum

Drahé kovy

Zlato, Investiční zlato, Stříbro

Ropa - PHM, Benzín, Nafta, Nafta v Evropě

Podnikání

Města a obce, PSČ

Katastr nemovitostí

Katastrální úřady

Ochranné známky

Občanský zákoník

Zákoník práce

Stavební zákon

Daně, formuláře

Další odkazy

Auto - Cena, Spolehlivost

Registr vozidel - Technický průkaz, eTechničák

Finanční katalog

Volby, Mapa webu

English version

Czech currency

Prague stock exchange


Ochrana dat, Cookies

 

Copyright © 2000 - 2024

Kurzy.cz, spol. s r.o., AliaWeb, spol. s r.o.