Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Lösungsvorschlag (Übersicht)
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
pruefungen:bachelor:pfp:loesungss12 [24.07.2015 09:54] – ThiloK | pruefungen:bachelor:pfp:loesungss12 [03.08.2019 18:37] (aktuell) – mrpwner | ||
---|---|---|---|
Zeile 9: | Zeile 9: | ||
* richtig | * richtig | ||
- | **c)** 1 | + | **c)** |
+ | **d)** | ||
+ | |||
+ | **e)** | ||
+ | |||
+ | **f)** | ||
==== Aufgabe 2 (Petri-Netze) ==== | ==== Aufgabe 2 (Petri-Netze) ==== | ||
Zeile 19: | Zeile 24: | ||
| | ||
- | 0 | + | 0 |
2 | 2 | ||
0 | 0 | ||
| | ||
0 | 0 | ||
+ | | ||
- | Petri-Netz ist lebendig, da Summe aller Marken bei t0 -> t2 -> t3 -> t4 -> t1 unverändert bleibt. Alle Transitionen können immer wieder schalten! | + | Petri-Netz ist nicht lebendig, da durch t0 -> t3 -> t3 ein Deadlock entsteht! |
**b)** | **b)** | ||
Zeile 40: | Zeile 46: | ||
public class PointerDoubling { | public class PointerDoubling { | ||
private static int[] next ; | private static int[] next ; | ||
- | private static int [] rank; | + | private static int[] rank; |
private static CyclicBarrier outer; | private static CyclicBarrier outer; | ||
private static CyclicBarrier inner; | private static CyclicBarrier inner; | ||
Zeile 72: | Zeile 78: | ||
} | } | ||
// TODO: 4 | // TODO: 4 | ||
- | inner.await(); | + | // inner.await(); |
int distance = 1 ; | int distance = 1 ; | ||
while (distance < next.length) { | while (distance < next.length) { | ||
Zeile 82: | Zeile 88: | ||
} | } | ||
// TODO: 4 | // TODO: 4 | ||
- | inner.await(); | + | // inner.await(); |
// TODO: 3 | // TODO: 3 | ||
if (rankOfNext != 0) { | if (rankOfNext != 0) { | ||
Zeile 102: | Zeile 108: | ||
} // END OF PointerDoubling | } // END OF PointerDoubling | ||
</ | </ | ||
+ | |||
+ | < | ||
==== Aufgabe 6 (Sichtbarkeit und Wettlaufsituation) ==== | ==== Aufgabe 6 (Sichtbarkeit und Wettlaufsituation) ==== | ||
+ | |||
+ | **a)** | ||
+ | Vier, Rechenzeit wird Threads zufällig zugeteilt, weshalb die Reihenfolge von Inkrementieren und Schreiben nicht geklärt werden kann. | ||
+ | |||
+ | **b)** | ||
+ | digits[2] == 0 | 1 \\ | ||
+ | Auch hier kann nicht vorausgesagt werden, ob erst inkrementiert oder erst geschrieben wird. Sicher ist jedoch, dass sich die Threads keine Kopie der Variablen halten und somit immer auf den zuletzt geschriebenen Wert zugreifen! | ||
+ | |||
+ | **c)** | ||
+ | digits[3] == 9 \\ | ||
+ | Da Thread2 an barrier auf das Schreiben von Thread1 wartet, wird gewährleistet, | ||
+ | |||
+ | **d)** | ||
+ | Alle Werte zwischen 2 und 8 sind möglich. | ||
+ | |||
+ | **e)** | ||
+ | digits[5] == 5 | 7 \\ | ||
+ | Da nicht geklärt ist, welcher Thread nach barrier.await() zuerst Rechenzeit zugeteilt bekommt, entsteht eine Wettlaufsituation um dv5. |