Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Concurrent Systems Exam 2021-04-09   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
pruefungen:hauptstudium:ls4:cs-2021-04-09 [09.04.2021 16:05] Marcel[Inf]pruefungen:hauptstudium:ls4:cs-2021-04-09 [09.04.2021 20:13] (aktuell) Marcel[Inf]
Zeile 1: Zeile 1:
-====== Concurrent Systems Prüfung 2021-04-09 ======+====== Concurrent Systems Exam 2021-04-09 ======
  
 {{indexmenu>:pruefungen:hauptstudium:ls4:cs-2021-04-09#1|navbar}} {{indexmenu>:pruefungen:hauptstudium:ls4:cs-2021-04-09#1|navbar}}
 +
 +<note tip>My own summary that I have created for exam preparation is available at https://github.com/ComFreek/uni-concurrent-systems-summary/. Pull requests welcome!</note>
  
 ===== Meta Information ===== ===== Meta Information =====
Zeile 23: Zeile 25:
 ===== Prüfung ===== ===== Prüfung =====
  
-=== Einführung ===+Das untenstehende Protokoll sollte relativ vollständig sein. Ich habe es "didaktisch komprimiert", d.h. z.B. Hänger von mir ausgelassen. 
 + 
 +==== Einführung ====
  
   * Was ist Nebenläufigkeit?   * Was ist Nebenläufigkeit?
Zeile 37: Zeile 41:
 > Als Beispiel betrachte zwei Programme, deren Prozesse zur Laufzeit beide auf den Speicher zugreifen. Diese Zugriffe können dann durch den Bus sequentialisiert werden. > Als Beispiel betrachte zwei Programme, deren Prozesse zur Laufzeit beide auf den Speicher zugreifen. Diese Zugriffe können dann durch den Bus sequentialisiert werden.
  
-=== Blockierende Synchronisation, Verklemmungen ===+==== Blockierende Synchronisation, Verklemmungen ====
  
   * Was ist blockierende Synchronisation?   * Was ist blockierende Synchronisation?
Zeile 44: Zeile 48:
 > * Beispiel 1: Programm nutzt BS-Primitiven (z. B. Sperren) um zu blockieren. => Zur Ausführung gibt der kernel-level Prozess (d.h. Prozess auf BS-Ebene) die Kontrolle ab; kernel-level Prozesszustand wechselt zu "blockiert": > * Beispiel 1: Programm nutzt BS-Primitiven (z. B. Sperren) um zu blockieren. => Zur Ausführung gibt der kernel-level Prozess (d.h. Prozess auf BS-Ebene) die Kontrolle ab; kernel-level Prozesszustand wechselt zu "blockiert":
 > * Beispiel 2: Programm nutzt in Anwendungssoftware kodierte Umlaufsperren um zu blockieren. => Zur Ausführung gibt der Anwendungsprozess die Kontrolle ab, der kernel-level Prozess aber nicht. > * Beispiel 2: Programm nutzt in Anwendungssoftware kodierte Umlaufsperren um zu blockieren. => Zur Ausführung gibt der Anwendungsprozess die Kontrolle ab, der kernel-level Prozess aber nicht.
 +
 +  * Was für Techniken gibt es für blockierende Synchronisation?
 +
 +> Sperren, Semaphore, Mutexe
 +
 +  * Was ist der Unterschied zwischen Mutexe und Semaphore?
 +
 +> Mutexe sind Methoden zur Sicherstellung wechselseitigen Ausschlusses [siehe Anhang des Foliensatzes zu Mutexe zum Thema Mutexe vs. Mutexentitäten]. Mutexentitäten sind Objekte mit einer `acquire` und einer `release`, wobei `release` überprüft, ob der aufrufende Prozess auch der war, der `acquire` vorher vollendet hatte. Allgemeine Semaphore können für unilaterale Synchronisation eingesetzt werden, typischerweies innerhalb des Produzenten-Verbraucher-Musters. Hierbei kann der Produzent nach dem Produzieren neuer Daten das Signal, dass neue Daten verfügbar sind, absetzen, indem er `V` aufruft. Und der Konsument kann auf den Erhalt dieses Signals synchronisieren, indem er `P` aufruft. Spezialisiert mensch den allgemeinen Semaphor auf den Wertebereich `{0, 1}` zu einem binären Semaphor und fügt einen Autorisierungsprüfung um `V` herum hinzu, so erhält mensch eine Mutexentität.
  
   * Nachteile von blockierender Synchronisation?   * Nachteile von blockierender Synchronisation?
Zeile 61: Zeile 73:
   * Welche der 4 Bedingungen entkräftet Verklemmungsvermeidung?   * Welche der 4 Bedingungen entkräftet Verklemmungsvermeidung?
  
-Nur (iv) zirkuläres Warten.+Nur (iv) zirkuläres Warten.
  
   * Was ist der Unterschied zwischen Verklemmungsvorbeugung und Verklemmungsvermeidung?   * Was ist der Unterschied zwischen Verklemmungsvorbeugung und Verklemmungsvermeidung?
Zeile 69: Zeile 81:
   * Was gibt es neben den beiden noch?   * Was gibt es neben den beiden noch?
  
-Wir können die Flinte ins Korn werfen und Verklemmungserkennung betreiben -- d.h. reagieren wenn es eigentlich schon zu spät ist.+Wir können die Flinte ins Korn werfen und Verklemmungserkennung betreiben -- d.h. reagieren wenn es eigentlich schon zu spät ist.
  
   * Wie genau funktioniert Verklemmungserkennung? Was muss das BS alles machen dafür?   * Wie genau funktioniert Verklemmungserkennung? Was muss das BS alles machen dafür?
Zeile 78: Zeile 90:
 > Bei general-purpose BS können wir eigentlich nur Prozesse terminieren (unschön). > Bei general-purpose BS können wir eigentlich nur Prozesse terminieren (unschön).
  
-=== Umlaufsperren ===+==== Umlaufsperren ====
  
   * Was ist der Unterschied zwischen einem Ticketlock und einem TAS-basierten Lock?   * Was ist der Unterschied zwischen einem Ticketlock und einem TAS-basierten Lock?
Zeile 99: Zeile 111:
 > Und wenn ein Prozess `unlock()` ausführt (also Kopf der Warteschlange war), so invalidiert dieser nur die boolsche Variable desjenigen Prozesses, der nach ihm folgt (also nächster innerhalb der Warteschlang war). > Und wenn ein Prozess `unlock()` ausführt (also Kopf der Warteschlange war), so invalidiert dieser nur die boolsche Variable desjenigen Prozesses, der nach ihm folgt (also nächster innerhalb der Warteschlang war).
  
-  * Wie kann mensch dann diese Warteschlange, also eine dynamische Datenstruktur, implementieren? +  * Wie kann mensch dann diese Warteschlange, also eine dynamische Datenstruktur, implementieren? Warum wäre es keine gute Idee, ein Ticketlock derart zu implementieren, dass es seine interne Warteschlange mittels einer anderen Umlaufsperre blockierend synchronisiert?
-  * Warum ist es keine gute Idee, ein Ticketlock zu implementieren, was intern seine Warteschlange mittels einer anderen Umlaufsperre blockierend synchronisiert?+
  
 > Das Ticketlock ja u.a. deswegen schick ist, weil es zu keinen Buslock Bursts führt, so wie bei TAS/CAS-basierten Umlaufsperren. > Das Ticketlock ja u.a. deswegen schick ist, weil es zu keinen Buslock Bursts führt, so wie bei TAS/CAS-basierten Umlaufsperren.
Zeile 107: Zeile 118:
 > (Hier wollte wosch das recht genau wissen, obige Antwort ist die Zusammenstellung dessen, was er und ich dann in der Prüfung "erarbeitet" haben. Es lohnt sich wohl sich das nochmal anzusehen und womöglich präziser auszuformulieren.) > (Hier wollte wosch das recht genau wissen, obige Antwort ist die Zusammenstellung dessen, was er und ich dann in der Prüfung "erarbeitet" haben. Es lohnt sich wohl sich das nochmal anzusehen und womöglich präziser auszuformulieren.)
  
-=== Nichtblockierende Synchronisation ===+==== Nichtblockierende Synchronisation ====
  
   * Wie könnte mensch die Warteschlange also sonst implementieren?   * Wie könnte mensch die Warteschlange also sonst implementieren?