Virtual Memory
"Mein Gedächtnis ist meistens auch nur virtuell…"
Virtual Memory
Auf einen Blick
Virtual Memory (VM): Jeder Prozess besitzt einen eigenen logischen Adressraum — für jeden Prozess gleich strukturiert, für andere nicht zugänglich, und in Größe/Lage unabhängig vom real vorhandenen RAM. Alle in Windows/Unix sichtbaren Adressen sind virtuelle Adressen.
Definition
Jeder Prozess hat einen eigenen, logischen Adressraum, der:
- für jeden Prozess die gleiche logische Struktur besitzt,
- für andere Prozesse a priori nicht zugänglich ist (Schutz!),
- in Größe und Lage unabhängig vom faktischen RAM ist,
- in seiner Größe durch die Adressbreite (32 oder 64 Bit) bestimmt ist.
Konsequenzen
- Compiler, Assembler und Linker erzeugen nur virtuelle Adressen.
- Eine Abbildung virtuell → physikalisch ist nötig → Page Table & MMU.
- Der Schutz des Adressraums obliegt dieser Abbildung (und damit dem OS, Kernel- und User-Modus).
- Das Ein-/Auslagern von Speicherbereichen wird grundsätzlich möglich (Ortsunabhängigkeit) → Page Faults.
Warum löst das die MM-Aufgaben?
| Aufgabe | wie VM es löst |
|---|---|
| viele Prozesse gleichzeitig | jeder hat seinen eigenen Adressraum |
| sehr großer Adressraum | unabhängig vom realen RAM (bis zur Adressbreite) |
| Schutz vor Störungen | fremde Adressräume sind nicht zugänglich |
Physische Komponenten
Ein VM-System besteht aus dem physischen RAM (hier liegen die Page Tables), der MMU (mit TLB) und einem Auslagerungsbereich (Linux: Swap-Partition, Windows: pagefile.sys). Eine Page liegt entweder im RAM oder im Auslagerungsbereich.
Verwandte Notes
Segmente & Pages · Page Table & MMU · Page Faults · Speicherhierarchie · Kernel- und User-Modus