Interprocescommunicatie

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.