Interprozess- kommunikation (IPC) Marcel Waldvogel
Ziele Prozesse Kommunikation Enstehung Lebensweg, -weise Eigenschaften Gründe Dienste Anwendungen
Was ist IPC? Inter Prozess Kommunikation Was ist ein Prozess? Eigenschaften Kommunikation Kommunikationsarten Kommunikationswege Kommunikationsdienste
Prozesse Prozess = Programm + Zustand, Ablauf Zeitliche Komponente Objekte mit Ressourcen (OS) Verarbeitung Parallel Sequentiell Überlappend (Zeitscheiben, kooperativ) Entstehung Biologie! Programmausführung im Prozess
Weight Watchers Zustände Zustandsübergänge teuer Running, runnable, sleeping Übergänge? Zustandsübergänge teuer Schwer- vs. leichtgewichtige Prozesse (LWP, Thread) mit viel, wenig Zustandsinfo
Prozesskoordination EVA: Daten und Berechnung Datenerhalt über Prozesslaufzeit hinaus OS: Hauptsächlich Synchronisation Abhängigkeiten zwischen nebenläufigen, kooperierenden Prozessen Ressourcen teilen (I/O, Datenstrukturen, Speicher, ...) Koordination bedingt Kommunikation
Kommunikation Arten Wege Dienste Gegenseitiges Einverständnis! Synchron, asynchron (S, A) Lokal, entfernt/remote (L, R) Wege Nachrichten versenden Entfernter Funktionsaufruf Gemeinsame Datenstrukturen Abgelegte Informationen Direkter Einfluss Dienste Gegenseitiges Einverständnis! Zugangskontrolle
Kommunikationsdienste Nachrichten, Datenströme Message Queues (A; L, R) Sockets (A; R) und Pipes (A; L) Entfernter Funktionsaufruf Remote Procedure Call (S; R) Gemeinsame Datenstrukturen Shared Memory (S; L, R) Informationen Dateisysteme, Datenbanken (A; L, R) Direkte Manipulationen Debugging (S; L)
Nachrichten in Warteschlangen Beliebteste Kommunikation Internet Basisdienst für viele Mehrwertdienste Beispiele Lokal? Entfernt? Abarbeitung in Folge evt. priorisiert mit/ohne Erhalt von Meldungsgrenzen Warteschlange pro Kanal oder global
Remote Procedure Call Dienst Semantik Implementation Unterschiede? Entfernte Funktionsausführung Semantik Lokalem Funktionsaufruf möglichst ähnlich Implementation Nachrichtenpaar Unterschiede? "Stubs" Marshalling Prozesskontext Anwendungen X11, Mikrokernel, NFS, AFS, Datenbanken; SunRPC, Java RMI, CORBA
Gemeinsame Datenstrukturen Derselbe Speicherbereich sichtbar von mehreren Prozessen Shared Memory Implementation Lokal Entfernt: Nachrichtendienst und viele Tricks Probleme Basisadresse, Pointer Synchronisation
Synchronisation Interrupts sperren Verdrängungssperre (Context Switch Block) Sperrvariablen Atomare Operationen Algorithmische Lösung Semaphore Deadlock (Verklemmung)
Filosofen beim Abendessen "Dining Philosophers" Einige Filosofen am runden Tisch Zwischen jedem eine Gabel Jeder braucht zwei Gabeln zum Essen Grundproblem für Deadlocks (Verklemmungen) Zirkuläre Abhängigkeiten vermeiden oder aufbrechen
Beispiel: Datenmanipulation Klassische Serialisierung Nachrichten an einzelnen "verantwortlichen" Prozess Sperrvariablen Einfügen in verkettete Liste Z.B. Nachrichtenwarteschlange Sperrvariable Atomarer Zugriff Probleme Löschen Granularität der Sperrvariable Cache beim Mehrprozessorsystemen
Direkte Manipulation Fehlersuche, Debugging Fehlerumgehung Emulation Inspektion und Modifikation von Variablen Steuerung der Programmausführung Passive Beobachtung ("execution trace") Fehlerumgehung Zugriffsumgehung Lehre: Keine künstlichen, nicht erzwingbaren Rechte! Emulation
Bugs damals und heute http://www.history.navy.mil/photos/pers-us/uspers-h/g-hoppr.htm http://www.tuxedo.org/~esr/jargon/html/entry/bug.html
Debugger Quellprogramm Quellzustand Programmebene Übersetzer Debugger Maschinenebene Maschinen- programm Referenz- information Maschinen- zustand
Persistenz der Information Dilemma Kurzlebige Prozesse Daten oft lange wertvoll Abhilfe Datenbanken Dateisysteme (File system)