<< 8.1 Virtueller Adressraum | Index | 8.3 Demand-Paging >>


8.2 Strategische Aufgaben des Betriebssystems

  • Ladestrategien
    • Einzelseitenanforderung (demand paging)
      • Einlagerung dann, wenn sie gebraucht wird
    • Pre-Fetching von Seiten
      • Einlagern von Seiten im Voraus
      • Sinnvoll bei sehr kleinen Seitengrößen oder beim Erzeugen eines neuen Prozesses
  • Seitenersetzungsstrategie
  • Lastkontrollstrategie

Behandlung von Seitenfehlern

  1. Programm greift auf Speicherbereich zu, der nicht eingelagert ist: Seitenfehler (page-fault)
  2. MMU schreibt den Programmzähler auf den Stack, löst einen Interrupt und damit einen Sprung in den Kernel aus
  3. Betriebssystem sichert den Programm-Kontext, lokalisiert die virtuelle Adresse, die den Seitenfehler verursacht hat und überprüft diese auf Gültigkeit (und bricht Programm im Negativfall ab)
  4. Betriebssystem lokalisiert freien Seitenrahmen. Seitenersetzungsalgorithmus muss gestartet werden, falls keiner frei.
  5. Falls Seite im Seitenrahmen verändert wurde, wird sie zum Zurückschreiben geschedulet und ein anderer rechenbereiter Prozess wird vom CPU-Scheduler ausgewählt und ausgeführt.
  6. Seite wurde ggf. zurück geschreiben, nun kann Seite mit Seitenfehler von der Festplatte in den Rahmen eingelagert werden.
  7. Festplatte signalisiert (durch Interrupt), dass Seite eingelagert ist; Seitentabelle des Prozesses wird angepasst.
  8. Betriebssystem setzt den Befehl und Programmzähler des Prozesses wieder auf den Zustand vor dem Seitenfehler zurück und wählt ihn wieder zur Ausführung aus, (der zwischendurch gelaufene Prozess wird unterbrochen ???)
  9. Kontext des Prozesses wird wiederhergestellt und der Kernel-Modus verlassen.

Nach oben

Zuletzt geändert am 14 März 2005 20:01 Uhr von chrschn