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

Dies ist eine alte Version des Dokuments!


Mpstubs

Prüfung war eine Fernprüfung via BBB. Zum Schreiben stand ein Textfeld zur Verfügung (quasi wie das StuvePad) sowie ein Whiteboard (welches ich allerdings nicht genutzt habe).

Implementiere mir doch mal bei einer Semaphore p() und v() Habe die Semaphore in Pseudocode ähnlich zu MpStubs hingeschrieben, mit scheduler.block() sowie scheduler.resume(). Semaphore ist Warteraum und speichert in der Queue quasi alle wartenden Threads.

Wenn wir nicht schon in der Epilogebene sind, was müssen wir dann tun? z. B. Epilogebene betreten mit enter() vor den Funktionen und leave() danach. Musste dann nochmal genau erklären, warum ein scheduler.block() vor dem leave() kein Problem ist.

Erklär doch mal, wie so ein Kontextwechsel funktioniert context_switch (wohl ehemals toc_switch?) erklärt, welche Register ich warum sichere, was der Compiler generiert. Wie das mit der Rücksprungadresse auf dem Stack funktioniert. Wo speichere ich den Stackpointer.

Wo kann denn ein Thread unterbrochen werden durch Kontextwechsel? Auch nach scheduler.block()? Überall natürlich, und nach einigen Minuten Blockade hab ichs dann auch mit block() und leave() verstanden.

Wie funktioniert das denn mit diesem präemptiven Scheduling? Quasi Überleitung zu (Timer)Interrupts.

Und wenn der Timer jetzt tickt, was passiert dann? Weg vom LAPIC zu Interruptbehandlung in Software erklärt, und dass der dann ein scheduler.resume() ausführt.

Erklär doch mal Prolog/Epilog Sollte ja bekannt sein :)