Virtuelle Speicherverwaltung

Transcription

Virtuelle Speicherverwaltung
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Speicherverwaltung
Die Speicherverwaltung ist derjenige Teil eines Betriebssystems, der einen effizienten und
komfortablen Zugriff auf den physikalischen Arbeitsspeicher eines Computer ermöglicht. Je
nach Einsatzbereich des Computers werden unterschiedliche Speicherverwaltungsmechanismen verwendet.
Direkte Speicherverwaltung
In vielen Embedded Systems wird nur ein Prozess, also nur ein Programm zur gleichen Zeit
ausgeführt. Dieser Prozess hat dann exklusiven Zugriff auf den physikalischen Arbeitsspeicher und kann diesen direkt adressieren. Eine Verwaltung des Speichers ist in diesen Computern trivial und besteht darin die angeforderte Adresse über den Adressbus zugänglich zu
machen.
Segmentierung
In Systemen mit wenig Arbeitsspeicher aber mehreren aktiven Prozessen wird das System
der Segmentierung angewendet. Dabei wird der Arbeitsspeicher in feste Segmente eingeteilt.
Alle Prozesse haben Kenntnis über die feste Einteilung. Die Speicherverwaltung kann nun
ganze Segmente, wie z.B. das Programmsegment, wenn ein Prozess gerade nicht rechnend
ist, auf langsameren z.B. Festplattenspeicher auslagern. Diese Art der Speicherverwaltung
war in den Anfängen der Entwicklung von Computern weit verbreitet. Das Betriebssystem
MS-DOS nutzte anfangs ausschließlich die Segmentierung.
Virtuelle Speicherverwaltung
Die beiden beschriebenen Varianten haben die Einschränkung, dass die aktiven Prozesse
selbst niemals mehr Speicherplatz belegen dürfen als physikalisch zur Verfügung steht. Um
dieses durch immer komplexere Programme entstandene Problem zu lösen, wurde das Prinzip der virtuellen Speicherverwaltung entwickelt. Dabei verwenden Prozesse nur noch virtuelle und keine physikalischen Adressen mehr. Die Umsetzung der virtuellen Adresse in eine
physikalische Adresse übernimmt die Memory Management Unit. Die virtuelle Speicherverwaltung ist heute in beinahe jedem modernen Betriebssystem verwirklicht.
Quelle: www.wikipedia.de
Seite 1
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Virtueller Adressraum
Der virtuelle Adressraum oder auch virtuelle Speicher bezeichnet in der Computertechnik
den Adressraum, der einem Prozess für Daten als auch für das Programm selbst vom Betriebssystem zur Verfügung gestellt wird.
Nur die Betriebssysteme, die eine virtuelle Speicherverwaltung verwenden, können einen virtuellen Adressraum generieren und dadurch Speicherseiten, die physikalisch nicht zusammenhängend sind, für den Programmierer bzw. das Programm als logisch zusammenhängenden Speicherbereich abbilden. Die virtuelle Speicherverwaltung ermöglicht weiterhin die
Implementierung von Speicherschutzmechanismen.
So erlauben beispielsweise Linux und Windows bis zu 4 Gigabyte große Programme und die
Verarbeitung eines ebenso großen Speicherbereichs, obwohl nur 256 Megabyte physikalischer Arbeitsspeicher zur Verfügung steht. Die Umsetzung der verwendeten virtuellen Adressen auf die physikalische Adresse wird durch die Memory Management Unit des Betriebssystem erreicht. Prozesse können somit Adressen verwenden, die theoretisch auf dem
Rechner nicht existieren können.
Die Größe des Virtuellen Adressraums kann aus der Definition der Virtuellen Adresse berechnet werden. So ist beispielsweise in einer IA-32-Architektur eine Virtuelle Adresse 32 Bit
breit, je 10 Bit für eine zweistufige Seitentabelle und 12 Bit für das Offset. Somit lassen sich
210 · 210 · 212 Byte adressieren. Das entspricht 232 Byte, also 4 Gigabyte.
Quelle: www.wikipedia.de
Seite 2
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Paging
Als Paging (im engl. abgeleitet von page (dt. Speicherseite)) bezeichnet man eine Methode
der Hauptspeicherverwaltung durch Betriebssysteme. Dabei wird häufig aus Effizienzgründen die so genannte Memory Management Unit des Prozessors eingesetzt, sofern der Prozessor eine solche bereitstellt.
Sehr häufig wird der Begriff Paging im deutschen Sprachraum allerdings synonym mit der
gesamten virtuellen Speicherverwaltung gebraucht. Dieser Sprachgebrauch ist jedoch unpräzise, da das Paging nur einen - wenn auch zentralen - Aspekt der virtuellen Speicherverwaltung ausmacht.
Zu unterscheiden ist das Paging jedoch deutlich vom Swapping, da letzteres nicht nur auf
Speicherseiten, sondern auf ganze Segmente des Speichers ausgeführt wird und somit Teil
der Segmentierung ist.
Zweck des Pagings
Das wesentliche Problem, das durch Paging gelöst wird, ist das Problem der externen Fragmentierung. Dieses Problem ist das folgende: Jedem Prozess wird vom Betriebssystem ein
Adressraum zugeordnet. Würde es sich hierbei um einen zusammenhängenden Hauptspeicherbereich handeln, so entstünden im Lauf der Zeit zwischen den Adressräumen der Prozesse Lücken, da neue Prozesse zumeist nicht dieselbe Speichermenge benötigen wie beendete Prozesse und diese somit nicht eins zu eins ersetzen können. Eine regelmäßige
Neuordnung des Speichers (Kompaktifizierung genannt) wäre zwar möglich, aber sehr aufwändig. In erster Näherung kann man das Problem lindern, indem man die Prozesse segmentiert, d.h. nicht einen einzigen zusammenhängenden Adressraum, sondern mehrere kleinere Segmente an die Prozesse vergibt. Dies würde die externe Fragmentierung jedoch nicht
vollständig beseitigen. Das Paging hingegen beseitigt die externe Fragmentierung gänzlich.
Funktionsweise
Beim Paging werden logischer Speicher
und physikalischer Speicher unterschieden.
Der logische Speicher beschreibt die
Organisation des Hauptspeichers aus
Programmsicht. Der physikalische Speicher
ist durch den verfügbaren Hauptspeicher
sowie ggf. zusätzlichen ausgelagerten
Speicher (z.B. in Form einer
Auslagerungsdatei) gegeben. Man unterteilt
den logischen Speicher in gleich große
Stücke, die man als Seiten (pages) bezeichnet. Auch der physikalische Speicher
ist derart unterteilt - hier nennt man die
einzelnen Stücke Seitenrahmen (frames).
Eine Seite passt genau in einen Seitenrahmen. Um Seiten und Seitenrahmen einander zuordnen zu können, wird eine Seitentabelle verwendet. Dementsprechend existiert für jeden
Prozess eine derartige Seitentabelle. Nun wird klar, warum hier keine externe FragmentieQuelle: www.wikipedia.de
Seite 3
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
rung im Hauptspeicher mehr auftreten kann: Zwar ist der logische Speicher weiterhin zusammenhängend, im physischen Speicher können die benachbarten Seiten jedoch in weit
von einander entfernt liegenden Seitenrahmen abgelegt werden. Die Reihenfolge der Seitenrahmen ist damit beliebig, und somit macht es auch keinen Sinn mehr, von Lücken und damit
von externer Fragmentierung zu sprechen.
Da die Zugriffszeit auf einzelne physische Speicherzellen immer identisch ist, müssen keine
Effizienzeinbußen in Kauf genommen werden. Da bei diesem Verfahren der Zugriff auf die
Seitentabelle sehr häufig ist, verwenden moderne Prozessoren zu diesem Zweck in der Regel spezielle Hardware-Register, die sogenannte Memory Management Unit. (Dieser Artikel
liefert Ihnen zusätzliche detaillierte Informationen über die Verwendung der Seitentabelle.)
Adressberechnung beim Paging
In der Terminologie der
obigen Grafik entspricht
eine logische
Speicheradresse der
virtuellen Adresse. Der
physische Speicher heißt
hier reale Adresse. Man
entnimmt der Grafik, dass
sich die physische
Speicheradresse sehr
einfach aus zwei Teilen
berechnet: Der erste Teil
wird der virtuellen Adresse
entnommen, der zweite Teil
der Seitentabelle. Dabei
handelt es sich um zwei
Binärzahlen. Werden diese
konkateniert, so ergibt sich
eine neue Binärzahl, die genau die physische Speicheradresse ist. Derartige Berechnungen
werden von der Memory Management Unit ausgeführt.
Demand Paging
Wie oben schon erwähnt, wird der Paging-Mechanismus auch zur virtuellen Speicherverwaltung ausgenutzt. Erfolgt nun ein Zugriff auf eine Speicherseite, die nicht im Hauptspeicher,
sondern im Auslagerungsspeicher abliegt, so wird zunächst ein Seitenfehler ausgelöst. Dieser führt zu einem Software-Interrupt und schließlich zum Laden der Seite in den Hauptspeicher. Diese Technik bezeichnet man als Demand Paging.
Quelle: www.wikipedia.de
Seite 4
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Kriterien für Seitenersetzung
Dafür werden verschiedene Kriterien zur Bewertung herangezogen:
•
Die Zugehörigkeit der Speicherseite zum aktiven Prozess
•
Der letzte Zugriff auf die Speicherseite
•
Die Unversehrtheit der Speicherseite, weil eine unveränderte Seite nicht auf den Hintergrundspeicher zurückgeschrieben werden muss, sondern direkt durch die neue angeforderte Seite überschrieben werden kann.
Seitenersetzungsstrategien
Folgende Strategien werden verwendet:
•
First In - First Out
•
Least recently used: Die am längsten nicht genutzte Seite wird ausgelagert.
•
Not recently Used: Seiten, die innerhalb eines Zeitintervalls nicht benutzt und nicht
modifziert wurden, werden bevorzugt ausgelagert. Danach Seiten, die entweder nicht
benutzt oder modifiziert wurden und als letzte Gruppe erst Speicherseiten, die modifiziert und benutzt wurden.
•
Not frequently Used: Seitenzugriffe werden mit dem zeitlichen Abstand zur aktuellen
Anfrage korreliert und so ein Wert ermittelt.
Quelle: www.wikipedia.de
Seite 5
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Memory Management Unit
Bei der Memory Management Unit (MMU) handelt es sich um eine Funktionseinheit einer
CPU, die zum Zugriff auf den Arbeitsspeicher oder sonstige Hardware das Übersetzen von
Virtuellen Adressen in physikalische Adressen bewerkstelligt. Sie ermöglicht damit den
Zugriff auf den gesamten Virtuellen Adressraum, den ein Betriebssystem mit Hilfe der Virtuellen Speicherverwaltung zur Verfügung stellt.
MMUs sind standardmäßig in allen modernen Desktop- und Server-CPUs vorhanden. Anwendungen für eingebettete Prozessoren und Microcontroller können meist auf eine Adressübersetzung verzichten, dementsprechend beinhaltet der größte Teil der Prozessoren für
diesen Einsatzbereich keine MMU.
In manchen älteren Systemen, die Bank Switching verwenden, so zum Beispiel einigen
Heimcomputern, existiert eine MMU als eigenständiger Chip außerhalb der CPU.
Funktionsprinzip
Jede durch einen Prozess angeforderte Virtuelle Adresse wird zuerst durch die Memory Management Unit in eine physikalische Adresse umgesetzt, bevor sie auf den Adressbus geschrieben wird.
Man unterscheidet die möglichen Arten der Adressübersetzung (engl. Adress translation)
nach der Art der verwendeten Seitentabellen.
Einstufige Seitentabelle
Die Adressumsetzung mit Hilfe
einer einstufigen Seitentabelle
geschieht durch Interpretation
der n höherwertigen Bits einer
Virtuellen Adresse als
Seitennummer der
angeforderten Speicherseite
und der Verwendung der m
niederwertigen Bits als Offset.
Die Seitennummer bestimmt
dabei ausgehend von der
Basisadresse der Seitentabelle,
welche in einem Register der
Memory Management Unit
gehalten wird, denjenigen
Eintrag in der Seitentabelle,
aus dem die Basisadresse der
nötigen realen Speicherseite abzulesen ist. Des Weiteren beinhaltet die Seitentabelle auf den
höherwertigen Bits Statusinformationen über die Speicherseite, die beispielsweise Auskunft
geben, ob sich die Speicherseite im RAM befindet oder ob sie seit dem letzten Zugriff verändert wurde. Die aus der Seitentabelle ausgelesene Basisadresse der realen Speicherseite
zusammen mit dem unveränderten Offset ergeben die reale Adresse.
Quelle: www.wikipedia.de
Seite 6
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Mehrstufige Seitentabelle
Die Adressumsetzung mit
Hilfe einer k-stufigen
Seitentabelle geschieht
durch Aufteilung einer
Virtuellen Adresse in k*n
höherwertige Bits als
Seitentabellenverweise
und m niederwertige Bits
als Offset. Mit dem k-ten
Verweis in der Virtuellen
Adresse wird aus der kten Seitentabelle die
Basisadresse der
Seitentabelle der Stufe
k+1 ausgelesen. Die letzte
Stufe enthält dann den
tatsächlichen Verweis auf
die reale Basisadresse.
Die aus der letzten Stufe der Seitentabellen ausgelesene Basisadresse der realen Speicherseite zusammen mit dem unveränderten Offset ergeben die reale Adresse.
Invertierte Seitentabelle
Insbesondere einstufige, aber auch mehrstufige, Seitentabellen benötigen sehr viel Speicherplatz, nur um die Seitentabelle im Speicher abzulegen. Mit dem Ansatz der invertierten
Seitentabelle beseitigt man dies Problem. Es wird in der Seitentabelle nicht mehr ein Eintrag
pro virtueller Seite angelegt, sondern nur noch je ein Eintrag pro realer Speicherseite. Der
Zugriff auf diese Tabelle benötigt nun jedoch einen Suchvorgang, um die virtuelle Adresse in
der gesamten Seitentabelle zu finden und die zugehörige reale Adresse auszulesen. Häufig
wird das Suchen in der invertierten Seitentabelle durch das Vorschalten einer Hashtabelle
beschleunigt.
Seitenfehler
Bei jedem Verfahren kann es natürlich passieren, dass die angeforderte Virtuelle Adresse
sich in einer nicht im Arbeitsspeicher befindlichen Speicherseite befindet, sondern erst durch
Paging vom Hintergrundspeicher in den Arbeitsspeicher geladen werden muss. Die Memory
Management Unit signalisiert dies, sobald sie in den Statusbits einer Seitentabelle einen Ungültig Eintrag vorfindet, indem sie einen so genannten Seitenfehler auslöst.
in Seitenfehler (engl. page fault) tritt bei Betriebssystemen mit virtueller Speicherverwaltung
und Paging auf, wenn ein Programm auf einen Speicherbereich zugreift, der sich gerade
nicht im Hauptspeicher befindet, sondern beispielsweise auf die Festplatte ausgelagert wurde. Das Betriebssystem sorgt nun dafür, dass der angeforderte Speicherbereich wieder in
den Hauptspeicher geladen wird, damit das Programm darauf zugreifen kann. Ein Seitenfehler ist daher kein Fehler im eigentlichen Sinne. Der Anwender spürt von diesem Vorgang
nichts, maximal eine Verlangsamung der Geschwindigkeit, da das Laden der Seite einen
kurzen Augenblick benötigt.
Quelle: www.wikipedia.de
Seite 7
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Aufgaben
1. Was versteht man unter dem Begriff „Fragmentierung“?
2. Erläutern Sie mit eigenen Worten die Notwendigkeit einer virtuellen Speicherverwaltung.
3. Was bedeutet die Abkürzung MMU? Welche Hauptaufgabe hat sie (Stichpunkte)?
4. Aus welchen Teilen setzt sich der physikalische Speicher beim Paging zusammen?
5. Erklären Sie den grundsätzlichen Vorgang wie beim Paging der Zugriff eines Programms auf den physikalischen Speicher abläuft.
6. Was verbirgt sich hinter dem „demand paging“?
7. Beim Paging können verschiedene Seitenersetzungsstrategien zum Einsatz kommen.
Recherchieren Sie was man unter einer „First In – First Out“ Strategie versteht.
8. Überlegen Sie, welchen Vorteil die Verwendung von virtuellen und physikalischen Adressen in Bezug auf die Länge der jeweiligen Adressen haben kann.
9. Geben Sie an welche Informationen in einer Seitentabelle abgelegt sind.
10. Welchen Vorteil hat eine mehrstufige Seitentabelle gegenüber einer einstufigen?
11. Gegeben sei folgende virtuelle Adresse und nebenstehende, zugehörige Seitentabelle.
Virtuelle Adresse:
0100110
Bestimmen Sie die angesprochene physikalische Adresse.
Quelle: www.wikipedia.de
Seite 8
1
1
1
0
0
0
1
1
0
1
1
0
1
0
1
1
0
0
1
0
1
1
1
1
1
0
0
1
0
0
0
0
0
1
0
0
1
1
1
0
0
0
1
1
0
0
0
1
1
1
0
1
1
1
1
0
1
0
0
0
0
0
0
0
0
1
0
1
1
1
1
0
1
1
1
0
1
0
0
1
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
Lösung
1. Was versteht man unter dem Begriff „Fragmentierung“?
In modernen Betriebssystemen können mehrere Prozesse gleichzeitig laufen. Jeder Prozess benötigt für das eigentliche Programm und die Daten eine bestimmte
Menge Arbeitsspeicher.
Ist der gesamte Arbeitsspeicher lückenlos belegt und ein Prozess „A“ wird beendet, so wird auch dessen Anteil am Arbeitsspeicher frei.
Startet nun der nächste Prozess „B“ ist nicht sicher gestellt dass der von ihm angeforderte Arbeitsspeicher exakt so groß ist wie die durch Prozess A freigewordene Lücke.
Benötigt „B“ weniger Speicher, so bleiben im Arbeitsspeicher Lücken ungenutzt.
Es entstehen Fragmente.
2. Erläutern Sie mit eigenen Worten die Notwendigkeit einer virtuellen Speicherverwaltung.
Wird von einem Prozess „B“ weniger Speicher angefordert als ein vorher laufender Prozess „A“ freigegeben hat so entstehen Fragmente. Wird von „B“ dagegen
mehr Speicher angefordert als zur Verfügung steht, so kann der neue Prozess
nicht starten.
Mit Hilfe von „Paging“ als Teil der virtuellen Speicherverwaltung kann dieses
Problem umgangen werden indem man Prozesse nur mehr auf virtuelle Adressen
zugreifen lässt die dann erst in die eigentlichen physikalischen Adressen umgesetzt werden.
3. Was bedeutet die Abkürzung MMU? Welche Hauptaufgabe hat sie (Stichpunkte)?
MMU = Memory Management Unit
Teil der CPU; Zuständig für Umsetzung von virtuellen in physikalische Adressen.
4. Aus welchen Teilen setzt sich der physikalische Speicher beim Paging zusammen?
Physik. Speicher = Hauptspeicher + ausgelagerter Speicher (z. B. Auslagerungsdatei)
5. Erklären Sie den grundsätzlichen Vorgang wie beim Paging der Zugriff eines Programms auf den physikalischen Speicher abläuft.
Ein Prozess „sieht“ nur den ihm zugewiesenen logischen Speicher. Auf dessen Adressen greift er zu. Nun wird – in der Regel in der MMU – die logische Adresse
mit Hilfe einer Seitentabelle in eine physikalische übersetzt und die Daten geschrieben / gelesen.
Quelle: www.wikipedia.de
Seite 9
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
6. Was verbirgt sich hinter dem „demand paging“?
Wird über eine virtuelle Adresse und die zugehörige Seitentabelle auf Daten zugegriffen die sich nicht im Hauptspeicher sondern in einer Auslagerungsdatei befinden so müssen die entsprechenden Daten erst in den Arbeitsspeicher geladen
werden. Dieser Vorgang wird als „demand paging“ bezeichnet.
7. Beim Paging können verschiedene Seitenersetzungsstrategien zum Einsatz kommen.
Recherchieren Sie was man unter einer „First In – First Out“ Strategie versteht.
Die zuerst in den Arbeitsspeicher geschriebenen Daten werden – sobald der
Hauptspeicher voll ist – auch als erste ausgelagert.
8. Überlegen Sie, welchen Vorteil die Verwendung von virtuellen und physikalischen Adressen in Bezug auf die Länge der jeweiligen Adressen haben kann.
Mit Hilfe von relativ kurzen virtuellen Adressen können sehr lange physikalische
Adressen angesprochen werden. Voraussetzung dafür ist lediglich dass in der Seitentabelle mehr Platz für die Basisadresse vorgesehen ist als in der virtuellen
Adresse für die Seitennummer zur Verfügung steht.
9. Geben Sie an welche Informationen in einer Seitentabelle abgelegt sind.
In den höherwertigen Bits stehen Statusinformationen (z. B. die Speicherseite
befindet sich im RAM / wurde ausgelagert oder ob die Speicherseite verändert
wurde) in den niederwertigen Bits befindet sich die Basisadresse der physikalischen Adresse.
10. Welchen Vorteil hat eine mehrstufige Seitentabelle gegenüber einer einstufigen?
Greift ein Prozess auf eine virtuelle Adresse zu, so muss diese Adresse in einer
einstufigen Tabelle aus allen möglichen Einträgen herausgesucht werden.
Beispiel:
Virtuelle Adresse = 20 Bit Seitennummer + 12 Bit Offset
--> Es müssen in der Seitentabelle 220 = 1.048.576
Adressen durchsucht werden
Findet der gleiche Zugriff jedoch bei einem mehrstufigen Verfahren statt, so ist
die Suche nach der gewünschten Adresse aufgeteilt, so dass sie schneller erfolgen kann.
Beispiel:
Virt. Adresse = 10 Bit Seitentab. + 10 Bit Seitennr. + 12 Bit Offset
--> In der 1. Stufe sind 210 = 1024 Einträge zu durchsuchen.
In der 2. Stufe sind 210 = 1024 Einträge zu durchsuchen.
--> Macht zusammen 2048 zu durchsuchende Einträge.
--> Das sind nur 0,19% des obigen Aufwands!
Quelle: www.wikipedia.de
Seite 10
IT-Systeme
Speicher – Virtuelle Speicherverwaltung
11. Gegeben sei folgende virtuelle Adresse und nebenstehende, zugehörige Seitentabelle.
Virtuelle Adresse:
0100110
Bestimmen Sie die angesprochene physikalische Adresse.
1
1
1
0
0
0
1
1
0
1
1
0
1
0
1
1
0
0
1
0
1
1
1
1
1
0
0
1
0
0
0
0
0
1
0
0
1
1
1
0
0
0
1
1
0
0
0
1
1
1
0
1
1
1
1
0
1
0
0
0
0
0
0
0
0
1
0
1
1
1
1
0
Die Seitentabelle enthält acht Zeilen --> die ersten
drei Bit (0 1 0 ) der virtuellen Adresse bestimmen die Seitennummer, die restlichen vier Bit (0 1 1 0) geben den Offset an.
--> 0 1 0Dual = 2Dezimal -->
in der dritten Zeile (Zeilen werden bei Null beginnend durchnummeriert!) der Seitentabelle steht
die Basisadresse
--> Physikalische Adresse = 1 1 1 0 0 1 0 0 0 1 0 1 1 0
Basisadresse
Quelle: www.wikipedia.de
Seite 11
Offset
1
1
1
0
1
0
0
1