BS Klausurprotokoll SoSe18.1
Parallelisierung (16P)
a) find | grep “\.c$” | wc – Was macht dieser Befehl? (4P)
b) Fork & Thread: num = 4
confuse() { num–
printf(“%d “, num) }
main () { t_trthread pid = fork() num–
if (pid >0) { num– wait(NULL) num–
} else
printf(“%d “, num)
pthread_create($thread, NULL, &confuse, NULL) pthread_join(&trhead)
printf(“%d “, num -1)
exit(0) }
num– printf(“%d\n”, num) exit(0)
}
Was wird ausgegeben? (4P)
Was passiert, wenn man `wait(NULL)“ weglässt? (2P)
c) Was hapen wait_pid() und pthread_join() gemeinsam (4P) d) Verklemmungen
Was ist ein Livelock?
Was ist schlimmer, Deadlock oder Livelock, begründe!
Synchronisation a) Primzahlen ausgeben(5P)
Es sind 3 Codeblöcke vorgegeben, function1-3. Mithilfe der Semaphore s1, s2, s3 sollen die Primzahlen von 1 bis 11 in der Richtigen Reinfolge ausgegeben werden. Alle Funktionen laufen in eigenen Threads und werden parallel gestartet. Initialisiere dazu zuerst die Semaphore und füge dann in den Code an den entsprechenden Zeilen die nötigen Semaphoroperationen ein.
semaphor s1 = ; semaphor s2 = ; semaphor s3 = ;
function1() { printf(“%d”, 3); printf(“%d”, 5)
}
function2() {
printf(“%d”, 2);
printf(“%d”, 13) }
function3() { printf(“%d”, 7); printf(“%d”, 11)
}
b) Betriebsmittel & Verklemmungen (6P)
Zwei Prozesse (P1 & P2) greifen zu verschiedenen Zeiten auf 2 Ressourcen (L & R) zu. Ist eine Ressource momentan belegt, blockiert der Prozess bis diese Ressource frei wird. Beide Prozesse laufen auf einem eigenen Prozessor, werden zeitgleich gestartet und arbeiten mit der selben Geschwindigkeit.
Bei welchen Zugriffskonstellationen kann es NICHT zu Verklemmungen kommen? Begründe jeweils.
1. Erst belegt P1 R & L gleichzeitig, danach P2 R & L gleichzeitig.
2. P1 belegt L, danach belegt P2 R, dann P1 R, zuletzt P2 L.
3. P1 belegt L, danach belegt P1 R, danach belegt P2 L, danach belegt P2 R.
Anm: Die Freigaben sind hier irrelevant, geschehen aber nach endlicher Zeit.
Sheduling
a) Round Robin Sheduling (20ms Scheibe), 3 Prozesse mit CPU, IO und Ankunftszeit in gegebene Tabelle eintragen.
b) FIFO-Anomalie: Was ist das? Nenne je ein Verfahren bei welchem es auftritt, und bei welchem nicht. (4P)
c) Physikalische Adressen bei Segmentbasierter Adressierung berechnen: 2 Adressen und eine Umwandlungstabelle sind gegeben. Die Umwandlung durchführen und eventuell auftretende Fehler notieren.
d) 1x Buddy, 1x Next Fit Speicher reservieren. Ein Speicherabschnitt mit Blöcken ist vorgegeben. (6 MiB jeweils)
E/A Sheduling
a) 128 Spurige Festplatte, 3 Gruppen von Aufträgen die bei 0, 1 & 4 t ankommen mit ShortestSeekTimeNext einsortieren in Zeitliste:
G0={5, 20, 50, 70} -> G1={ 4, 72, ?} -> G4={0, 80, ?}
b) Puffer (4P)
Gegeben sind die vier (aus der Vorlesung bekannten) Pufferarten für Geräte: Kein Puffer, 1 Puffer, 2 Puffer, Ring-Puffer. Trage JA oder NEIN ein:
?
0xPuffer
1xPuffer
2xPuffer
nxPuffer
Brachliegen des Geräts möglich / nötig
Overhead durch kopieren
100% Auslastung des Gerätes
Prozess kann bei laufendem Gerät ausgelagert werden
Muliprozessorsysteme (6P)
a) Nenne 2 lokal (nutzbare) Interprozesskommunikationsschnittstellen unter Linux (2P)
b) MESI-Protokoll: Welche Probleme behebt es? (2P)
c) Skalierbarkeit von Mehrprozessorsysteme: Wovon hängt es ab? (2P)