Einzelnen Beitrag anzeigen
Alt 26.11.2004, 00:31   #6
Reimund
Senior Member
 
Registriert seit: 06.04.2003
Alter: 61
Beiträge: 121


Standard

Hi Karsten,

leider ist das Thema Speicherverwaltung nicht so ganz einfach. Ich versuch trotzdem mal, es zu erklären.
Vorweg: wenn ich nachfolgend von virtuell rede, dann meine ich tatsächlich virtuell (also nicht real) und nicht die Auslagerungsdatei (diese nenne ich so).

Windows ist ein 32 Bit Multitasking Betriebssystem. Jedem Prozeß (das ist eine Instanz eines Programms und besteht aus Programmcode, Datenbereich und evtl. angeforderten Ressourcen) wird ein 4 GB-Speicherraum zur Verfügung gestellt. Da die wenigsten PCs 4 GB RAM haben, ist dieser Adressraum virtuell. Normalerweise benötigt ein Prozeß aber nicht volle 4 GB realen Speicher, sondern weniger. Darum läuft ein Rechner auch schon mit 256 MB.
Da Windows weiterhin mehrere Prozesse parallel (genau: quasi-parallel) abarbeiten kann, wird n x 4 GB virtueller Adreßraum benötigt. Real können das deutlich weniger sein, weil ja jeder Prozeß weit weniger als echte 4 GB braucht. Trotzdem können vorhandene z. B. 256 MB da schon sehr eng werden.
Deshalb ist Windows in der Lage, den realen Speicher (RAM) künstlich zu vergrößern, indem eine Datei erzeugt wird, die den Speicherraum ergänzt. Das ist die Auslagerungsdatei.
Aufgrund der deutlich geringeren Zugriffsgeschwindigkeit auf die Festplatte wird diese Datei aber nur zum Auslagern von Speicherbereichen benutzt. D. h., haben wir 5 Programme, die alle 4 GB virtuellen und 50 MB realen Speicher benötigen, und kommt ein sechstes Programm dazu, so wird vom Windows der Inhalt von Speicherbereichen, die momentan nicht so dringend benötigt werden, in die Auslagerungsdatei geschrieben und anschließend wird dieser jetzt "freie" reale Speicherbereich dem neuen Programm zur Verfügung gestellt.
Benötigt das Programm, das vorher Speicher "abgeben" mußte, seinen Speicher wieder, nimmt Windows einem anderen Programm (bzw. Prozeß) Speicher weg, schreibt den Inhalt in die Auslagerungsdatei, liest dann den alten Inhalt aus der Auslagerungsdatei wieder in den Speicher ein, und voila - das alte Programm hat seinen Speicher wieder.
Das Ganze geschieht natürlich im Hintergrund, die Prozesse bekommen davon überhaupt nichts mit.
Die Auslagerungsdatei ist durch diese Vorgehensweise ein Flickwerk aus vielen verschieden Speicherbereichen, die den unterschiedlichsten Prozessen gehören.

Ok, so weit, so gut.
Hat nun ein Rechner sehr viel echten Speicher (1 GB RAM und mehr), so wird die Auslagerungsdatei evtl. gar nicht mehr wirklich benötigt, weil der Speicher durch die gestarteten Prozesse gar nicht vollständig genutzt wird.
Leider nutzt Windows die Auslagerungsdatei immer, wenn sie vorhanden ist.
Da das Lesen und Schreiben der Auslagerungsdatei deutlich langsamer ist als ein Speicherzugriff, wird unter Umständen bei sehr viel echtem RAM und wenigen Prozessen der Rechner durch die Auslagerungsdatei künstlich gebremst.
Deshalb kann man in diesen Fällen probieren, die Auslagerungsdatei auf 0 zu setzen, so dass Windows sie nicht mehr nutzt. (Falls der vorhandene reale Speicher aber dann nicht mehr ausreicht, bekommt man ein ernsthaftes Problem; sprich: meist einen sogenannten Blue Screen, also einen Systemabsturz.)

Im Task Manager siehst Du nur die Auslastung des echten Speichers (RAM), nicht der Auslagerungsdatei.

Ok, ich hoffe, ich konnte das einigermaßen verständlich rüberbringen.
Natürlich ist das alles nur sehr einfach beschrieben. (Virtuell )
Real spielen noch einige Faktoren eine Rolle, die die Speicherverwaltung sehr viel komplizierter machen.

Grüße,
Reimund
Reimund ist offline   Mit Zitat antworten