3.2.13 Interprozesskommunikation

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(35 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<loop_index id="5fa978612c3f6">Interprozesskommunikation</loop_index><loop_index id="5fa978b14f4f0">Interprocess Communication</loop_index><loop_index id="5fa978b14f4f9">IPC</loop_index><loop_index id="5fa978b14f4ff">Protokoll</loop_index>
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, das sogenannte ''Protokoll''.
</p>
<br />
== Grundbegriffe der IPC ==
<p>
<p>
{{#index:Interprozesskommunikation|Interprocess Communication|IPC}}
Die folgende Aufgabe nimmt sich der Grundbegriffe an:
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>


<br />
<br />
==== Beispiel: Zwei Threads kommunizieren über gemeinsame Variablen ====
== Aufgabe 1 ==
 
<p>
<p>
<loop_area type="example">
<loop_area type="task">
<loop_task title="IPC-Grundbegriffe" id="5fa978612c3fc">
<p>
<p>
In dem [http://youtu.be/dlOg4Dz-bgM Video] zu den [[Race Conditions]] wurde [[Race_Conditions#Quellcode_aus_dem_Video|Quellcode]] gezeigt, bei dem zwei Threads auf eine gemeinsame Variable <span style="font-family:Courier">counter</span> zugreifen.
<loop_index id="5fa978612c400">Verbindungsorientierte Kommunikation</loop_index><loop_index id="5fa9786159f7a">Kommunikation, verbindungsorientiert</loop_index><loop_index id="5fa9786159f83">Verbindungslose Kommunikation</loop_index><loop_index id="5fa9786159f8a">Kommunikation, verbindungslos</loop_index><loop_index id="5fa9786159f90">Speicherbasierte Kommunikation</loop_index><loop_index id="5fa9786159f96">Kommunikations, speicherbasiert</loop_index><loop_index id="5fa9786159f9c">Nachrichtenbasierte Kommunikation</loop_index><loop_index id="5fa9786159fa2">Kommunikation, nachrichtenbasiert</loop_index><loop_index id="5fa9786159fa7">Synchrone Kommunikation</loop_index><loop_index id="5fa9786159fae">Kommunikation, synchron</loop_index><loop_index id="5fa9786159fb3">Asynchrone Kommunikation</loop_index><loop_index id="5fa9786159fb9">Kommunikation, asynchron</loop_index><loop_index id="5fa9786159fbf">Halbduplex-Betrieb</loop_index><loop_index id="5fa9786159fc5">Vollduplex-Betrieb</loop_index><loop_index id="5fa9786159fca">Unicast</loop_index><loop_index id="5fa9786159fd0">Multicast</loop_index><loop_index id="5fa9786159fd5">Anycast</loop_index><loop_index id="5fa9786159fdb">Broadcast</loop_index>
</p>
<cite id="5fa978612c403">Mandl+2013</cite> erläutert in Kapitel 6.5.1 einige Grundbegriffe der Kommunikation. Was versteht man demnach unter:
<p>
* Verbindungsorientierter Kommunikation
Prozessintern ist es also möglich, dass zwei (oder mehr) Threads sich gegenseitig Informationen über gemeinsame Datenbereiche (&rarr;Variablen) bereitstellen.
* Verbindungsloser Kommunikation
* Speicherbasierter Kommunikation
* Nachrichtenbasierter Kommunikation
* Synchroner Kommunikation
* Asynchroner Kommunikation
* Halbduplex-Betrieb
* Vollduplex-Betrieb
* Unicast
* Multicast
* Anycast
* Broadcast
</p>
</p>
</loop_task>
</loop_area>
</loop_area>
</p>
</p>


<br />
<p>
<p>
Eine [[Synchronisation]] der beteiligten Threads beim Zugriff auf die gemeinsamen Datenbereiche wird erforderlich, da es hier zu [[Race_Conditions#Definition:_Race_Conditions|kritischen Abläufen]] kommt.
Im Folgenden werden einige Möglichkeiten der Interprozesskommunikation erläutert. Dabei sei es dem geneigten Leser überlassen, für jede Möglichkeit zu überlegen, welche der gerade angesprochenen Grundbegriffe zutreffen.
</p>
</p>


<br />
<br />
==== Beispiel: Zwei Prozesse kommunizieren über gemeinsame Speicherobjekte ====
<p>
<p>
Unter ''Speicherobjekten'' kann man sich beispielsweise ''Dateien'' vorstellen.
 
== So geht es weiter: ==
</p>
</p>
<p>
<p>
<loop_area type="example">
<loop_area type="arrangement"><loop_toc> </loop_toc></loop_area>
<p>
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.
</p>
</p>
</loop_area>
</p>
<p>
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.
</p>
<p>
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.
</p>


<br />
<br />

Aktuelle Version vom 10. November 2020, 13:52 Uhr

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, das sogenannte Protokoll.


Grundbegriffe der IPC

Die folgende Aufgabe nimmt sich der Grundbegriffe an:


Aufgabe 1

Aufgabe

Mandl 2013 erläutert in Kapitel 6.5.1 einige Grundbegriffe der Kommunikation. Was versteht man demnach unter:

  • Verbindungsorientierter Kommunikation
  • Verbindungsloser Kommunikation
  • Speicherbasierter Kommunikation
  • Nachrichtenbasierter Kommunikation
  • Synchroner Kommunikation
  • Asynchroner Kommunikation
  • Halbduplex-Betrieb
  • Vollduplex-Betrieb
  • Unicast
  • Multicast
  • Anycast
  • Broadcast


Im Folgenden werden einige Möglichkeiten der Interprozesskommunikation erläutert. Dabei sei es dem geneigten Leser überlassen, für jede Möglichkeit zu überlegen, welche der gerade angesprochenen Grundbegriffe zutreffen.


So geht es weiter:



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