Komunikácia medzi procesmi
Komunikácia medzi procesmi alebo medziprocesná komunikácia (po angl. inter-process communication, skr. IPC) je súbor techník výmeny dát medzi dvomi či viacerými vláknami v rámci jedného alebo viacerých procesov.
Procesy môžu bežať na jednom alebo viacerých počítačoch spojených sieťou. IPC techniky sa delia ma metódy posielania správ, synchronizácie, zdieľanej pamäte a vzdialeného volania procedúr (RPC). Použitá metóda IPC sa môže meniť na základe šírky prenosového pásma a latencie spojenia medzi vláknami a typu dát, ktoré sa vymieňajú.
Všeobecne sa vychádza z toho, že je výrazne rýchlejšie implementovať IPC v prostredí mikrokernelu ako v klasických systémoch s monolitickým jadrom[1].
IPC sa môže používať aj vo význame komunikácia medzi vláknami alebo komunikácia medzi aplikáciami.
Implementácie
Existujú niekoľké API, ktoré umožňujú IPC. Medzi platformovo nezávislé API patria:
- Anonymná rúra a pomenovaná rúra (pipe)
- Socket
- Distributed Computing Environment (DCE)
- Common Object Request Broker Architecture (CORBA)
- Message Bus (MBUS) (špecifikácia v RFC 3259)
- XML XML-RPC or SOAP
- Internet Communications Engine (ICE) zo ZeroC
Nasledujúce sú API špecifické pre určitú platformu:
- Apple events z Apple Computer (predtým známe ako Interapplication Communications (IAC)).
- D-Bus z Freedesktop.org
- Desktop Communications Protocol (DCOP) z KDE
- Mach Port z kernelu Mach
- ActiveX, Component Object Model (COM), Distributed Component Object Model (DCOM), Dynamic Data Exchange (DDE), Object Linking and Embedding (OLE), anonymné rúry, pomenované rúry, Local Procedure Call od Microsoftu
- SPX od Novellu
- POSIX mmap, fronty správ, semafory a zdieľaná pamäť
- fronty správ, semafory a zdieľaná pamäť systému System V
- správy RISC OS
- Doors z OS Solaris
- RPC od Sun Microsystems
Tabuľka IPC metód:
metóda | poskytovaná (operačným systémom alebo inými prostrediami) |
---|---|
súbor | všetky operačné systémy |
signál | väčšina operačných systémov; niektoré systémy ako Windows iba implementujú signals v C run-time knižnici a v skutočnosti neposkytujú ich podporu pre použitie v rámci IPC. |
socket | väčšina operačných systémov. |
rúra | všetky POSIX systémy. |
pomenovaná rúra | všetky POSIX systémy. |
semafor | všetky POSIX systémy. |
zdieľaná pamäť | všetky POSIX systémy. |
posielanie správ (bez zdieľania) | V rámci paradigmy MPI, Java RMI, CORBA a iné. |
mapa pamäte | všetky POSIX systémy; môže niesť riziko race condition v prípade použitia dočasného súboru. Windows tiež podporuje túto techniku, ale použité API sú platformovo závislé. |
front správ | väčšina operačných systémov. |
mailbox (poštová schránka) | niektoré operačné systémy |
Pozri aj
Referencie
- Hermann Härtig, Michael Hohmuth, Jochen Liedtke, Sebastian Schönberg, Jean Wolter. The performance of μ-kernel-based systems. Proceedings of the 16th ACM symposium on Operating systems principles (SOSP), Saint-Malo, France, October 1997, s. 74. Dostupné online. ISBN 0-89791-916-5. url2
- J. Liedtke, K. Elphinstone, S. Schiinberg, H. Hartig, G. Heiser, N. Islam, T Jaeger. Achieved IPC Performance. Proceedings of the 6th Workshop on Hot Topics in Operating Systems (HotOS-VI), 1997, s. 28. Dostupné online. ISBN 0-8186-7834-8. .
- Jochen Liedtke. Improving IPC by kernel design, ACM Press 1994, ISBN 0-89791-632-8
- Stevens, Richard. UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9
- Nenad Marovac. "On interprocess interaction in distributed architectures", ACM SIGARCH Computer Architecture News, 11(4), 1983