Interprocescommunicatie
Uiterlijk
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
[bewerken | brontekst bewerken]Er zijn vele verschillende API's, die verschillende mogelijkheden bieden. De belangrijkste platformonafhankelijke zijn:
- Common Object Request Broker Architecture (CORBA)
- Distributed Computing Environment (DCE)
- Message Bus (MBUS)[1]
- Anonymous pipes en Named pipes
- Sockets
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
[bewerken | brontekst bewerken]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.