Praktische Einführung mit Virtualisierung
Stefan Bosse
Universität Koblenz - FB Informatik
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen ::
Lernziele
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Taxonomie
Wie können Prozesse kommunizieren? Kommunikation ist örtlich, temporal und zustandsbasiert mit Daten.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Taxonomie
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Taxonomie
Prozesse und Threads können lokal auf dem gleichen Rechner oder mithilfe der Netzwerksoftware des Betriebssystems in einer verteilten Umgebung kommunizieren.
bsdp
Überblick über Synchronisation und Kommunikation
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Taxonomie
IPC-Verfahren aus Sicht der Programmierung
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Taxonomie
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
Unter nachrichtenbasierten Verfahren fassen wir alle Mechanismen zusammen, die einen Datenaustausch zwischen Prozessen und Threads mithilfe von Systemfunktionen bewerkstelligen.
Datenabgrenzung bei der Kommunikation
Die Datenabgrenzung bei der Kommunikation hängt von der Form der ausgetauschten Daten ab. Diese ist bestimmend für mögliche Lösungen der Datenabgrenzung.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
E/A ist auch Kommunikation, aber zunächst nur zwischen Prozessen und Geräten.
Beim Datenaustausch mittels Paketen kommen feste, oft standardisierte Datenformate zum Einsatz.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
Unter einer synchronen Kommunikation versteht man den Fall, dass der Sender warten muss, bis der Empfänger zur Entgegennahme der Daten bereit ist (Rendezvous). Bei der asynchronen Kommunikation läuft der Sender hingegen weiter, auch wenn der Empfänger gerade nicht für den Datenempfang bereit ist.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
Synchrone und asynchrone Kommunikation
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
send (destination, &message);receive (source, &message);
Programmierschnittstelle für die synchrone und asynchrone Nachrichtenkommunkation. Bei einer synchronen Art können beide Funktionen den Prozess blockieren. Ein Nachrichtenpuffer message
trägt eine Identifikation (Textname, Deskriptor, Handle o.Ä.).
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
bsdp
Vergleich von synchroner und asynchroner Kommunikation
Bei der synchronen Kommunikation übergibt der Sender die Nachricht direkt an den Empfänger. Typischerweise wird der Datenaustausch in dieser Situation in der Art eines Rendezvous erledigt. Nur wenn sowohl Sender als auch Empfänger bereit sind, kann die Datenübertragung stattfinden.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
Auch bei der Grerätekommunikation kann A. vs S. unterschieden werden.
Viele Programmiersprachen sind vom Paradigma her strikt sequenziell. Es ist nicht möglich mehrer Operationen parallel auszuführen.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Nachrichtenbasierte Verfahren
function callback(status,data) { if (!status) print("Error:",status) else if (data) processData(data) }send('edu-9.de','mymessage1',callback) // Time 1send('ag-0.de','mymessage2',callback) // Time 2receive('edu-9.de',callback) // Time 3receive('ag-0.de',callback) // Time 4print('I am finished with my computation. Waiting for I/O completion')// Time 10: callback(...)// Time 12: callback(...)
Asynchone E/A mit Callback Funktionen am Beispiel von JavaScript
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Vergleich von Kommunikationsverfahren
bsdp
Vergleich von Kommunikationsverfahren: Speicherbasiert versa nachrichtenbasiert.
Ein Datenaustausch mittels Speicher kann mithilfe von Systemfunktionen erfolgen oder in Selbstverwaltung, nachdem ein gemeinsamer Speicherbereich eingerichtet wurde.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Vergleich von Kommunikationsverfahren
Threads besitzen ein inherentes geteiltes Specihermodell und können somit unmittelbar ohne weitere System- und Hilfsfunktionen über getilte Speichervariablen kommunizieren, anders als isolierte Prozesse.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Vergleich von Kommunikationsverfahren
void* create_shared_memory(size_t size) { // Our memory buffer will be readable and writable: int protection = PROT_READ | PROT_WRITE; // The buffer will be shared (meaning other processes can access it), but // anonymous (meaning third-party processes cannot obtain an address for it), // so only this process and its children will be able to use it: int visibility = MAP_SHARED | MAP_ANONYMOUS; // The remaining parameters to `mmap()` are not important for this use case, // but the manpage for `mmap` explains their purpose. return mmap(NULL, size, protection, visibility, -1, 0);}...void* shmem = create_shared_memory(16);int * counter = (int*)&shmem[0];*counter=0;int pid = fork();if (pid == 0) { // child process *counter++;} else { // parent process *counter--;}
SHM für zwei Prozesse, hier als "Vererbung" durch das Forking vpn Kindprozessen
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Vergleich von Kommunikationsverfahren
Welchen Wert hat die Zählervariable am Ende? Gibt es Gebote? Wir nehmen einen Mehrkernrechner an.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Vergleich von Kommunikationsverfahren
Welchen Wert hat die Zählervariable am Ende? Gibt es Gebote? Wir nehmen einen Mehrkernrechner an.
Keine Ahnung. Die möglichen Ergebniswerte von counter können {-1,0,1} sein. Das Ergebnis ist nicht deterministisch.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul Y Kommunikation und Synchronisaztion von Prozessen :: Vergleich von Kommunikationsverfahren
Andrew Forney