4.5.3 Aufgaben zur Synchronisation

[gesichtete Version][gesichtete Version]
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
=Aufgaben zur Synchronisation=
== Aufgabe 1 ==
<p>
<loop_area type="task">
<loop_task title="Kritischer Abschnitt" id="5fa97844d9a07">
<p>
Was versteht man unter einem "kritischen Abschnitt"?</p>
</loop_task>
</loop_area>
</p>


<br />
<br />
== Aufgabe 1 ==
== Aufgabe 2 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Aktives Warten mit while">
<loop_task title="Aktives Warten mit while" id="5fa97844d9a10">
<p>
<p>
Um bei mehreren Prozessen mit gemeinsam genutzten Betriebsmitteln kritische Abschnitte so zu schützen, dass immer nur maximal ein Prozess zur Zeit diesen kritischen Abschnitt ausführen darf, soll das aktive Warten eingesetzt werden.
Um bei mehreren Prozessen mit gemeinsam genutzten Betriebsmitteln kritische Abschnitte so zu schützen, dass immer nur maximal ein Prozess zur Zeit diesen kritischen Abschnitt ausführen darf, soll das aktive Warten eingesetzt werden.
Zur Realisierung des aktiven Wartens kann eine while-Schleife genutzt werden. </p>
Zur Realisierung des aktiven Wartens kann eine while-Schleife genutzt werden. </p>
<p>
<p>
Geben Sie den für das aktive Warten nötigen Programmcode an, der zu Beginn bzw. am Ende eines kritischen Abschnitts ausgeführt werden muss.
Gebe den für das aktive Warten nötigen Programmcode an, der zu Beginn bzw. am Ende eines kritischen Abschnitts ausgeführt werden muss.
</p>
</loop_task>
</loop_area>
</p>
</p>
<br />
== Aufgabe 3 ==
<p>
<loop_area type="task">
<loop_task title="Nachteil des aktiven Wartens" id="5fa97844d9a18">
<p>
<p>
Erläutern Sie warum das aktive Warten einen zeitlichen Nachteil mit sich bringt, und unter welcher Bedingung dieser Nachteil in Kauf genommen werden kann.
Erläutere warum das aktive Warten einen zeitlichen Nachteil mit sich bringt, und unter welcher Bedingung dieser Nachteil in Kauf genommen werden kann.
</p>
</p>
</loop_task>
</loop_task>
Zeile 20: Zeile 37:


<br />
<br />
== Aufgabe 2 ==
== Aufgabe 4 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="TSL">
<loop_task title="TSL" id="5fa97844d9a1f">
<p>
<p>
Wofür steht die Abkürzung TSL (im Kontext der Prozesssynchronisation)?
Wofür steht die Abkürzung TSL (im Kontext der Prozess-Synchronisation)?
</p>
</p>
</loop_task>
</loop_task>
Zeile 32: Zeile 49:


<br />
<br />
== Aufgabe 3 ==
 
== Aufgabe 5 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Aufgabe des TSL-Befehls">
<loop_task title="Aufgabe des TSL-Befehls" id="5fa97844d9a25">
<p>
<p>
Erläutern Sie, welche Aufgabe der TSL-Befehl bei der Ausführung auf einer CPU erfüllt.
Erläutere welche Aufgabe der TSL-Befehl bei der Ausführung auf einer CPU erfüllt.
</p>
</p>
</loop_task>
</loop_task>
Zeile 44: Zeile 62:


<br />
<br />
== Aufgabe 4 ==
== Aufgabe 6 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Aktiv warten mit TSL">
<loop_task title="Problemlöser TSL" id="5fa97844d9a2c">
<p>
<p>
Welches Problem löst der TSL-Befehl in Zusammenhang mit aktivem Warten?
Welches Problem löst der TSL-Befehl in Zusammenhang mit aktivem Warten?
Zeile 56: Zeile 74:


<br />
<br />
== Aufgabe 5 ==
== Aufgabe 7 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Semaphor">
<loop_task title="Semaphor" id="5fa97844d9a33">
<p>
<p>
Ein Semaphor ist eine Datenstruktur, welche aus zwei "Dingen" sowie zwei darauf definierten Funktionen besteht.
Ein Semaphor ist eine Datenstruktur, welche aus zwei "Dingen" sowie zwei darauf definierten Funktionen besteht.
</p>
</p>
<p>
<p>
Welche beiden "Dinge" sind gemeint?<br />
* Welche beiden "Dinge" sind gemeint?
Welche Aufgabe erfüllen die beiden Funktionen?
</p>
<p>
* Wie heißen die beiden Funktionen üblicherweise, und welche Aufgabe erfüllen sie?
</p>
<p>
* Warum müssen die beiden Funktionen atomar ausgeführt werden?
</p>
</p>
</loop_task>
</loop_task>
Zeile 72: Zeile 95:


<br />
<br />
== Aufgabe 6 ==
 
== Aufgabe 8 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Mutex">
<loop_task title="Mutex" id="5fa97844d9a3a">
<p>
<p>
Was versteht man unter einem Mutex (im Kontext der Prozesssynchronisation)?
Was versteht man unter einem Mutex (im Kontext der Prozess-Synchronisation)?
</p>
</p>
<p>
<p>
Zeile 86: Zeile 110:


<br />
<br />
== Aufgabe 7 ==
 
== Aufgabe 9 ==
<p>
<loop_area type="task">
<loop_task title="Arbeitsweise eines Mutex" id="5fa97844d9a40">
<p>
Erläutere anhand eines selbstgewählten Beispiels die Arbeitsweise eines Mutex. Welche Funktionsaufrufe werden rund um die kritischen Abschnitte getätigt?
</p>
</loop_task>
</loop_area>
</p>
 
<br />
== Aufgabe 10 ==
<p>
<loop_area type="task">
<loop_task title="Arbeitsweise eines Zählsemaphors" id="5fa97844d9a47">
<p>
Erläutere anhand eines selbstgewählten Beispiels die Arbeitsweise eines Zählsemaphors. Welche Funktionsaufrufe werden rund um die kritischen Abschnitte getätigt?
</p>
</loop_task>
</loop_area>
</p>
 
<br />
== Aufgabe 11 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Arbeitsweise eines Zählsemaphors">
<loop_task title="Aktiv wartender Semaphor?" id="5fa97844d9a4d">
<p>
<p>
Erläutere anhand eines selbstgewählten Beispiels die Arbeitsweise eines Zählsemaphors.
Wenn Semaphore zur Prozess-Synchronisation eingesetzt werden, ist das dann auch "aktives Warten"? Oder was ist anders? Erläutere!
</p>
</p>
</loop_task>
</loop_task>
Zeile 98: Zeile 147:


<br />
<br />
== Aufgabe 8 ==
 
== Aufgabe 12 ==
<p>
<p>
<loop_area type="task">
<loop_area type="task">
<loop_task title="Aktiv wartender Semaphor?">
<loop_task title="Ein Abend an der Bar" id="5fa97844d9a53">
<p>
In einer gemütlichen Feierabend-Kneipe ist nicht viel los. Dem Barkeeper sitzt lediglich ein Gast gegenüber. Dieser Gast jedoch hat gewaltigen Durst. Er trinkt ein Glas Schnaps nach dem anderen auf ex. Der Barkeeper füllt das leere Glas immer wieder bis oben hin auf.
</p>
<p>
Überführe diese Situation in den Kontext der Prozess-Synchronisation mit Semaphoren. Orientiere dich dabei an folgenden Fragen:
</p>
<p>
<p>
Wenn Semaphore zur Prozesssynchronisation eingesetzt werden, ist das dann auch "aktives Warten"? Erläutere!
* Was repräsentiert in der Kneipe den/die Prozess(e)? (Wieviele gibt es?)
* Was repräsentiert in der Kneipe das/die Betriebsmittel? (Wieviele gibt es?)
* Was muss synchronisiert werden?
* Ist dabei eine Reihenfolge wichtig? Wenn ja: welche?
* Kann der Gast zweimal nacheinander das Glas (auf ex!) austrinken, ohne dass der Barkeeper es zwischendurch wieder füllt?
* Oder umgekehrt: Kann der Barkeeper das Glas zweimal nacheinander (bis oben hin!) füllen, ohne dass der Gast es zwischendurch austrinkt?
* Wieviele Semaphore brauchst du?
* Wann wird jeweils die P()- bzw. die V()-Operation ausgeführt? Von welchem Prozess?
</p>
</p>
</loop_task>
</loop_task>

Aktuelle Version vom 10. November 2020, 14:07 Uhr

Aufgabe 1

Aufgabe

Was versteht man unter einem "kritischen Abschnitt"?


Aufgabe 2

Aufgabe

Um bei mehreren Prozessen mit gemeinsam genutzten Betriebsmitteln kritische Abschnitte so zu schützen, dass immer nur maximal ein Prozess zur Zeit diesen kritischen Abschnitt ausführen darf, soll das aktive Warten eingesetzt werden. Zur Realisierung des aktiven Wartens kann eine while-Schleife genutzt werden.

Gebe den für das aktive Warten nötigen Programmcode an, der zu Beginn bzw. am Ende eines kritischen Abschnitts ausgeführt werden muss.


Aufgabe 3

Aufgabe

Erläutere warum das aktive Warten einen zeitlichen Nachteil mit sich bringt, und unter welcher Bedingung dieser Nachteil in Kauf genommen werden kann.


Aufgabe 4

Aufgabe

Wofür steht die Abkürzung TSL (im Kontext der Prozess-Synchronisation)?


Aufgabe 5

Aufgabe

Erläutere welche Aufgabe der TSL-Befehl bei der Ausführung auf einer CPU erfüllt.


Aufgabe 6

Aufgabe

Welches Problem löst der TSL-Befehl in Zusammenhang mit aktivem Warten?


Aufgabe 7

Aufgabe

Ein Semaphor ist eine Datenstruktur, welche aus zwei "Dingen" sowie zwei darauf definierten Funktionen besteht.

  • Welche beiden "Dinge" sind gemeint?

  • Wie heißen die beiden Funktionen üblicherweise, und welche Aufgabe erfüllen sie?

  • Warum müssen die beiden Funktionen atomar ausgeführt werden?


Aufgabe 8

Aufgabe

Was versteht man unter einem Mutex (im Kontext der Prozess-Synchronisation)?


Aufgabe 9

Aufgabe

Erläutere anhand eines selbstgewählten Beispiels die Arbeitsweise eines Mutex. Welche Funktionsaufrufe werden rund um die kritischen Abschnitte getätigt?


Aufgabe 10

Aufgabe

Erläutere anhand eines selbstgewählten Beispiels die Arbeitsweise eines Zählsemaphors. Welche Funktionsaufrufe werden rund um die kritischen Abschnitte getätigt?


Aufgabe 11

Aufgabe

Wenn Semaphore zur Prozess-Synchronisation eingesetzt werden, ist das dann auch "aktives Warten"? Oder was ist anders? Erläutere!


Aufgabe 12

Aufgabe

In einer gemütlichen Feierabend-Kneipe ist nicht viel los. Dem Barkeeper sitzt lediglich ein Gast gegenüber. Dieser Gast jedoch hat gewaltigen Durst. Er trinkt ein Glas Schnaps nach dem anderen auf ex. Der Barkeeper füllt das leere Glas immer wieder bis oben hin auf.

Überführe diese Situation in den Kontext der Prozess-Synchronisation mit Semaphoren. Orientiere dich dabei an folgenden Fragen:

  • Was repräsentiert in der Kneipe den/die Prozess(e)? (Wieviele gibt es?)
  • Was repräsentiert in der Kneipe das/die Betriebsmittel? (Wieviele gibt es?)
  • Was muss synchronisiert werden?
  • Ist dabei eine Reihenfolge wichtig? Wenn ja: welche?
  • Kann der Gast zweimal nacheinander das Glas (auf ex!) austrinken, ohne dass der Barkeeper es zwischendurch wieder füllt?
  • Oder umgekehrt: Kann der Barkeeper das Glas zweimal nacheinander (bis oben hin!) füllen, ohne dass der Gast es zwischendurch austrinkt?
  • Wieviele Semaphore brauchst du?
  • Wann wird jeweils die P()- bzw. die V()-Operation ausgeführt? Von welchem Prozess?