Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » Verlauf (Übersicht)
no way to compare when less than two revisions
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
— | pruefungen:hauptstudium:ls4:bst-2019-08-19 [19.08.2019 10:07] (aktuell) – angelegt preisi | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | **Prüfer: | ||
+ | **Beisitzer: | ||
+ | **ECTS:** 7,5 | ||
+ | Die Atmosphäre war entspannt und Wosch hat selbst viel erklärt. Skizzieren musste ich nichts. | ||
+ | |||
+ | |||
+ | ====== Verlauf ====== | ||
+ | **P: In Stubsmi wurden (im Hinblick auf Adressraumtrennung) als allererstes Systemcalls eingebaut, warum?**\\ | ||
+ | S: Privilegientrennung -> privilegierte Befehle nur von Kernel ausführbar machen. Z.B. Adressraumwechsel. | ||
+ | |||
+ | **P: Ihr habt Syscalls auf zwei Arten implementiert, | ||
+ | S: Langsam: Interrupts/ | ||
+ | |||
+ | **P: Was war da der Unterschied? | ||
+ | S: Spezialbefehle sichern keinen Kontext. | ||
+ | |||
+ | **P: Wie können bei Syscalls die Parameter übergeben werdem?**\\ | ||
+ | S: Über Register, über Stack (Primitivbefehle) und im Befehlstrom kodiert (Komplexbefehl). Betriebsystem entscheidet über Registerreihenfolge | ||
+ | |||
+ | **P: Warum werden im Dispatcher (bei Parametern in Registern) alle Register gespeichert, | ||
+ | S: Um Kerneldaten nicht in den Userspace zu leaken. | ||
+ | |||
+ | **P: Braucht man das auch bei Parameterübergabe aufm Stack? Bzw welche Vorteile gibt es hier? **\\ | ||
+ | S: (hier hab ich etwas gebraucht bis ich darauf gekommen bin) Speicherzugriff, | ||
+ | |||
+ | **P: Warum macht man das eig nicht öfter? Immerhin wollten Betriebsystementwickler ja auch sysenter/ | ||
+ | S: Man muss bei komplett privaten Adressräumen den Stack im Kernel mappen -> kostet auch Zeit. | ||
+ | |||
+ | **P: Wie sieht so ein Komplexbefehl aus?**\\ | ||
+ | S: Befehlsatzebene: | ||
+ | |||
+ | **P: Welche Vor-/ | ||
+ | S: Komplexbefehle brauchen keine Register/ | ||
+ | |||
+ | **P: Was ist denn der Unterschied zwischen partiell und vollständig privaten Adressräumen? | ||
+ | S: Kernel im Userspace gemappt. Jedoch nur zugreifbar von Kernel (Ring 0). (mehr wollte er hier nicht) | ||
+ | |||
+ | **P: Wo stehen diese Unterschiede? | ||
+ | S: Im Seitendeskriptor wenn man Paging verwendet. | ||
+ | |||
+ | **P: Ok gut, aber braucht man das überhaupt? Also geht das nicht auch ohne dem " | ||
+ | S: (wurde hier etwas verwirrt weil er sich selbst auch verwirrt hat, aber im Endeffekt wollte er folgendes:) Ja, ohne kann man nämlich nicht zwischen Kernel- und Userspaceadressbereichen unterscheiden und unsere Privilegientrennung ist nutzlos. | ||
+ | |||
+ | **P: Was will man denn tun wenn man Syscalls bekommt die einen Pointer enthalten? Z.B. bei read/ | ||
+ | S: Man muss überprüfen, | ||
+ | |||
+ | **P: Warum? Ist das sonst iwie kritisch? Was würde passieren, wenn man das nicht tut?**\\ | ||
+ | S: Bei read: Man könnte eine Kerneladresse übergeben und hier das System die Pagetables gezielt kaputtschreiben lassen -> Zugriff auf alles.\\ Bei write: Man könnte Daten aus dem Kernel extrahieren. | ||
+ | |||
+ | |||
+ | **P: Es gibt auch noch Einadressraumsysteme. Was benötigen die? Wieso geht das mit mpstubs aus BS nicht?**\\ | ||
+ | S: mpstubs: 32bit-System -> Adressraum ist deutlich zu klein. Man benötigt ein ausreichend großen Adressraum (min. 64bit!), zufällige Verteilung von Speicher. | ||
+ | |||
+ | **P: Was bringt das dann?**\\ | ||
+ | S: Anwendungen finden sich gegenseitig nur sehr unwahrscheinlich. Security by Obscurity. Adressraum durchsuchen dauert zu lange! | ||
+ | |||
+ | **P: Braucht man für die Absicherung sonst noch was?**\\ | ||
+ | S: Hab erstmal was von MMU gesagt, da meinte er aber die braucht man sowieso (man hat ja weniger Speicher als der Adressraum groß ist). Hab dann Capabilities/ | ||
+ | |||
+ | |||
+ | Es wurde teilweise noch etwas mehr gefragt, aber ich kann mich leider nicht mehr daran erinnern. Note war sehr gut. |