Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Betriebssysteme » bs-2018-03-14   (Übersicht)

Was ist die Schwierigkeit bei der BS-Entwicklung? Keine Bibliotheken, Stack und Register müssen initialisiert werden ins Assembler bevor man Hochsprachencode verwenden kann. Man muss sich alles selbst bauen (Bildschirm ansprechen, printf) Debugging ist schwierig.

Du hast gerade Debugging erwähnt. Was gibt es denn da für Möglichkeiten? Die Folien zu dem Thema zusammengefasst.

Was ist ein Treiber und wofür braucht man den? Geräte ansteuern, bedienen, Powermanagement z.B., Schnittstelle für Anwendungen anbieten.

Wie sieht denn so eine Schnittstelle aus? Bei Linux: read, write, close, open, ioctrl.

Was ist denn ioctl? Eier legende Wollmilchsau; Kann alles was man mit den anderen Standardfunktionen nicht so leicht darstellen kann. Hier Beispiel: Bildschirm, Pixel schreiben. Noch erwähnt dass es bei Windows genauso funktioniert nur alles anders heißt.

Das war jetzt die Schnittstelle nach oben. Nach unten hin gibt es ja noch HW-Zugriffsfunktionen. Was ist denn das? Der Treiber muss ja zB Ports anschreiben, Speicher allozieren, Interrupts anmelden, etc. Das bietet ihm das Betriebssystem an um die Treiberentwicklung zu erleichtern.

Du hast gerade Interrupts erwähnt. Da gibt es ja so ein Ebenenmodell. Wie funktioniert das denn alles? Hab über Interruptebene, Anwendungsebene und Epilogebene erzählt.

Da gibt es ja dann die drei Funktionen leave, enter und relay. Was macht denn leave so? Hab erzählt dass es nach bedarf interrupts an und ausschaltet, Epiloge abarbeitet falls welche da sind und das Kernel Lock freigibt.

Da gibt es ja dann gewisse kritische Stellen. Was wäre das denn zB? Synchronisation des Zugriffs auf die Epilog-queue (muss hart synchronisiert werden), resetten des Kernelflags und freigeben des Kernellocks muss 'atomar' passieren. Wie funktioniert denn eine Semaphore? Mal doch mal bitte in Pseudocode auf. Konzeptionell hingemalt und erklärt.

Da fehlt noch was. Das muss natürlich in der Epilogebene synchronisiert werden. Man muss da noch enter und leave hinmachen. Das musste ich dann dazumalen. In dem Zusammenhang war wichtig, dass zB block intern auch irgendwo ein leave und enter aufruft.

Semaphoren sind ja nun umständlich. Man muss an den passenden Stellen p() und v() aufrufen. Was gibt es denn da noch für Konzepte? Hab was erzählt über Monitore und Pfade

Wie könnte man zB eine Datenbank mit einem Monitor umsetzen? Leser/Schreiber Problem erwähnt. eigene Klasse die kein Monitor ist für read und write (weil sonst nur ein reader möglich) Monitor: startWrite endWrite startRead endRead

Was ist ein active Objekt? Wie kann ich damit das Leser/Schreiber Problem umsetzen? Erst mal allgemeine funktionsweise: Client Server Konzept, whileschleife die zu beginn eine message received, diese in einem switch case abarbeitet und am schluss mit einem reply acknowledged. dann braucht man read und write funktions, wo man intern forked um mehr als einen Prozess abarbeiten zu können.

Was ist besser: Monitor oder aktive Objekt? Beides gleichwertig. Blockiert beides nur da wo es nötig ist.

Was ist besser: shared memory oder nachtichtenbasierte Kommunikation? Beides gleichwertig, je nachdem was man gerade hat. Kommunikation zwischen 2 Rechnern besser mit Nachrichten Kommunikation zwischen 2 Fäden besser mit shared Memory Außerdem: Dualität der beiden Konzepte; beides gleich mächtig

Allgemein: Der Herr Sieh war sehr freundlich und ruhig. War eine sehr entspannte Athmosphäre. Ich war etwas nervös und habe mich bei der Semaphore und anderen Details mal verhaspelt, und bin nicht auf alles sofort gekommen, aber der Note hats nicht geschadet. Allgemein habe ich einfach alles erzählt was mir so zu der Frage einfiel und was damit zu tun hatte. Ich glaube es war gut viel von selbst zu sagen. Kann die Prüfung nur empfehlen:D