« »

Deadlockerkennung

Diese Aufgabe war Teil der Klausur im Sommersemester 2024 (Zweittermin).

a)

Level 3: Anwenden

Gegeben seien die Prozesse P1 bis P5 und die Ressourcen A bis G. Jede Ressource sei genau einmal vorhanden. Sie kann auch nur exklusiv genutzt werden, d.h. von maximal einem Prozess zur Zeit.

Aktuell besteht folgende Ressourcenzuteilung und -anforderung:

  • P1 belegt D und fordert C und G an.
  • P2 belegt E und fordert B an.
  • P3 belegt B und fordert D an.
  • P4 belegt G und fordert A an.
  • P5 belegt C und fordert E an.

Liegt bei dieser Ressourcenzuteilung und -anforderung ein Deadlock vor? Falls ja: Welche Prozesse sind daran beteiligt? Falls nein: Begründen Sie, warum nicht.

Lösung

Es liegt ein Deadlock vor. Beteiligt sind die Prozesse P1, P5, P2 und P3.

Graph: P1 → C → P5 → E → P2 → B → P3 → D → P1 → G → P4 → A

b)

Level 1: Wissen

In der Vorlesung haben wir die vier Bedingungen für das Eintreten von Deadlocks kennengelernt. Zwei davon sind:

  • Exklusive Allokation von Ressourcen (“gegenseitiger Ausschluss”)
  • Allokation zusätzlicher Ressourcen (“halten und warten”)

Nennen Sie stichwortartig die beiden fehlenden Bedingungen.

Lösung
  1. Nichtentziehbarkeit
  2. Kreisförmige Abhängigkeit

c)

Level 3: Anwenden

Die Funktionen p1 und p2 werden nebenläufig auf einem Betriebssystem ausgeführt.

semaphore S1, S2;

void p1(void) {
    wait(&S1);
    wait(&S2);
    // … Code
    signal(&S2);
    signal(&S1);
}

void p2(void) {
    wait(&S1);
    wait(&S2);
    // … Code
    signal(&S2);
    signal(&S1);
}

Kann es hier zu einem Deadlock kommen? Begründen Sie.

Lösung

Nein, denn die Ressourcen werden von p1 und p2 in der gleichen Reihenfolge angefordert.

Lernziele

In dieser Aufgabe …

  • erstellen die Studierenden eigenhändig einen Ressourcenallokationsgraph.
  • wiederholen die Studierenden die Bedingungen für Deadlocks.
  • wenden die Studierenden ihre Kenntnisse auf ein gegebenes Codebeispiel mit Semaphoren an.