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

Allgemein

Pruefer: Dr. Ing Volkmar Sieh
Beisitzer hat nur Protokoll geschrieben
Sehr ruhiges und angenehmes Klima. Es wurde nur auf Verstaendnis und nicht auf auswendig lernen gesetzt. Es wurde oft nachgefragt in richtung „warum machen/brauchen wir das“ und weitere Unterfragen an die ich mich aber nicht mehr genau erinnere. Ich hatte mehrere Haenger und bin auf einzelne Konzepte und Logikabfolgen erst durch Ueberlegen oder mit Hilfestellung gekommen. Note (1.3) fande ich deshalb ueberaus fair.

Betriebssystementwicklung

Wir haben ein Betriebssystem und am Anfang ist alles schwarz - und nu?
Habe angefangen mit bare-metal programmierung dann gesagt dass wir ja noch nichts haben bespielsweise auch keine Debugger - wurde unterbrochen

Denk mal noch gar nicht ans Debugging - was haben wir denn davor, wie unterscheidet sich das booten und programmieren?
Wir haben keinen dynamischen Binder → muessen alle Bibliotheken statisch einbinden.
libc u libstdc++ koennen wir auch nicht benutzen weil sie systemaufrufe nutzen.
Den Standardbinder koennen wir auch nicht nutzen, weil er sich auf virtuellen Speicher bezieht, den wir nicht haben….

Okay du meintest wir koennen viele Bibliotheken nicht nutzen. Welche koennen wir denn nutzen?

Welche Arten von Debugging gibt es denn, wenn wir noch keine Ausgabe haben?
LEDs, Hardwaredebugger, Softwaresimulatoren genannt → wurde oefters unterbrochen um die einzelnen Moeglichkeiten im Detail zu erklaeren

Was wenn wir Remote debuggen wollen?
Remote GDB wollte er genau erklaert haben ueber Serielle Schnittstelle. (Seriell hatten wir nicht implementiert, aber lohnt sich zumindest das Uebungsvideo dazu mal gesehen zu haben).
Man braucht einen Clientrechner mit geraetetreiber, serielles kabel und server auf dem unser programm laeuft. Uebertragung geht nur ascii zeichen, …

Genau. Was passiert denn jetzt wenn ich ein CTRL-C auf dem Client rechner druecke?
Habe den weg von CTRL-C ueber seriell zum entfertnen system erklaert. Dort wird ein interrupt ausgeloest. dann weg des interrupts erklaert und als Interruptbehandlung dann den Zustand des geraetes zurueckschicken an den client.

Interrupts

Wir haben Epilog-Prolog modell - erklaer mal
Angefangen, die drei Schichten zu erklaeren und was in den Schichten gemacht wird

Was wenn wir jetzt verschiedene Prioritaeten haben wie beispielsweise bei Motorola?
Einfuehren weiterer Ebenen. Nur die tieferen Ebenen koennen uns unterbrechen.

Genau und warum brauchen wir eigentlich diese Prolog-Ebene? Koennten wir nicht alles auf Epilogebene laufen lassen?
Hier habe ich mich bei den Antwort oft verrant und es sind viele Unterfragen von seiner Seite aus aufgekommen. Ich wurde auch sehr aufgeregt und kann den genauen Ablauf nicht mehr genau wieder geben. Was dabei aber noch aufkam:
Wenn Interrupts kommen obwohl sie disabled sind, werden beispielsweise die gedrueckten Keys in einen kleinen Buffer gespeichert. Hier wollte er wissen, woran wir wissen wie viele Tasten, denn jetzt abgespeichert worden sind →Anzahl wird in speziellen Registern vermerkt.

was sind shared interrupts
Erklaert zu viele Interrupts fuer Interrupt-Vektor-Tabelle. Funktioniert nur mit Level-triggerd-Interupts. Mehrere Interrupts teilen sich einen Vektor, in der Behandlungsfunktion werden dann die unterschiedlichen Geraete abgeklappert und geschaut welches eine Nachricht hat…

welche funktionen gibt es beim Prolog-Epilog-Modell?
enter relay leave
schreib mal eine leave methode auf
habe es notiert und sollte es vorstellen. Hatte einen Dreher in der Reihenfolge der letzten drei Zeilen. War dann auch kurz auf dem Schlauch und habe mit ihm zusammen die richtige Reihenfolge eroertert von
A: thread_on_epilog[CORE::id] = false;
B: setInterrupt(wasEsDavorWar);
C: bigKernelLock→unlock;
→ rhf A und C egal; B muss aber als letztes sein, da falls ein interrupt vor A passiert, sonst ein eintrag in die Queue gelegt wird, aber sonst nicht mehr auf Epilogebene sondern gleich Anwendungsebene gesprungen wird. C muss ebenfalls vor B kommen, da es sonst bei einem Interrupt zu verklemmungen kommen kann.