Speicher- und Cacheverwaltung unter Linux Ralf Petring & Guido Schaumann
Übersicht Virtueller Adressraum Virtuelle Speicheraufteilung Reale Speicheraufteilung Speicherverwaltung Speicherzugriff Auslagerungsstrategien Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 2
Virtueller Adressraum 4 Gigabyte gesamt bei 32 Bit Rechnern 16 Exabyte bei 64 Bit Rechnern ( 17.179.869.184 GB ) 1 GB für Kern Nur im Kernmodus zugreifbar Für Seitentabellen und andere Informationen des Kerns 3 GB Benutzer Aufgeteilt in zusammenhängende Bereiche Vielfaches der Seitengröße 4 KB beim Pentium (32 Bit) 8 KB beim Alpha (64 Bit) mit gleichen Schutzrechten, Auslagerungseigenschaften. Programmcode, eingeblendete Dateien Entstehung von Löchern zwischen den Bereichen Fatale Seitenfehler Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 3
Virtuelle Speicheraufteilung (1) Aufteilung des Virtuellen (Benutzer)Adressraumes in 3 Teile Text ( Programmcode ) Daten Statische Daten Dynamische Daten (BSS : block started by symbol, IBM Assembleroperator) Keller Gemeinsamer Speicher für Text bei gleichem Code Problem bei selbstmodifizierenden Programmen Seit 1950 aus der Mode, weil zu komplex für ( teilweise ) gemeinsam genutzte Dateien Problem bei Schreibzugriffen Problemlösung : copy on write Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 4
Virtuelle Speicheraufteilung (2) Prozess A Keller Physischer Speicher Prozess B Keller Eingeblendete Datei Eingeblendete Datei BSS Daten Text Kernel ( festverdrahtet ) BSS Daten Text Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 5
Reale Speicheraufteilung 3 Speicherzonen Zone_DMA Gerätetreiber, etc. 0 16 MB Zone_Normal Möglichst alle Benutzerprozesse über 16 MB Zone_Highmem Spezialfall bei x86 Prozessoren über 896 MB Benutzung nur wenn nötig Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 6
Buddyverfahren Speicherverwaltung Verwaltung in Listen pro Buddygröße eine Liste Listenköpfe in einer sortierten Liste zusammengefasst Nachteil : Großer Verschnitt zweite Speicherverwaltung Blöcke werden in Scheiben geschnitten Scheiben werden separat verwaltet dritte Speicherverwaltung Für Speicherbereiche die nicht zusammenhängen müssen Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 7
Speicherzugriff 3 - stufiges Pagingverfahren (x86 2 stufig simuliert) Globales Verzeichniss Mittleres Seitenverzeichniss Seitentabelle Seite Verzeichniss Mitte Seite Offset Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 8
Page Fault Algorithmus Page Fault Adresse im Benutzerraum? Nein Ja Zugriff erlaubt? Benutzermodus? Ja Nein Ja Nein allozieren SIGSEV Crash Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 9
Auslagerung Kern wird niemals verdrängt Textsegmente und eingeblendete Dateien werden auf die entsprechende Datei ausgelagert Auslagerung in Swapdateien oder Swappartitionen Max 8 Swapdateien Dynamisches hinzufügen und entfernen Verwaltung in Prioritätsliste Partition hat höchste Priorität Partitionen sind schneller Benutzung von demand paging Prozesse werden Seitenweise ausgelagert Früher nur komplette Prozesse Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 10
Auslagerungsstrategie (1) bdflush periodisch zu viele der Seiten modifiziert zurückschreiben kswapd periodisch alle 1 sec oder bei Bedarf versucht eine Anzahl Seiten freizuhalten Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 11
Auslagerungsstrategie (2) kswapd Algorithmus lange nicht benötigte Seiten eines Prozesses freigeben möglichst Prozesse die schon lange im Speicher sind mod. Clock Algorithmus in Reihenfolge der virtuellen Adresse selten benötigte gemeinsame Dateien freigeben Freigabe von anderen Seiten minimale Verweilzeit im Speicher (Vermeidung von Trashing) sauber sofort freigeben dirty mit Hintergrundspeicher zurückschreiben und freigeben dirty ohne Hintergrundspeicher Speicher allozieren 2. Chance Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 12
Quellen Tanenbaum, A.: Moderne Betriebssysteme, 2002 Das Internet verschiedene Diplomarbeiten und Referate Silberschatz, A.: Operating System Concepts, 2002 Speicher- und Cachverwaltung Guido Schaumann & Ralf Petring Folie Nr. 13