3.2.13 Interprozesskommunikation

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 2: Zeile 2:
{{#index:Interprozesskommunikation|Interprocess Communication|IPC}}
{{#index:Interprozesskommunikation|Interprocess Communication|IPC}}
Bei der '''Interprozesskommunikation''' (englisch: '''Interprocess Communication''', kurz: '''IPC''') geht es um den Austausch von Informationen zwischen zwei (oder mehr) Prozessen bzw. Threads. Damit alle Beteiligten die ausgetauschten Informationen in gleicher Weise verstehen können, sind bestimmte Regeln der Kommunikation einzuhalten.
Bei der '''Interprozesskommunikation''' (englisch: '''Interprocess Communication''', kurz: '''IPC''') geht es um den Austausch von Informationen zwischen zwei (oder mehr) Prozessen bzw. Threads. Damit alle Beteiligten die ausgetauschten Informationen in gleicher Weise verstehen können, sind bestimmte Regeln der Kommunikation einzuhalten.
</p>
<p>
Im Folgenden sind einige Beispiele der Kommunikation angegeben.
</p>
</p>


<br />
<br />
==== Beispiel: Zwei Threads kommunizieren über gemeinsame Variablen ====
==== Zwei Threads kommunizieren über gemeinsame Variablen ====


<p>
<p>
Zeile 23: Zeile 26:


<br />
<br />
==== Beispiel: Zwei Prozesse kommunizieren über gemeinsame Speicherobjekte ====
==== Zwei Prozesse kommunizieren über gemeinsame Speicherobjekte ====
<p>
<p>
Unter ''Speicherobjekten'' kann man sich beispielsweise ''Dateien'' vorstellen.
Unter ''Speicherobjekten'' kann man sich beispielsweise ''Dateien'' vorstellen.
Zeile 57: Zeile 60:
</p>
</p>


 
<br />
==== Zwei Prozesse kommunizieren über Shared Memory ====
<p>
{{#index:Shared Memory|Memory, Shared|gemeinsamer Speicher|Speicher, gemeinsam genutzt}}
Man spricht von Shared Memory (auf deutsch: gemeinsamer Speicher), wenn ein Teil des Hauptspeichers gemeinsam mehreren Prozessen zur Verfügung gestellt wird.
</p>
<br />
==== Aufgabe 2 ====
<p>
<loop_area type="task">
<loop_task title="">
<p>
Überlege, recherchiere und diskutiere in deiner Lerngruppe: Wie kann Shared Memory sehr einfach mehreren Prozessen zur Verfügung gestellt werden?
</p>
<spoiler text="Tipp">
<p>
Man spricht hier vom Einblenden des Shared Memory in mehrere virtuelle Adressräume.
</p>
<p>
Schau dir das Video [http://youtu.be/PpyWObQw70o Grundlagen virtueller Speicherverwaltung mit MMU] noch einmal an und überlege, wie hier der Zusammenhang zwischen einem physikalischen Seitenrahmen (Frame), und dem Einblenden als virtuelle Seite in mehreren virtuellen Adressräumen wohl sein wird.
</p>
</spoiler>
</loop_task>
</loop_area>
</p>


<br />
<br />

Version vom 11. November 2013, 14:02 Uhr

{{#index:Interprozesskommunikation|Interprocess Communication|IPC}} Bei der Interprozesskommunikation (englisch: Interprocess Communication, kurz: IPC) geht es um den Austausch von Informationen zwischen zwei (oder mehr) Prozessen bzw. Threads. Damit alle Beteiligten die ausgetauschten Informationen in gleicher Weise verstehen können, sind bestimmte Regeln der Kommunikation einzuhalten.

Im Folgenden sind einige Beispiele der Kommunikation angegeben.


Zwei Threads kommunizieren über gemeinsame Variablen

Beispiel

In dem Video zu den Race Conditions wurde Quellcode gezeigt, bei dem zwei Threads auf eine gemeinsame Variable counter zugreifen.

Prozessintern ist es also möglich, dass zwei (oder mehr) Threads sich gegenseitig Informationen über gemeinsame Datenbereiche (→Variablen) bereitstellen.

Eine Synchronisation der beteiligten Threads beim Zugriff auf die gemeinsamen Datenbereiche wird erforderlich, da es hier zu kritischen Abläufen kommt.


Zwei Prozesse kommunizieren über gemeinsame Speicherobjekte

Unter Speicherobjekten kann man sich beispielsweise Dateien vorstellen.

Beispiel

Ein Prozess A erzeugt während seiner Laufzeit Daten und speichert diese in einer Datei ab. Ein zweiter Prozess B liest diese Datei zu einem späteren Zeitpunkt ein und kann so die enthaltenen Informationen weiterverarbeiten.

Auch hier ist eine Synchronisation nötig. Allerdings sorgt das Betriebssystem nur für eine Synchronisation beim gleichzeitigen Zugriff der beiden Prozesse auf die Datei (z.B. über Semaphore).

Falls hingegen Prozess B den Dateiinhalt ausliest, lange bevor Prozess A die gewünschten Informationen hineingeschrieben hat, so ist nicht zu erwarten, dass Prozess B das erwartete Ergebnis berechnen kann.

{{#index:Lock-Mechanismus}} In dieser Situation kann etntweder der Mensch eingreifen, indem er Prozess B erst dann startet, wenn Prozess A fertig ist (in Shell-Skripten oder Batch-Dateien kann das sehr einfach über die Reihenfolge der Befehle erfolgen), oder das Betriebssystem stellt einen sogenannten Lock-Mechanismus für den Dateizugriff zur Verfügung.


Aufgabe 1

Aufgabe

Recherchiere:
Was versteht man unter einem Lock-Mechanismus im Hinblick auf den schreibenden oder lesenden Zugriff mehrerer Prozesse auf eine Datei?


Zwei Prozesse kommunizieren über Shared Memory

{{#index:Shared Memory|Memory, Shared|gemeinsamer Speicher|Speicher, gemeinsam genutzt}} Man spricht von Shared Memory (auf deutsch: gemeinsamer Speicher), wenn ein Teil des Hauptspeichers gemeinsam mehreren Prozessen zur Verfügung gestellt wird.


Aufgabe 2

Aufgabe

Überlege, recherchiere und diskutiere in deiner Lerngruppe: Wie kann Shared Memory sehr einfach mehreren Prozessen zur Verfügung gestellt werden?



Diese Seite steht unter der Creative Commons Namensnennung 3.0 Unported Lizenz http://i.creativecommons.org/l/by/3.0/80x15.png