Inhaltsverzeichnis

Betriebssystemtechnik 7,5 ECTS Pruefung 2022-08-10

Meta Information

Exam

Anwendungen sollen in Ring 3 laufen, um z.B. keine Interrupts sperren zu koennen.
Man will aber trotzdem bestimmte (eingeschraenkte) Operationen in Ring 0 zulassen, dafuer Systemaufrufe.
Zwei Arten, ueber Softwareinterrupt oder mit Spezialbefehl User ruft Stub auf, Stub sichert nicht-fluechtige Register, int 0x80 Interrupt springt in Handlerfunktion, der schaut sich den Systemaufrufvektor an, ruft dann das passende Skeleton auf, das macht die eigentliche Arbeit.
Bei uns (Uebung) ueber 6 fluechtige Register, ab dem 7. dann ueber den Stack.
War hier erst etwas verwirrt, Wosch wollte aber nur drauf raus, dass die Register, in die der User reinstopft, diesselben sein muessen, aus denen das BS rausliest. Standardisierung also.
Z.B. indem die Syscalls als Komplexbefehl implementiert werden, dann wird direkt aus dem Befehlsstrom des Users rausgelesen.
Man kann die Parameter auch auf dem Stack uebergeben. Dazu muss der halt fuers Betriebssystem sichtbar sein.
partiell privates Mehradressraummodell: Kernel- und Userspace in einem Adressraum (AR)
Vorteil: Kein Adressraumwechsel bei Syscalls
Nachteil: BS sieht eigentlich zu viel, Fehler im BS koennen leicht den Userspace kaputtmachen
total privates Adressraummodell: BS und Userprozesse haben eigene AR
Vorteil: Fuer boesartige Fehler muesste das BS jetzt 1) Falsch reinmappen, dann 2) Falsche Adresse berechnen und kaputtschreiben
Nachteil: Bei jedem Syscall gibts Adressraumwechsel
Schreiben auf CR3 flusht den TLB komplett.
Ja, man koennte einen getaggten TLB verwenden, dann muss nicht komplett geflusht werden.
Doppelter TLB in Hardware, einer fuers BS, einer fuer den aktuellen Userprozess. Dann muesste beim Syscall gar nichts mehr geflusht werden.
bei 64bit Adressen braucht man mehrstufiges Paging, weil ansonsten die Seitentabellen viel zu gross werden, obwohl die meistens nur spaerlich besetzt sind
Man koennte eine Segmentierungs-Paging Mischform verwenden: Als erstes hat man eine Segmenttabelle, die als Segmente dann Seitentabellen verwalten. Dadurch sind die Seitentabellen einstufig dann immer genau so gross, wie benoetigt
Hab hier etwas gebraucht, Wosch hat dann aber mit dem Tipp „In welche Richtung geht denn beim normalen Paging die Adressuebersetzung?“ geholfen. Invertierte Seitentabellen machens andersherum, da hat man dann immer nur so viele Eintraege wie gueltigen physischen Speicher.
Einadressraummodell. Kann man beim jetzigen StuBS auch implementieren, da (virtuelle) Adressen 64bit breit sind. Zur Isolation nutzt man dann den riesigen Adressraum + Randomisiertes Verteilen der Prozesse im AR
Vorteil: Sowohl Syscalls als auch IPC benoetigen keinen Adressraumwechsel mehr