Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Allgemein   (Übersicht)

Allgemein

Pruefer: Volkmar Sieh
Note: 1.7

Klausurablauf

Was ist den kooperatives Scheduling

Du hast resume erwähnt, was passiert denn bei dem resume genau?

Wie sieht denn dann genau das context_switch aus?

Und warum sichert man nur die non-scratch register?

Woher weiss ein Scheduler denn welchen Faden er als nächstes nehmen soll?

Welche Kriterien gibt es denn dann so?

Es gibt ja beim scheduling sowas wie Boost, was ist das denn?

Woher weiss der scheduler denn ob ein Prozess interaktiv ist?
(loesung semaphoren)
Wie funktioniert denn eine Semaphore?

Du hast ja ein Blatt papier vor dir, schreib doch mal die beiden Funktionen p und v auf So sorgt das aber noch für race conditions, wie loesst man das problem?

Wenn man die Semaphore aber so in der Epilogebene aufruft bekommt man aber Probleme
(hier gabs einiges an hin und her weil ich nicht so recht verstanden hab auf was er hinaus wollte, die Fragen waren wohl eigentlich so gestellt dass sie mich auf passives Warten hinführen sollten, aber irgendwie haben mich die Fragen stellenweise ziemlich verwirrt.)

Wie sieht die Semaphore dann mit passivem Warten aus?

Es gibt ja verschiedene Möglichkeiten Semaphoren zu erweitern, welche sind das denn?

Wie könnte man das grob implementieren bei einer Semaphore nur eine gewisse zeit zu warten?

Wo könnte man denn so eine Semaphore gebrauchen?

Was bringt die Erweiterung wenn wir doch auch einfach x mal p() oder v() aufrufen könnten?

Wir haben in der Vorlesung noch eine 3. Erweiterung besprochen, welche war das denn?

Wo könnte man diese verwenden und welche Probleme hätte man wenn man hier wieder einzelne Semaphoren nimmt und diese aufruft?

Bei solchen Semaphoren kann man ja einiges falsch machen, welche Alternative gibt es denn?

Du hast ja gesagt dass bei den Monitoren dann nur eine Methode gleichzeitig laufen kann, das wird ja dann vermutlich mit einer Art lock behandelt. Wie ist sowas denn dann aufgebaut?
grob.
(hier war ich wieder ziemlich verwirrt worauf er hinaus wollte, nach ein bisschen hin und her ging es darum dass man hier wieder passiv warten muss um das lock nicht einfach im Monitor zu belegen)

Okay, wie sieht dass dann hier mit dem Freigeben von dem Lock aus?
(bin mir nicht mehr sicher wie die Frage gestellt war, aber ich habe hier auch nicht ganz verstanden worauf er hinaus wollte und hab noch einmal nachgefragt)

Angenommen wir wollen Leserechte Anfordern aber es gibt noch einen Schreiber, dann würden wir ja passiv warten. Wie geben wir dann das Lock frei?
(stand hier ziemlich auf dem Schlauch)

Also müssen wir das lock dann vor dem warten, atomic mit dem warten oder nach dem warten abgeben
~ atomic mit dem warten

Warum?
~ vorher lost wakeup, danach … (hab hier ein bisschen überlegt, die Zeit war aber dann auch schon rum (zum glück)) Die Antwort die er haben wollte war dass wenn man schläft ja das lock gar nicht mehr abgeben kann und den monitor weiter sperrt.

Ich war hiervon auch wieder ein wenig verwirrt, weil wir ja mit passiven Warten einen neuen Thread schedulen der je nach implementierung des Monitors das lock wieder freigibt (siehe guard), war mir allerdings bei der Antwort einfach nicht sicher weil ich nicht mit einer art IMplementierung zu Monitoren gerechnet hatte und auch wirklich keine Ahnung hatte wie das konkret implementiert werden soll.

Abschliessende Worte

Sollte so glaub groesstenteils so sein wies in der Prüfung war, bin mir bei manchen sachen nicht ganz sicher wie ers konkret gefragt hat, aber paar sachen haben mich auf jeden fall von der Fragestellung her verwirrt Im späteren Gespräch mit dem Prüfer hat sich herausgestellt dass ich auf die semaphorenimplementierung keinen Punktabzug bekommen hätte, hätte ich sie einfach direkt so aufgeschrieben wie sie im Stubs implementiert ist