Interprozesskommunikation
Im Informatik, Interprozesskommunikation oder Interprozesskommunikation (IPC) bezieht sich speziell auf die Mechanismen und Betriebssystem sorgt dafür Prozesse Um gemeinsame Daten zu verwalten. In der Regel können Anwendungen IPC verwenden, die als kategorisiert werden Clients und Server, wo der Client Daten anfordert und der Server auf Clientanfragen reagiert.[1] Viele Anwendungen sind sowohl Clients als auch Server, wie allgemein in gesehen wird verteiltes Computer.
IPC ist sehr wichtig für den Entwurfsprozess für Mikrokernel und Nanokernel, die die Anzahl der vom Kernel bereitgestellten Funktionen verringern. Diese Funktionen werden dann durch Kommunikation mit Servern über IPC erhalten, was zu einem großen Anstieg der Kommunikation im Vergleich zu einem regulären monolithischen Kernel führt. IPC -Schnittstellen umfassen im Allgemeinen variable analytische Frameworkstrukturen. Diese Prozesse gewährleisten die Kompatibilität zwischen den Multi-Vektor-Protokollen, auf die sich IPC-Modelle verlassen.[2]
Ein IPC -Mechanismus ist entweder synchron oder asynchron. Synchronisation Primitive kann verwendet werden, um ein synchrones Verhalten mit einem asynchronen IPC -Mechanismus zu haben.
Ansätze
Unterschiedliche Ansätze für IPC wurden auf verschiedene zugeschnitten Software Anforderungen, wie zum Beispiel Leistung, Modularitätund Systemumstände wie z. Netzwerk Bandbreite und Latenz.[1]
Methode | kurze Beschreibung | Zur Verfügung gestellt von (Betriebssysteme oder andere Umgebungen) |
---|---|---|
Datei | Ein auf der Festplatte gespeicherter Datensatz oder auf einen von einem Dateiserver synthetisierten Datensatz, auf den mehrere Prozesse zugegriffen werden können. | Die meisten Betriebssysteme |
Kommunikationsdatei | Eine einzigartige Form von IPC in den späten 1960er Jahren, die am ähnlichsten ähnelt Plan 9's 9p -Protokoll | Dartmouth Time-Sharing-System |
Signal; Auch Asynchrone Systemfalle | Eine Systemnachricht, die von einem Prozess an einen anderen gesendet wird und normalerweise nicht zum Übertragen von Daten verwendet, sondern verwendet, um den Partnerprozess aus der Ferne zu befehlen. | Die meisten Betriebssysteme |
Steckdose | Daten über eine Netzwerkschnittstelle gesendet, entweder an einen anderen Prozess auf demselben Computer oder an einen anderen Computer im Netzwerk. Streamorientiert (TCP; Daten, die über einen Socket geschrieben wurdenUDP, SCTP). | Die meisten Betriebssysteme |
UNIX Domain Socket | Ähnlich wie eine Internet -Sockel, aber alle Kommunikation tritt innerhalb des Kernels auf. Domänenhöhlen verwenden das Dateisystem als Adressraum. Prozesse verweisen auf eine Domänenbuchse als eine Inodeund mehrere Prozesse können mit einer Steckdose kommunizieren | Alle POSIX -Betriebssysteme und Windows 10[3] |
Meldungswarteschlange | Ein Datenstrom ähnlich einem Socket, der jedoch normalerweise Nachrichtengrenzen bewahrt. In der Regel vom Betriebssystem implementiert, ermöglichen sie mehrere Prozesse zum Lesen und Schreiben in die Meldungswarteschlange ohne direkt miteinander verbunden zu sein. | Die meisten Betriebssysteme |
Anonyme Pfeife | Ein unidirektionaler Datenkanal mit verwendet Standardeingang und Ausgabe. Daten, die in das Schreibende des Rohrs geschrieben wurden, werden vom Betriebssystem gepuffert, bis es aus dem Read-Ende des Rohrs gelesen wird. Die Zwei-Wege-Kommunikation zwischen Prozessen kann erreicht werden, indem zwei Rohre in entgegengesetzte "Richtungen" verwendet werden. | Alle Posix Systeme, Fenster |
Benannte Pfeife | Ein Pfeif, das wie eine Datei behandelt wird. Anstatt die Standardeingabe und -ausgabe zu verwenden, wie bei einer anonymen Pipe, schreiben und lesen Sie in ein benanntes Rohr, als ob es sich um eine reguläre Datei handelt. | Alle POSIX -Systeme, Windows, Amigaos 2.0+ |
Geteilte Erinnerung | Mehrere Prozesse erhalten Zugriff auf denselben Block von Erinnerung, was einen gemeinsamen Puffer für die Prozesse erzeugt, um miteinander zu kommunizieren. | Alle Possix -Systeme, Windows |
Nachrichtenübergang | Ermöglicht mehrere Programme mithilfe von Nachrichtenwarteschlangen und/oder nicht-OS-verwalteten Kanälen. Häufig in Parallelitätsmodellen verwendet. | Benutzt in LPC, RPC, RMI, und MPI Paradigmen, Java RMI, Corba, Com, Dds, MSMQ, Mailsllots, Qnx, Andere |
Speicher-abgebildete Datei | Eine Datei zugeordnet auf RAM und kann durch direktes Ändern von Speicheradressen direkt geändert werden, anstatt an einen Stream auszugeben. Dies hat die gleichen Vorteile wie ein Standard Datei. | Alle Possix -Systeme, Windows |
Anwendungen
Remote -Verfahrensanrufschnittstellen
- Java's Fernmethodenaufruf (RMI)
- ONC RPC
- XML-RPC oder SEIFE
- JSON-RPC
- Message Bus (MBUS) (angegeben in RFC 3259) (nicht verwechselt werden mit M-Bus)
- .NET Remoting
- GRPC
Plattform -Kommunikationsstapel
Im Folgenden sind Messaging und Informationssysteme, die IPC -Mechanismen verwenden, aber nicht selbst IPC implementieren:
- Kde's Desktop -Kommunikationsprotokoll (DCOP)-durch D-Bus veraltet
- D-Bus
- OpenWrt Verwendet Ubus Mikrobusarchitektur
- McApi Multicore Communications API
- Einfach Das synchrone Interprozess -Messaging -Projekt für Linux (Einfach)
- 9p (Plan 9 Dateisystemprotokoll)
- Verteilte Computerumgebung (DCE)
- Sparsamkeit
- Zeroc's Internetkommunikation Engine (EIS)
- Ømq
- Enduro/x Middleware
- Yami4
- Erleuchtung_ (Software) E16 verwendet EESH als IPC
Betriebssystemkommunikationsstapel
Im Folgenden finden Sie Plattform- oder Programmiersprach-spezifische APIs:
- Apple Computer's Apfelveranstaltungenzuvor als Interapplication Communications (IAC) bekannt
- Arexx Häfen
- Enea Linx für Linux (Open Source) und verschiedene DSP- und Allgemeine Prozessoren unter Ose
- Das Mach KernelMach Ports
- Microsoft's ActiveX, Komponentenobjektmodell (Com), Microsoft Transaction Server (Com+), Verteilter Komponentenobjektmodell (DCOM), Dynamischer Datenaustausch (DDE), Objektverbindung und Einbettung (OLE), Anonyme Rohre, benannte Pfeifen, Lokaler Verfahrensanruf, Mailsllots, Nachrichtenschleife, MSRPC, .NET Remoting, und Windows Communication Foundation (WCF)
- Novell's SPX
- Posix MMAP, Nachrichtenwarteschlangen, Semaphoren,[4] und geteilte Erinnerung
- RISC OSNachrichten
- Solaris Türen
- System vMessage -Warteschlangen, Semaphoren und gemeinsamer Speicher
- Linux transparente Inter -Prozesskommunikation (TIPC)
- OpenBinder Offener Ordner
- QnxPPS (persistent veröffentlichen/abonnieren) Service
Verteilte Objektmodelle
Im Folgenden finden Sie Plattform- oder Programmiersprachenspezifische APIs, die IPC verwenden, sie jedoch nicht selbst implementieren:
- Libt2n zum C ++ Nur unter Linux behandelt komplexe Objekte und Ausnahmen
- PhpSessions
- Rubin verteilt
- Maklerarchitektur der gemeinsamen Objektanfragen (CORBA)
- Elektronasynchrones IPC, Aktien JSON Objekte zwischen einem Haupt- und einem Renderer -Prozess[5]
Siehe auch
- Computer -Netzwerk -Programmierung
- Kommunizieren von sequentiellen Prozessen (CSP -Paradigma)
- Datenverteilungsdienst
- Schützender Verfahrensanruf
Verweise
- ^ a b "Interprocess Communications". Microsoft.
- ^ Camurati, P (1993). "Inter-Process-Kommunikation für Systemebene auf Systemebene". Internationaler Workshop über Hardware-/Software -Codessign.
- ^ "Windows/WSL Interop mit AF_unix". Microsoft. 7. Februar 2018. Abgerufen 25. Mai 2018.
- ^ "Gleichzeitige Programmierung - Kommunikation zwischen Prozessen"
- ^ "Ipcmain | Elektron".
- Stevens, Richard. UNIX -Netzwerkprogrammierung, Band 2, zweite Ausgabe: Interprozesskommunikation. Prentice Hall, 1999. ISBN0-13-081081-9
- U. Ramachandran, M. Solomon, M. Vernon Hardwareunterstützung für die Interprozesskommunikation Verfahren des 14. jährlichen internationalen Symposiums über die Computerarchitektur.Pittsburgh, Pennsylvania, USA.Seiten: 178 - 188. Veröffentlichungsjahr: 1987 ISBN0-8186-0776-9
- Crovella, M. Bianchini, R. LeBlanc, T. Markatos, E. Wisniewski, R. Verwenden von Kommunikation zu Komputationsverhältnis in paralleler Programmdesign und Leistungsvorhersage 1–4 Dezember 1992. S. 238–245 ISBN0-8186-3200-3
Externe Links
- Linux IPC (5) Mannseite Beschreibung des Systems V IPC
- Windows IPC
- IPC mit QT verfügbar
- UNIX -Netzwerkprogrammierung (Band 2: Interprozesskommunikation) Von W. Richard Stevens
- Interprozess -Kommunikation und Rohre in C.
- DIPC, verteiltes System v IPC