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:

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.