Du befindest dich hier: FSI Informatik » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 4 » bst-2019-11-04 (Ü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-11-04 [21.11.2019 10:35] (aktuell) – neu angelegt, nach E-Mail an den FSI verteiler Stef_15 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | Pruefer: wosch | ||
+ | Beisitzer: Andreas | ||
+ | |||
+ | 4.11.19 | ||
+ | |||
+ | |||
+ | Zwei sehr ähnliche Prüfungen zusammengefasst in einem Protokoll. War alles sehr entspannt. | ||
+ | |||
+ | |||
+ | BST Prüfungsprotokoll | ||
+ | |||
+ | |||
+ | * Zuerst haben wir ja syscalls implementiert, | ||
+ | * Privilegienwechsel, | ||
+ | * Und wie schützt sich der Kern nun räumlich vor dem Benutzerprozess? | ||
+ | * Z.B. das mappen von Speicherbereichen. Bei Paging,gibt es dann ein Supervisor-bit im Seitendeskriptor, | ||
+ | * Wie wird das mapping organisiert? | ||
+ | * Ueber die Pagetable bzw. Das Verzeichnis. | ||
+ | * Aber das ist ja auch einfach nur irgendwelche Datenstrukturen. Die stehen ja auch einfach iwo im Speicher, wie wird das denn dann geschützt. | ||
+ | * Das setzen von cr0, bzw. Cr3, wo die Adresse des Pagetable directories steht. Sonst könnte der Nutzer sich ja z.B. alles in seinen Adressraum einmappen bzw. Paging deaktivieren. | ||
+ | * Genau, es gibt so geschützte Reister… (Anekdote….) | ||
+ | * Und was ist eigentlich mit den restlichen Ringen, wieso nutzt man die nicht? | ||
+ | * Weil Privilegienstufe wechseln Zeit kostet, hatte ja einen Grund warum man sysenter/ | ||
+ | * Genau, (… Anekdote zu Schutzringen) | ||
+ | * Ok, syscalls, wie lauft denn das nun ab. *Malt read(fd, buf, len).* | ||
+ | * Wir haben syscall ja z.B per Trap und Parameterübergabe per Register gemacht. Also: Parameter in regs, dann int, dann HW, HW legt User Kontext auf Kernel Kontext, dann Interrupt-Descriptor-Table, | ||
+ | * Das ist aber sehr umständlich geht das auch anders? | ||
+ | * Ja, ueber den Userstack. Prinzipiell kein Problem, wenn partiell privat, aber ermöglicht auch, das kaputt schießen des Userstacks. Und wenn voll privat, dann muss erstmal das ganze irgendwie eingeblendet werden. D.h. TLB muss geflusht werden, wodurch das nicht so performant ist. | ||
+ | * Aber das BS ist doch korrekt, wieso sollte denn da was kaputtgehen koennen? | ||
+ | * Naja, bei Linux z.B. gibt es ja ganz viele böse Treiber… | ||
+ | * (Prüfung 1) Was gibt es denn sonst noch für Arten die Parameterübergabe zu machen? | ||
+ | * Komplexbefehle, | ||
+ | * (Prüfung 1) Und Vor-/ | ||
+ | * Weniger Kopieren, und die Register müssen nicht leer gemacht werden. Aber der Kern muss dann halt auch erstmal die Parameter von dort holen können usw. | ||
+ | * (Pruefung 1) Und was ist bei sysenter/ | ||
+ | * Schneller ca. 2.5x, weil wengier Kontextsicherung und Interrupttabelle muss nicht durchsucht werden. | ||
+ | * (Pruefung 2) Wie laueft sysenter genau ab? | ||
+ | * Unterschiede zum Trap und MSR erwaehnen. | ||
+ | * Partiell privat, wie sieht das denn aus fuer User und Kernel? (malt Adressraum) | ||
+ | * Kernel ist immer mit eingeblendet, | ||
+ | * Welche Art von Adressraum? | ||
+ | * Musste logischen und virtuellen Adressraum erklaeren, und ob man partiell privat auch “nur” mit nem logischen Adressraum machen kann. Was an sich funktioniert, | ||
+ | * Dann ging es wieder zum read() und was man da sonst noch so machen muss. | ||
+ | * Buf und Len checken, ob auch wirklich gültige User-adresse (MMU simulieren, bits checken) | ||
+ | * Einadressraummodell, | ||
+ | * Prinzipiell für immer gültige Adressen, Trennung von Adressraumschutz und -verwaltung, | ||
+ | * Braucht man dann noch die MMU? | ||
+ | * Ja, weil so viel physischen Speicher wie z.B. 2^64 Byte hat man normalerweise nicht. | ||
+ | * (Pruefung 2) Vor- und Nachteil von Einadressraummodellen? |