Betriebssysteme // Kapitel 9: Paging
Warum nutzt man Paging statt direkter physischer Adressierung?
Um Fragmentierung zu vermeiden und Speicher virtuell größer wirken zu lassen als er ist. Prozesse sehen einen linearen Adressraum, der im Hintergrund stückweise (in Pages) auf den RAM verteilt wird.
Was ist der TLB (Translation Lookaside Buffer) und warum ist er kritisch für die Performance?
Der TLB ist ein Hardware-Cache für die Adressübersetzung. Ohne ihn müsste die CPU bei JEDEM Speicherzugriff erst in der Page-Table (im langsamen RAM) nachschauen, wo die Daten liegen, was das System massiv verlangsamen würde.
Was passiert bei einem Page Fault?
Der Zugriff auf eine ausgelagerte oder nicht vorhandene Seite löst einen Interrupt (Trap) aus. Das Betriebssystem lädt die Seite von der Festplatte in den RAM, aktualisiert die Page-Table und startet den Befehl erneut.
Was ist 'Thrashing'?
Wenn das System fast nur noch mit dem Ein- und Auslagern von Seiten (Paging) beschäftigt ist und kaum noch Nutzdaten verarbeitet, weil der Arbeitsspeicher für die aktiven Prozesse nicht ausreicht.
Was ist ein 'Working Set'?
Die Menge an Speicherseiten, die ein Prozess in einem bestimmten Zeitintervall aktiv nutzt. Wenn der verfügbare RAM kleiner ist als das Working Set, tritt Thrashing auf.
Warum ist die Größe einer Page (z.B. 4 KiB) identisch mit der Größe eines Page-Frames im physischen RAM?
Damit die Abbildung einfach über die höherwertigen Bits der Adresse funktionieren kann. Der Offset innerhalb der Page bleibt unverändert, nur die Page-Nummer wird zur Frame-Nummer übersetzt.
Was ist der Nachteil einer mehrstufigen Page-Table (im Vergleich zu einer einstufigen), obwohl sie Speicher spart?
Der Zugriff wird langsamer, da für eine einzige logische Adresse mehrere Speicherzugriffe nötig sind (einer pro Stufe der Tabelle), bevor das eigentliche Datum geholt werden kann.
Wie funktioniert der 'Clock'-Algorithmus als Annäherung an LRU (Least Recently Used)?
Er nutzt ein 'Reference Bit'. Der Zeiger rotiert wie eine Uhr über die Pages. Ist das Bit 1, wird es auf 0 gesetzt und der Zeiger geht weiter (zweite Chance). Ist es 0, wird die Seite ersetzt.
Was passiert bei einem Kontextwechsel mit dem TLB (Translation Lookaside Buffer)?
Da die virtuellen Adressen des neuen Prozesses auf andere physische Adressen zeigen, muss der TLB entweder geleert (flushed) werden, oder die Einträge müssen mit einer Prozess-ID (ASID) getaggt sein, sonst greift der neue Prozess auf falschen Speicher zu.
Wie ermöglicht Paging 'Shared Memory' zwischen zwei Prozessen?
Zwei unterschiedliche Prozesse haben Einträge in ihren jeweiligen Page-Tables, die auf denselben physischen Frame im RAM zeigen. Die Berechtigungen (Read/Write) können dabei unterschiedlich sein.