Webcam Diggs Cam


Seitenersetzung

Kapitel 7 - Seitenersetzung

Inhalt
  • Seitenersetzungsalgorithmen wie FiFo, LRU...
  • Working Sets als dynamische Variante
  • Problem der Seitengröße

Was sind Seitenersetzungsalgorithmen?

Falls eine Seite angefordert wird, aber kein Platz für deren Einlagerung im Speicher mehr vorhanden ist, so muss eine andere Seite entfernt werden. Aber welche? Es gibt nun verschiedene Ansätze für dieses Problem...

Welcher wäre der beste Algorithmus zur Seitenersetzung?

Dieser ist theoretisch gegeben, aber nicht umsetzbar. Die Seite die am spätesten erst wieder verwendet wird, wird ausgelagert. Da in einem Echtzeitsystem nie vorhersagbar ist, welcher Prozess wann wie lange aktiv sein wird, ist diese Strategie nicht umsetzbar... In einem deterministischen Modell wäre er aber durchaus denkbar, da dort jeder Schritt eindeutig definiert ist.

Wie arbeitet die Seitenersetzung mit Not-Recently-Used?

Jede Seite bekommt zwei Statusbits zugeordnet. R wird gesetzt, wenn die Seite lesend oder schreibend referenziert wurde. M wird gesetzt, falls die Seite verändert wird. Diese beiden Bits sind in jedem Seitentabelleneintrag enthalten und müssen bei jeder Seitenreferenzierung aktualisiert werden.
Die zwei Bit stellen vier Klassen dar, welche genutzt werden um einen Paging-Algorithmus zu realisieren.
  1. nicht referenzierte und nicht modifizierte Seite
  2. nicht referenzierte und modifizierte Seite
  3. referenzierte und nicht modifizierte Seite
  4. referenzierte und modifizierte Seite
LRU wählt zufällig eine Seite aus der kleinstnummerierten Klasse zum Entfernen aus.

Wie arbeitet die Seitenersetzung mit Fifo - First In First Out?

Es wird eine Liste geführt, welche alle Seiten enthält. Neue Seiten werden an das Ende der Liste angefügt. So ist die Liste nach dem Alter der Seiten sortiert. Der FiFo Paging-Algorithmus macht nichts weiter, als bei einem Seitenfehler die älteste Seite zu entfernen, also die Seite, die am Anfang der Liste steht.

Das Problem an Fifo ist, daß auch extrem häufig referenzierte Seiten ausgelagert werden. Um dies zu umgehen wird das oben schon erwähnte R (Referenziert) Bit verwendet, um jeder Seite eine zweite Chance zu geben, falls das R-Bit nicht null ist.

Wie arbeitet die Seitenersetzung mit Second Chance?

Arbeitet wie Fifo, nur wird beim Entfernen des Kopfes nachgeschaut, ob das R Bit null ist. Wurde die Seite nie referenziert, so wird sie entfernt, wie für FiFo üblich. Wurde sie aber referenziert, wird sie zum Ende der Liste verschoben, als wurde sie neu geladen. Das R-Bit wird dabei auf Null gesetzt. So wird gewährleistet, das häufig benutzte Seiten weniger oft als nicht referenzierte Seiten ausgelagert werden. Second Chance ist ein durchaus guter Paging Algorithmus mit einem Nachteil. Es müssen ständig konstante Seiten innerhalb der Liste von Anfang zum Ende verschoben werden. Diesen Nachteil bügelt der Uhr Algorithmus aus.

Wie arbeitet der Uhr-Seitenersetzungsalgorithmus?

Der Clock-Algorithmus arbeitet im Prinzip wie Second Chance, nur das anstelle einer FiFo Liste eine Ringliste verwendet wird. Dabei wird in einem Pointer (Zeiger der Uhr) auf den aktuellen Anfang der Liste gezeigt. Bei einer Second Chance muss nun nicht die Seite verschoben werden, es wird einfach der Zeiger auf das nächste Element referenziert.

Der Uhr Algorithmus ist also eine Implementation von Second Chance mit einer Ringliste.

Wie arbeitet die Seitenersetzung mit Least-Recently-Used?

Dieser Paging Algorithmus versucht den Optimalen zu approximieren, indem es versucht die Seiten zu entfernen, welche am Längsten nicht mehr benutzt wurden.

Die Implementation ist trotzdem nicht ganz einfach. Es müsste theoretisch eine Liste geführt werden, welche nach dem oben genannten Kriterium sortiert ist. Diese Liste müsste nach jeder Seiteneinlagerung neu Sortiert werden. Da dies eine zu komplexe Operation darstellt, muss dafür eine Softwarelösung approximiert werden, welche wesentlich schneller arbeitet.

Wie arbeitet die Seitenersetzung LRU mit Matrixumsetzung?

Es wird eine globale N x N Matrix für alle N Seiten geführt. Diese Matrix wird mit 0 initialisiert. Wird eine Seite x referenziert, so wird die Zeile x auf 1 gesetzt und danach die Spalte x auf 0. In jedem Moment ist die Zeile deren Summe am Kleinsten ist, die am wenigsten genutzte und die Zeile mit dem größten Wert, die am häufigsten genutzte Seite.

Wenn die notwendige Hardware (Matrix) nicht vorhanden ist, muss ein anderer effizienter Paging Algorithmus benutzt werden, der ohne jede Hardware auskommt.

Wie arbeitet die Seitenersetzung NFU - Not Frequently Used?

Bei jeder Uhrunterbrechung wird das Referenziert-Bit jeder Seite auf einen Softwarezähler, welcher mit null initialisiert wurde, hinzuaddiert. Es wird also versucht zu zählen, wie oft eine Seite referenziert wird. Das Problem von NFU ist es, dass Spitzen in der Referenzierung starke Auswirkungen auf den Zähler haben. So kann es vorkommen, daß eine Seite, welche anfangs stark genutzt wurde und später nicht mehr, einer zyklisch genutzten Seite nicht zur Auslagerung vorgezogen wird.

Eine Modifikation von NFU versucht LRU zu simulieren und diesen Fehler aufzuheben.

Wie arbeitet die Seitenersetzung mit Aging - LRU durch Softwareemulation?

  1. Vor der Addition es Referenziert-Bits werden alle Zähler um eins nach rechts geschoben

  2. das Refenziert-Bit wird auf das am weitesten links stehende Bit addiert
Bei einem Seitenfehler wird auch hier die Seite mit dem kleinsten Fehler entfernt. Durch das Rechtsverschieben verkleinert sich der Wert eines Zählers rapide und es wird verhindert, daß nur kurzeitig verwendete Seiten fälschlicherweiße als oft referenziert angesehen werden...


  • Not-Recently-Used (referenziert und modifiziert Bits - vier Zustände)
  • Least-Recently-Used (Seiten die lange nicht benutzt worden auslagern) und LRU mit Matrixumsetzung
  • FiFo, Second Chance, Uhr-Seitenersetzungsalgorithmus
  • Aging - LRU durch Softwareemulation
Merktabelle: Seitenersetzungsalgorithmen

Was sagt die Belady's Anomalie?

Eine Erhöhung der Seitenrahmen im Speicher, also mehr Speicher, heißt nicht zwangsläufig eine Verringerung von Seitenfehlern!

Was passiert beim Einsatz einer schnelleren Platte mit der Seitenfehlerrate?

Die Seitenfehlerrate steigt, da die Übertragungszeit für Seiten sinkt. Die Anzahl der gleichzeitig ausführbaren Prozesse steigt, da jeder Prozeß nun mit weniger Seitenrahmen - und einer höheren Fehlerrate - "leben" kann.

Was sind Working Sets - dynamisches Seitenaustauschverfahren?

Prozess Arbeitsbereiche werden eingesetzt und die Zahl der Seitenfehler weiter zu minimieren. Ein Prozess unterliegt auch einer Art Lokalität. Es werden im Mittel bestimmte Seiten häufiger und Andere sogut wie nie oder gar nicht zur Prozessabarbeitung benötigt. Man nennt dies Referenzielle Lokalität.

Mit Arbeitsbereichen wird versucht Informationen vor dem Laden eines Prozesses auszunutzen, um häufig verwendete Referenzen bevorzugt zu behandeln. Die Erfassung der für das Working Set notwendigen Daten wird auch über eine Art Aging Algorithmus umgesetzt. Jede Seite gehört zu einem bestimmten Working Set. Wird eine Seite länger als N Ticks nicht mehr benutzt, wird sie aus dem Working Set entfernt.

Die gewonnene Information des Working Sets kann verwendet werden, um den Clock Algorithmus zu verbessern. Und zwar wird nicht nur nach einer nichtreferenzierten Seite geschaut, sondern auch ob die Seite zu einem Working Set gehört oder nicht. Falls sie einem Arbeitsbereich angehört, wird sie übersprungen, egal ob im Moment referenziert oder nicht.

Welche Problematik tritt bei der Arbeitsmengenstrategie auf?

Das Hauptproblem ist die Seitenauslagerung durch Herausfallen von Seiten aus dem Working Set. Seiten können aus dem Working Set ausgelagert werden, ohne das ein Seitenfehler vorliegt und ohne das für diese Seite eine Neue eingelagert wurde. Die aktuelle Lokalität wird eben nur approximiert. Die Arbeitsmenge enthält möglicherweise auch Seiten die nur einmal benutzt wurden. Der Übergang zu einer neuen Lokalität erfolgt nur allmählich.

Welche Gefahr besteht bei Seitenaustauschverfahren?

Gefahr des Seitenflatterns (Trashing). Bei Überlastung mit zu vielen Prozessen die entweder zu viele Pagefaults produzieren und/oder zuwenig Seitenrahmen zur Verfügung haben, ist der Rechner weitgehend mit dem Ein-/und Auslagern von Seiten beschäftigt und kann an den eigentlichen Aufgaben der Prozesse kaum noch weiterarbeiten. Effektive CPU Auslastung sinkt durch viele Seitenfehler. Weitere Gefahr besteht dann durch zu einfach konstruierte Scheduler, die bei sinkender CPU-Auslastung mit einer höheren Prozessintensität reagieren. Page Damons können dem Abhilfe schaffen, weil sie Prozesse auslagern, wenn nicht mehr ausreichend Seitenrahmen im Speicher zur Verfügung stehen.

Was kann man gegen Trashing (Seitenflattern) tun?

Page Dämons benutzten, denn dadurch wird die Anzahl der gleichzeitig aktiven Prozesse verringert und jedem Prozeß stehen mehr Seitenrahmen zur Verfügung.

Wie wird die Seitengröße festgelegt?

Die Seitengröße ist normalerweise klein. Dies hat verschiedene Gründe sie klein zu halten, aber auch einen wichtigen Grund, die Größe nicht zu klein zu definieren. Im Mittel ist die letzte Seite eines Codestückes nur halb gefüllt, da logischerweise nicht jedes Code, Stack oder Datensegment genau in eine Seite passen kann oder sich so auf mehrere verteilt, daß kein freier Speicher mehr verbleibt. Des Weiteren muss beachtet werden, dass es auch viele kleine Segment gibt. Angenommen man legt eine Seitengröße von 32 KB fest, so werden bei 4 KB großen Segmenten stets 28 KB verschwendet. Andersherum benötigt man mit kleinen Seiten eine größere Seitentabelle, deren Anzahl proportional zur Seitengröße ist. Des Weiteren muss man einkalkulieren, daß das Einladen einer Seite von Platte eine langwierige Operation ist. Es ist trivial das das Einlagern von vier 8K-Seiten schneller ist, als das Einlagern von 64 512 Byte großen Seiten. Es muss also ein Mittelweg gefunden werden, welcher einen optimalen Nutzen aus den oben genannten Kriterien zieht.

Verschwendung = Prozessgröße * Seitentabelleneintragsgöße / Seitengröße + Seitengröße / 2

Die Nullstellenberechnung der ersten Ableitung in Abhängigkeit der Seitengröße ergibt :

Optimale Seitengröße = Wurzel aus 2 * Prozessgröße * Seitentabelleneintragsgöße
Printansicht Inhalt Anfang zurück vor
Kapitel 1Einleitung
Ebenen- oder Schichtenmodell, Aufgaben...
Kapitel 2Modelle
Schichtenmodell, Betriebsmittel, Instanzen...
Kapitel 3Aktivitäten
Token, Multitasking, Prozesse,Timesharing...
Kapitel 4Kritischer Abschnitt
Gegenseitiger Ausschluss,Peterson,Semaphore...
Kapitel 5Scheduling
Prozessorzuteilung, Prioritätsscheduling, RR...
Kapitel 6Speichermanagment
Freispeicherverwaltung, Segmentierung, Paging...
Kapitel 7Seitenersetzung
NRU, FiFo, Second Chance, LRU, NFU, Aging...
Kapitel 8Deadlocks
Bedingungen, Erkennung und Auflösung...
Kapitel 9Dateisysteme
Freispeicherverwaltung, Festplattenscheduling...
UNIX Codes
Unix Prozesse
Kommunikation
Quellen:
Andrew S. Tanenbaum
Computerarchitektur
Andrew S. Tanenbaum
Moderne Betriebssysteme
Petterson
Computer Architectur & Design
Christian Märtin
Rechnerarchitekturen
Kalfa
Skript und Vorlesung
Word Wide Web
Verschiedenste Seiten
Links:
Prozesse
FH-Bielefeld

login

last change 06.04.2008 16:28:48  © 2002 - 2005 Holger Kreissl