Interprocescommunicatie
onderlinge communicatie tussen threads in één of meerdere proces(sen) in een multitasking-besturingssysteem
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
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
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
|