Es ist viel damit zu tun, aber ich werde versuchen, es so einfach wie möglich und auf eine Weise zu erklären, die auf nahezu jedes Betriebssystem anwendbar ist.
Hier gibt es zwei Grundprinzipien:
Die Gesamtsumme von allem, was sich im RAM befinden muss und was davon profitieren würde, ist fast immer größer als die Größe des RAM. Zu den Dingen, die davon profitieren würden, im RAM zu sein, gehören Prozessarbeitssätze und die Standby-Liste. Letzteres enthält Daten und Code, die einmal aktiv verwendet wurden, seitdem jedoch inaktiv sind. Ein Großteil davon wird wieder verwendet, ein Teil davon ziemlich bald. Daher ist es vorteilhaft, dies im RAM zu belassen. Dieser Speicher fungiert als eine Art Cache, ist jedoch nicht unbedingt erforderlich, gehört also zur Kategorie des verfügbaren Speichers. Wie der freie Speicher kann er schnell jedem Programm zugewiesen werden, das ihn benötigt. Im Interesse der Leistung sollte der Standby-Speicher groß sein.
Die Verwendungshäufigkeit von Speicherblöcken ist alles andere als zufällig, kann jedoch mit beträchtlicher Genauigkeit vorhergesagt werden. Der Speicher ist in Blöcke unterteilt, häufig 4 KB. Auf einige Blöcke wird mehrmals pro Sekunde zugegriffen, während auf andere für viele Minuten, Stunden, Tage oder sogar Wochen nicht zugegriffen wurde, wenn das System lange genug in Betrieb war. Zwischen diesen beiden Extremen besteht ein breiter Anwendungsbereich. Der Speichermanager weiß, auf welche Blöcke in letzter Zeit zugegriffen wurde und auf welche nicht. Es ist eine vernünftige Annahme, dass ein Speicherblock, auf den kürzlich zugegriffen wurde, bald wieder benötigt wird. Speicher, auf den in letzter Zeit nicht zugegriffen wurde, wird wahrscheinlich in Kürze nicht mehr benötigt. Langjährige Erfahrung hat gezeigt, dass dies ein gültiges Prinzip ist.
Der Speichermanager nutzt das zweite Prinzip, um die unerwünschten Folgen des ersten Prinzips weitgehend zu mildern. Zu diesem Zweck wird ein Balanceakt ausgeführt, bei dem die Daten, auf die kürzlich zugegriffen wurde, im RAM gespeichert werden, während die selten verwendeten Daten in den Originaldateien oder in der Auslagerungsdatei beibehalten werden.
Wenn genügend RAM vorhanden ist, ist dieser Spagat einfach. Ein Großteil der nicht so kürzlich verwendeten Daten kann im RAM aufbewahrt werden. Das ist eine gute Situation.
Die Dinge werden komplizierter, wenn die Arbeitsbelastung zunimmt. Die Gesamtsumme der verwendeten Daten und des verwendeten Codes ist größer, die RAM-Größe bleibt jedoch gleich. Dies bedeutet, dass eine kleinere Teilmenge davon im RAM aufbewahrt werden kann. Einige der zuletzt verwendeten Daten befinden sich nicht mehr im RAM, sondern müssen auf der Festplatte belassen werden. Der Speichermanager ist sehr bemüht, ein ausgewogenes Verhältnis zwischen aktivem Speicher und verfügbarem Speicher aufrechtzuerhalten. Mit zunehmender Arbeitsbelastung muss der Speichermanager jedoch den laufenden Prozessen mehr verfügbaren Speicher zur Verfügung stellen. Dies ist keine gute Situation, aber der Speichermanager hat keine andere Wahl.
Das Problem ist, dass das Verschieben von Daten in und aus dem RAM während der Ausführung von Programmen einige Zeit in Anspruch nimmt. Wenn genügend RAM vorhanden ist, kommt es nicht sehr oft vor und wird nicht einmal bemerkt. Wenn die RAM-Auslastung jedoch einen hohen Wert erreicht, kommt dies viel häufiger vor. Die Situation kann so schlimm werden, dass mehr Zeit für das Verschieben von Daten in den und aus dem RAM aufgewendet wird, als für deren tatsächliche Verwendung. Dies ist ein Problem, das der Speichermanager nur sehr schwer zu vermeiden versucht, bei einer hohen Arbeitsbelastung jedoch häufig nicht zu vermeiden ist.
Der Memory Manager ist auf Ihrer Seite und bemüht sich stets, auch unter widrigen Bedingungen eine optimale Leistung zu erzielen. Aber wenn die Arbeitslast groß ist und der verfügbare Speicher knapp wird, muss er schlechte Dinge tun, um weiterhin zu funktionieren. Das ist in der Tat das Wichtigste. Die Priorität ist es, zuerst die Dinge am Laufen zu halten und dann so schnell wie möglich zu machen.