Meziprocesová komunikace

Ve vědě o počítačích , komunikace mezi procesy ( inter-process communication , IPC, v angličtině) sdružuje soubor mechanismů, které umožňují souběžné procesy komunikovat. Tyto mechanismy lze rozdělit do tří kategorií:

Výměna dat

Tyto soubory mohou být použity pro výměnu dat mezi více souběžných procesů. Procesy, které chtějí odeslat zápis dat do jednoho (nebo více) souborů na určitých pozicích; procesy, které chtějí tuto datovou pozici přijímat samy na těchto pozicích v souboru (souborech) a číst je. Tento typ výměny je možný mezi lokálními souběžnými procesy používajícími lokální souborový systém nebo vzdálenými souběžnými procesy využívajícími distribuovaný souborový systém, jako je NFS .

Hlavní paměti z počítače lze použít také pro výměnu dat mezi několika souběžných procesů. V závislosti na typu procesu nejsou použité mechanismy stejné:

V obou případech se výměny provádějí umístěním dat do paměti v proměnných sdílených procesy.

Bez ohledu na metodu používanou k výměně dat (soubory nebo hlavní paměť) představuje tento typ komunikace problém kritických sekcí: když procesy přistupují ke sdíleným datům. Ve skutečnosti, pokud dva procesy přistupují ke společným datům současně, mohou nastat různé výsledky:

Při používání souborů se obvykle setkáváme s druhým nebo třetím případem. Je-li to možné, proces může počkat (10 milisekund, 1 sekunda atd.) A později obnovit přístup k datům. Toto řešení však není vždy možné v síti, protože soubory nejsou vždy vydány správně.

Použitím hlavní paměti spíše spadáme na první případ. Pokud je k dispozici, proces může provádět exkluzivní synchronizace čtení a zápisu. Ve všech případech je sdílení dat v paměti možné pouze na jednom a stejném počítači.

Synchronizace

Synchronizační mechanismy se používají k řešení problémů kritických sekcí a obecněji k blokování a odblokování procesů za určitých podmínek.

Tyto zámky mohou blokovat všechny nebo část souboru. Tyto zámky lze provést buď pro operace čtení nebo zápisu, nebo pro oba.

Semafor je obecný mechanismus, nejsou spojeny s určitým typem zdroje a může omezit souběžný přístup ke kritické části k řadě procesů. K tomu semafory používají dvě funkce: P a V a čítač. Funkce P sníží počitadlo, pokud je počitadlo nulové, proces je blokován. Funkce V zvyšuje čítač a odblokuje jeden ze zablokovaných procesů.

Tyto signály jsou původně určeny k usmrcení (ukončení) procesu za určitých podmínek, například SIGSEGV signál zabije proces, který je s přístupem oblast paměti, které není přidělena. Signály však lze přesměrovat na jiné funkce. Blokování procesu se poté provede výzvou k čekání na příchod signálu a odblokování spočívá v odeslání zprávy procesu.

Problém synchronizačních mechanismů spočívá v tom, že procesy jsou blokovány, pouze pokud je používají. Jejich použití je navíc obtížné a způsobuje problémy se zablokováním (všechny procesy jsou blokovány).

Během spolupráce mezi procesy existují obvyklé situace synchronizace:

Výměna a synchronizace dat

Tyto mechanismy kombinují možnosti dvou předchozích kategorií a jejich použití je snazší.

Myšlenka tohoto typu mechanismu je komunikovat pomocí principu front, procesy, které chtějí poslat informace, je umístí do fronty; ti, kteří je chtějí přijmout, je vyzvednou ve stejné linii. Operace zápisu a čtení ve frontě blokují, a proto umožňují synchronizaci.

Tento princip se používá fronty zpráv ( fronty zpráv v angličtině) na Unix, od zásuvek Unix nebo internetu, trubek , jež jsou jmenováni či nikoliv, a přenos zpráv ( Message Passing anglicky).