Interprocescommunicatie (IPC) is de onderlinge communicatie tussen threads in één of meerdere proces(sen) in een multitasking-besturingssysteem. Deze communicatie dient om data door te geven of de toegang naar gedeelde bronnen (resources) te synchroniseren.
Grofweg zijn er vier categorieën interprocescommunicatie:
- message passing - het doorgeven van berichten via pipes, mailbox of soortgelijke mechanismen
- synchronisatie - een systeem van signalen (semaphores, vlaggen, signals) die door processen gezet en uitgelezen kunnen worden
- shared memory of gedeeld geheugen - een stuk van het werkgeheugen van de computer dat voor meerdere processen toegankelijk is
- remote procedure calls (RPC) - het aanroepen van procedures (deelprogramma's) met parameters die acties in een ander proces tot gevolg hebben
Implementaties
Er zijn vele verschillende API's, die verschillende mogelijkheden bieden. De belangrijkste platformonafhankelijke zijn:
Verschillende platformspecifieke implementaties zijn:
- Apple Inc. - Apple events (voorheen bekend als Interapplication Communications, IAC)
- Freedesktop.org - D-BUS
- KDE - Desktop Communications Protocol (DCOP)
- Machkernel - Mach Ports
- Microsoft - ActiveX, Component Object Model (COM), Distributed Component Object Model (DCOM), Dynamic Data Exchange (DDE) en Object Linking and Embedding (OLE), anonymous pipe, named pipe
- Novell - SPX
- POSIX - mmap, message queues, semaforen en shared memory
- RISC OS - messages
- Sun Microsystems - Remote Procedure Call (RPC)
- System V - message queues, semaphores en shared memory
- XML - XML-RPC of SOAP
- VMS - mailbox, event flags en locks (signals), shared memory
Methoden
Methode |
Ondersteund door (besturingssysteem of omgeving)
|
Bestand |
Alle besturingssystemen.
|
Signal |
De meeste besturingssystemen; enkele, zoals Windows, implementeren alleen signals in de C-runtime-bibliotheek maar bieden verder geen ondersteuning voor IPC.
|
Socket |
De meeste besturingssystemen.
|
Pipes |
Alle POSIX-systemen.
|
Named pipes |
Alle POSIX-systemen.
|
Semaforen |
Alle POSIX-systemen.
|
Shared memory |
Alle POSIX-systemen.
|
Message passing (shared nothing) |
Wordt o.a. gebruikt in het Message Passing Interface- of MPI-paradigma, Java RMI, CORBA.
|
Memory map (mmap) |
Alle POSIX-systemen; een race condition kan optreden als een tijdelijk bestand wordt gebruikt. Windows ondersteunt deze techniek, maar de API is platformspecifiek.
|
Message queue |
De meeste besturingssystemen.
|
Mailbox |
Sommige besturingssystemen.
|
Bronnen, noten en/of referenties
- W. Richard Stevens. UNIX Network Programming, Volume 2, Second Edition: Interprocess Communications. Prentice Hall, 1999. ISBN 0-13-081081-9.