Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Prüfungen im Bachelor-Studium (1. - 5. Semester) » pfp » Lösungsvorschlag (Übersicht)
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Lösungsvorschlag
Aufgabe 1 (Wissensfragen)
a)
- Bei 3 Arbeitspaketen wird ein Speedup von 1.8 gemessen.
s(n) = 54 s und p(n) = 2 * 6 + 18 s = 30 s ⇒ Sp(n) = 54 / 30
b)
- Das Schalten von Transitionen ist atomar.
- Keine Belegung des Petri-Netzes ist im Erreichbarkeitsgraph doppelt vorhanden.
c)
- def g: ((Int, Int) ⇒ Int) ⇒ Int
- (def g: ((Int, Int) ⇒ Int) ⇒ Int)
Aufgabe 2 (Longest Common Subsequence)
Not verified yet!
public char[] lcs() throws Exception { for (int i = 0; i < threads; i++) { // Anfang der for-Schleife #1 final int threadId = i; queues[threadId] = new LinkedBlockingQueue<Object>(); int step = (columns - 1) / threads; final int start = 1 + i * step; final int end = (i == threads - 1) ? columns - 1 : start + step; Thread t = new Thread() { public void run() { try { for (int row = 1; row < rows; row++) { if (threadId > 0) { queues[threadId - 1].take(); } for (int c = start; c < end; c++) { // fuelle Zeile des Blocks table[row][c] = calcValue(row, c); } queues[threadId].put(READY); } } catch (InterruptedException e) {}}}; t.start(); } // Ende der for-Schleife #1 for (int i = 1; i < rows; ++i) { queues[threads - 1].take(); } return readMatrix(); }
Aufgabe 3 (Fehlersuche)
a)
Stichwortartige Problembeschreibung:
Klasse Error1 hat eigene Kopie von finished im Cache und bekommt möglicherweise die globale Änderung nicht mit.
Beheben Sie den Fehler:
static volatile boolean finished = false;
b)
Stichwortartige Problembeschreibung:
Da if-Abfrage nicht synchronisiert, wird latch möglicherweise zweimal dekrementiert und Haupt-Thread schläft ewig.
Beheben Sie den Fehler:
synchronized(Error2.class) { /* if-Abfrage */ }
c)
Stichwortartige Problembeschreibung:
In foo() wird run-Methode direkt aufgerufen!
Beheben Sie den Fehler (Zeile 15):
thread2.start();