Gedanken-Protokoll der mündlichen Prüfung: Syspro, Spaniol
==========================================================

Ich kam vorzeitig vor dem Prüfungsraum an und wurde daher gemeinsam mit 
meinem als Vorgänger Eingeteilten geprüft.
Der Zeitrahmen war daher nicht 15 Minuten pro Person, sondern 30 Minuten
für uns beide, wir haben aber etwas länger gemacht, meine ich.

Prof und Assistent saßen uns gegenüber, mit den Klausuren auf dem Tisch/
Der Assistent hat schweigend Notizen gemacht, Prof. hat gefragt und wir 
hatten Zettel und Papier bekommen.
Oftmals sollten wir Antworten oder Teile davon aufschreiben.

Die Prüfung lief sehr ruhig und locker ab, wie ein normales Gespräch eben.
Die Fragen waren sehr fair, hätten von jedem beantwortet werden können der
aufgepasst hat und waren sogar entgegenkommend - ganz anders als bei
den Maschis :-P
Mein Nachbar hat allerdings sichtbar am ganzen Körper gezittert, als wäre 
er auf der Schlachtbank gelandet.
Naja, er kam auch noch mit Lernzetteln zu dem Raum...

Bevor ich bei meinen Antworten zu viel sagen konnte (ich wollte ständig 
loslegen wenn ich einmal dran war), wurde wieder mein Nachbar drangenommen.
Weil mein Mit-Prüfling in der Materie nicht sehr sicher war und weniger 
Punkte in der Klausur hatte, wurde größtenteils er befragt.
Die Frage wurde dann an mich weitergegeben, wenn er nicht weiterkam.

Dadurch dass mein Nachbar auf die erst allgemeinen und einfachen Fragen 
oft keine Antwort geben konnte, wurde durch die als Hilfe eingestreuten 
(und immernoch einfachen) Fragen natürlich immer weiter ins Detail abgeschweift.
Wenn das alles nichts gebracht hat oder das Thema erschöpft war, wurde das 
Thema gewechselt. Zuerst ähnliche Themen, dann auch mal was ganz anderes.


So, jetzt kommen endlich die Fragen. Fragen vom Prof werden mit - eingeleitet,
die Antworten stehen in () darunter. Gedanken oder Aktionen in <> oder **.

- Was können sie mir zu der Funktion wait(S) sagen? Schreiben sie das mal
beide auf ihren Zetteln auf.
(*schnell viel schreib*)
Das Thema lief natürlich auf Semaphore hinaus. Mit einer ausholenden Antwort
hätte man das ganze Thema schnell erschlagen können, aber man ließ mich nicht
direkt das ganze Thema erschlagen :-)

Meinen Nachbarn hat er dann zuerst gefragt.
Die Fragen, die zur Vertiefung gestellt wurden, sollten dabei helfen auf das 
Gesamtkonzept der Semaphore und deren Funktionsweise hinzuleiten, wenn man
(d.h. mein Nachbar) nicht weiterkamen.
Dabei wurden auch immer wieder Anschauungsbeispiele vom Prof eingeworfen, z.B.
Parkhaus mit Zähler oder wir Anwesenden in dem Prüfungs-Raum in den nur so und
soviel Leute passen usw.

- Was ist S?
(Integervariable)
- wozu braucht man S?
Vom Nachbarn kommt nichts, Frage geht an mich weiter
(geregelter Zugriff durch wait/signal *sprudeln will*)
- man kann ja auch noch init machen
(richtig) < hey, wer antwortet hier eigentlich wem :-) >
- @Nachbar: Schreiben Sie mal auf, wie der Code von wait(S) aussieht.
(S wurde dekrementiert, danach kam er ins Stocken)
- Was macht man, nachdem S dekrementiert wurde?
dann @me:
(Prozess warten lassen: Warteschlange)
- ja, Warteschlange, man kann aber auch busy waiting machen.
(ja, dann lässt man die Leute halt um den Block laufen anstatt sie auf der
Bank vor dem Raum einzureihen)
- @me: Wo werden die Prozesse in der Warteschlange eingereiht?
(Kommt auf das Verfahren an, das man bei der Schlange verwendet)
- das Verfahren will ich nicht wissen
(Wenn man FIFO verwendet...)
- Ja, FIFO
(..., an der ersten freien Stelle in der Warteschlange)
aber er wollte es noch genauer wissen
- Ich behaupte dass man genau sagen kann wo ein Prozess eingereiht wird.
(...? <man muss also irgendwie den Index wissen>)
- Es gibt ja nur die Variable S...
(dann am besten an der Stelle S <meine aber Betrag S, spielt auch eigentlich keine Rolle>)
- S ist negativ...
(Betrag S)
- Ja, Betrag S oder -S.
- Wenn man wait geschafft hat, wie sieht dann signal(S) aus? Schreiben sie bitte
signal(S) auf.
(beide schreiben)
- @Nachbar: ...das muss ja so ähnlich sein wie wait...
(Funktion hingeschrieben: {Prozess aus Warteschlange holen, falls einer drin ist},
dann S++)
- @me: Wird S in jedem Fall erhöht?
(war kurz nicht sicher wegen der Reihenfolge, was aber nix mit der Frage zu tun hatte, 
dann wurde wieder Parkhausbeispiel mit ausfahrendem Auto gebracht => klaro, wird auf jeden 
Fall erhöht)
- Gut, und wozu braucht man Semaphore?
Nachbar quält sich.
@me:
(sync, wechselseitiger Ausschluss)

Dann ging er zum nächsten Thema über:
- wait/signal sollen atomar ablaufen, warum und wie wird das realisiert?
(natürlich mit Test und Set Hardware, mein Mit-Prüfling hat sich noch etwas rumgequält
und sollte dann ein Beispiel mit zwei Prozessen aufschreiben, die beide ein wait
machen, aber nicht atomar arbeiten. Der Prof hat dann auf seinem Blatt ein paar 
Fehler-Beispiele aufgemalt und wollte fragen warum das so nicht klappen kann.
Dann hat er mal ein konkretes Zahlenbeispiel wissen wollen.
=> da gab es 2 Prozesse, die beide fast gleichzeitig auf den ersten Platz in der
Warteschlange gereiht wurden und nicht "ins Parkhaus einfuhren".)
- @me Wie realisiert man das jetzt?
(Test and Set Hardware)
- Gut, dabei werden 2 Operationen auf einmal gemacht. Wir glauben den Hardware-Leuten das mal.
TS(x) sei die Test-Set Funktion. Was ist x für ein Datentyp?
Naja, eigentlich egal, aber was kann man dafür nehmen?
(integer, boolean)
- Schreiben sie mal beide die TS(x)-Funktion auf.
(lief dann darauf hinaus, dass man den Wert x prüft und etwas zurückgibt, so genau hatten
wir das beide nicht)

Nächstes Thema: Sync mehrerer Prozesse
- Mit einer Variable kann man das noch machen, aber wenn man mehrere hat, wird das
komplizierter. Nehmen wir mal das 5 Philosophen-Problem. Die Philosophen haben ja 2 Dinge, 
die sie brauchen. 
@Nachbar: Welche sind das?
(natürlich die 2 Gabeln, und die rechte Gabel des einen ist die linke Gabel des anderen.
Beim Nachbarn kam das nicht)
- Was kann denn bei dem Problem passieren?
(Nachbar weiß nicht)
- Gut, das kann man ja auch mit 4 Leuten machen. Wir sind hier zu viert im Raum und wenn 
wir uns jetzt Gabeln teilen so wie bei den Philosophen... (erklärt noch mehr)
(Nachbar weiß nicht)
Die Frage wurde dann an mich abgegeben.
(Die Philosophen verhungern, weil jeder eine Gabel hat und sie nicht rausgibt *sprudel*)
- ja, und wenn wir jetzt zu den 5 Leuten zurück kommen, kann da passieren dass nur einer
verhungert?
(ach, wie war das noch... *100 Gedanken zu den Philosophen*)
- 2 Paare verschwören sich gegen den 5. Philosophen...
(richtig, dann bekommt er nie Gabeln ab und verhungert)

Gleiches Thema, anderes Beispiel, wieder an meinen Nachbarn gerichtet.
- Ich will mal was Vorlesungsbezogenes fragen... zum Rauchen braucht man Feuer, Tabak und
eine Pfeife... *überlegt* richtig, das steht in keinem Script.
Kennen sie das Problem?
(Schweigen im Walde)
Frage wird an mich abgegeben
(Das nennt sich das 3 Raucher Problem: es gibt 3 Prozesse und 3 Ressourcen und jeder braucht... 
*sprudeln will*)
- ... richtig, die jeweils anderen Ressourcen, die werden ja in die Mitte geworfen und jeder 
nimmt sich daraus welche.
(<wollte ich eigentlich gesagt haben>)
- Kann so auch ein Deadlock entstehen?
(müsste, *nick*)
- Ein Prozess kann Ressourcen nehmen die er schon hat und kommt so nicht weiter.
- @Nachbar: Waren sie denn in der Vorlesung?
(hm, ja schon)
- Immer?
kaum hörbar (hmm, hmm, ja)
- Dann kann doch nicht sein, dass ihnen das Problem nicht bekannt ist
(ja, das kenne ich schon...)
- aber sie haben es nicht verinnerlicht.

Ganz anderes Thema, @Nachbar:
- "Second Chance", wie funktioniert das?
Zwischen viel gemurmel: (SC ist ein Paging Algorithmus, und es gibt ein Use-Bit)
- Richtig, und wie kommen neue Daten hinein?
(von oben)
- Ja, FIFO. Und welche Daten werden rausgenommen?
(Die untersten ohne Use-Bit)
- genau

@me:
- Und wenn alle das Bit gesetzt haben?
(Dann haben wir keine Information mehr und resetten die Bits, ebenso wie bei einem Pagefault
*sprudeln will*)
- genau, dann bringen die Bits nichts mehr und müssen resettet werden.

Wir hatten dann das Zeitlimit erreicht und wurden kurz herausgebeten, damit sich Prof und
Assistent beraten konnten.
Nach max. einer Minute wurden wir wieder hereingebeten und uns wurde das Ergebnis mitgeteilt:
Bei mir hats geklappt, mein Nachbar muss einen weiteren Anlauf nehmen.


Vorbereitung auf diese mündliche Prüfung:
Davon abgesehen, dass ich wusste wovon der Prof redet und schon die Antwort kannte als er noch
gefragt hat, habe ich die Folien mehrfach gelesen und behalten, das Script gelesen (zumindest
das was mir nicht völlig klar war) und für die Klausur hat man ja auch die Übungen gemacht.
Nichts weltbewegendes, man musste eben nur die Theorie kapiert haben.
