@Ronald BW
Virtueller Arbeitsspeicher - was ist das und wie nutzt man ihn?
Hier wird ein wenig der virtuelle Speicher erklärt.
Ich programmiere seit sehr vielen Jahren u.a. auch auf PCs. Am Anfang die DOS-Rechner mit Disketten und einem sehr begrenzen Adressraum (16bit Adresse => max. 1 MB adressierbar.).
Die Adressen setzten sich zusammen aus einem Segment-Register (CS=Codesegment, DS=Datensegment, SS=Stacksegment, ES=Extra-Segment). und einem Adress-Offset. Damit konnte man max. eine Adresse bilden mit 20 Bit = Hex FFFFF.
Die heutigen Rechner benutzen diese Segmentregister nicht mehr sondern adressieren den kompletten Adressraum. Der kann bereits bei einem 32bit Programm ganz schön groß sein Hex FFFFFFFF = 4.294.967.295,
das sind um die 4 GB. Der RAM des PC ist normalerweise noch größer.
Die Programme adressieren also nicht den tatsächlichen Speicher, dazu müssten die 32bit-Programme (die Mehrzahl aller Programme), alle im unteren RAM-Bereich laufen. Das System gibt denen deshalb einen bestimmten RAM-Bereich, ggf. oberhalb der 4 GB Grenze, und die modernen CPUs können dann automatisch zu jeder Adresse im Befehl des Programmes eine bestimmte Basisadresse hinzufügen, um die tatsächliche Adresse anzusprechen.
Da nicht immer der gesamte zugeordnete Adressbereich benötigt und angesprochen wird, wird der Rest im virtuellen Speicher ausgelagert. Es kommt ja noch hinzu, dass unter Windows ja viele Programme (ggf. im Hintergrund) gleichzeitig arbeiten, die CPU hat auch mehrere Kerne, die die Arbeit erledigen. Das System steuert diesen Multibetrieb derart, dass jede Aufgabe immer wieder mal dran kommt. Dafür gibt es mehrere Methoden (Zeitscheibe, Vorrang, E/A-Unterbrechungen und Wartezustände). Die inaktiven Programme können dazu ausgelagert werden, um RAM-Speicher für das aktive Programm frei zu machen.
Wäre ja auch blöd den langsameren Swap zu nutzen
Der virtuelle Speicher ist nicht nur irgendein Swap, sondern eine ziemlich komplizierte Systemaufgabe.