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.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
pruefungen:hauptstudium:ls4:cs-2021-04-09 [09.04.2021 16:13] – Marcel[Inf] | pruefungen:hauptstudium:ls4:cs-2021-04-09 [09.04.2021 20:13] (aktuell) – Marcel[Inf] | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Concurrent Systems | + | ====== Concurrent Systems |
{{indexmenu>: | {{indexmenu>: | ||
+ | |||
+ | <note tip>My own summary that I have created for exam preparation is available at https:// | ||
===== Meta Information ===== | ===== Meta Information ===== | ||
Zeile 25: | Zeile 27: | ||
Das untenstehende Protokoll sollte relativ vollständig sein. Ich habe es " | Das untenstehende Protokoll sollte relativ vollständig sein. Ich habe es " | ||
- | === Einführung === | + | ==== Einführung |
* Was ist Nebenläufigkeit? | * Was ist Nebenläufigkeit? | ||
Zeile 39: | 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, | + | ==== Blockierende Synchronisation, |
* Was ist blockierende Synchronisation? | * Was ist blockierende Synchronisation? | ||
Zeile 46: | 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 " | > * 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 " | ||
> * 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, | ||
* Nachteile von blockierender Synchronisation? | * Nachteile von blockierender Synchronisation? | ||
Zeile 63: | 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 71: | 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? | * Wie genau funktioniert Verklemmungserkennung? | ||
Zeile 80: | 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 101: | 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, | + | * Wie kann mensch dann diese Warteschlange, |
- | * Warum ist es keine gute Idee, ein Ticketlock zu implementieren, | + | |
> Das Ticketlock ja u.a. deswegen schick ist, weil es zu keinen Buslock Bursts führt, so wie bei TAS/ | > Das Ticketlock ja u.a. deswegen schick ist, weil es zu keinen Buslock Bursts führt, so wie bei TAS/ | ||
Zeile 109: | Zeile 118: | ||
> (Hier wollte wosch das recht genau wissen, obige Antwort ist die Zusammenstellung dessen, was er und ich dann in der Prüfung " | > (Hier wollte wosch das recht genau wissen, obige Antwort ist die Zusammenstellung dessen, was er und ich dann in der Prüfung " | ||
- | === Nichtblockierende Synchronisation === | + | ==== Nichtblockierende Synchronisation |
* Wie könnte mensch die Warteschlange also sonst implementieren? | * Wie könnte mensch die Warteschlange also sonst implementieren? |