Algorithmen und Programmierung IV (SoSe 2007)  19509


Wissensfragen zur Vorlesung

Gegenstand der Klausur ist der Inhalt der Vorlesung. Dazu sollten Sie einerseits diese Inhalte kennen und wiedergeben können, andererseits sollten Sie in der Lage sein, das erworbene Wissen anzuwenden.
Im Folgenden finden Sie eine Sammlung von Wissensfragen, die sich aus der Vorlesung ergeben und die beherrscht werden sollen.

Einführung
  • Wann ist ein Programmablauf sequentiell und wann nichtsequentiell?
  • Ist dies ein sequentielles oder nichtsequentielles Programm:
    x = 3; y = 7;
    (x,y) = (x+1,2*y);
    z = x+y;
  • Was ist ein Prozess?
  • Was ist eine mögliche Syntax und Semantik einer Nebenläufigkeitsanweisung?
  • Was ist eine mögliche Syntax und Semantik einer Gabelungssanweisung?
  • Nennen Sie zwei Gründe für die Nutzung nichtsequentieller Programmung.
  • Wann stehen zwei Prozesse in Konflikt?
  • Was ist Synchronisation?
  • Was ist ein nichtdeterministische Programmablauf?
  • Was ist Ergebnisdeterminiertheit?
  • Was sind unteilbare Anweisungen?
  • Was macht die Korrektheit nichtsequentieller Programme aus?
  • Kann man die Korrektheit nichtsequentieller Programme testen? Begründen Sie.
Nebenläufige Prozesse
  • Was ist eine asynchrone Prozedur?
  • Wie erzeugt man in Java Prozesse?
  • Wo wird in Java die eigentliche Funktionalität eines Prozesses definiert?
  • Wie würde man in Java eine asynchrone Prozedur implementieren?
  • Wie kann man in Java direkt auf Prozesse einwirken? Bitte bescheiben Sie.
  • Skizzieren Sie die Zustände von Prozessen in Java einschließlich der jeweils beteiligten Methoden und Ereignisse.
  • Wo liegen die Probleme einer in einem Prozess verwendeten Variable die als double d; deklariert ist?
  • Beschreiben Sie in Mehrprozessorsystem in Bezug auf die Ausführung von Prozessen.
  • Beschreiben Sie den Mehrprozessbetrieb in Bezug auf die Ausführung von Prozessen.
  • Wie kann es beim Fehlen echter Parallelität Probleme durch nichtatomare Ausdrücke, Anweisungen etc. geben ?
  • Was ist ein Thread im Gegensatz zu einem Prozeß?

Interaktion über Objekte
  • Was ist der Zweck von Sperrsynchronisation?:
  • Was ist die Semantic eines in Java mit synchronized(o) markierten Blocks?
  • Was passiert mit dem Ausschluss, wenn in einer synchronized Methode eine Ausnahme geworfen wird?
  • Kann man synchronized Blöcke schachteln und ist das problemlos?
  • Was ist ein Monitor?
  • Wir baut man in Java einen vollständigen Monitor?
  • Was bewirkt die Definition der folgenden Objektmethode in einer beliebigen Klasse?
      void t() {
        synchronized(this.getClass()) {
            i++;
        }
  •  Wie kann man für Klassen, die für sequentielle Benutzung entworfen sind, einen Monitor für ihre nichtsequentielle Nutzung "nachrüsten"?
  • Wie ist die Semantik von Konstrukten zum Leser-/Schreiberausschluß?
  • Was sind Sperroperationen und was bedeuten sie?
  • Was sind Lese-/Scheibsperren?
  • Was ist das "Upgrading" einer Lesesperre?
  • Was ist Serialisierbarkeit von Operationen?
  • Wann ist ein Objekt serialisierbar?
  • Welche Phasen unterscheidet man beim 2-Phasen-Sperren?
  • Was ist Bedingungssynchronisation und warum ist sie sinnvoll?
  • Was ist ein verzögerter Monitor?
  • Wer hat Vorrang beim Eintritt in einen verzögerten Monitor?
  • Was ist die Semantik der Warteanweisung AWAIT?
  • Was sind Wachen und wie arbeiten sie?
  • Diskutieren Sie die Implementierbarkeit von AWAIT und WHEN.
  • Was ist Ereignissynchronisation?
  • Welche Varianten von SIGNAL gibt es?
  • Welche Mittel stellt Java zur Ereignissynchronisation bereit?
  • Welche Fairness-Garantien werden dabei gemacht?
  • Was sind Semaphore und welche Operationen kann man auf ihnen ausführen?
  • In welcher Reihenfolge müssen die Semaphoren-Operationen ausgeführt werden?
  • Unter welchen Bedingungen werden die Semaphoren-Operationen ausgeführt?
  • Sind Monitore den Semaphoren überlegen? Umgekehrt?
  • Wie baut man eine Sperrvariable mit Hilfe eines Semaphors nach?
  • Was ist eine Vererbungsanomalie?
  • Wie kann man Vererbungsanomalien abhelfen?
  • Was sind autonome Operationen und aktive Objekte?
  • Wie baut man in Java eine asynchrone Operation?
  • Was ist ein Future und wozu dient es?

Ablaufsteuerung
  • Was macht Ablaufsteuerung?
  • Was ist eine Priorität eines Prozesses und wozu wird sie genutzt?
  • Was ist Prioritätsumkeht? Geben Sie ein Beispiel.
  • Was ist eine faire Auswahlstrategie?
  • Garantiert die zufällige Auswahl eines Prozesses in der Ablaufsteuerung Fairness? Begründen Sie.
  • Nennen Sie eine streng faire Auswahlstrategie?
  • Nennen Sie Beispiele für effizienzorientierte Auswahlstrategien und begründen Sie sie.
  • Was ist ein Alterungsmechanismus?
  • Wann ist eine Verklemmung deterministisch, wann ist sie nichtdeterministisch?
  • Was ist ein Anforderungsgraph und woraus besteht er?
  • Wie verwendet man einen Anforderungsgraph zur Verklemmungserkennung?
  • Wie kann man eine Verklemmung auflösen?
  • Was bedeutet Sicherheit bezogen auf Zustände in einem 2-Prozessor-System?
  • Wie werden in Java Verklemmungen behandelt?
  • Was ist ein Livelock?

Implementierung
  • Was ist eine strukturtreue Implementierung?
  • Nennen und beschreiben Sie zwei Beispiele für nicht strukturtreue Implementierungen
  • Was macht die Test-and-Set Operation aus und warum unterstützt sie die Implementierung nebenläufiger Systeme?
  • Was ist ein Spin-Lock und was ist Busy-Waiting?
  • Was sind Koroutinen?