Left Up Right Dateien

In den Speicher abgebildete Dateien

(Memory mapped Files)

Grundidee

In einem virtuellem Speicher werden Seiten vom relativ teueren Hauptspeicher/RAM auf den im billigen Hintergrundspeicher Festplatte befindlichen Swap-Bereich transferiert, falls eine Seite in nächster Zeit entbehrlich ist,
und falls auf eine Seite zugeriffen wird, wird ist auf umgekehrten Weg wieder eingelagert.

Mit dem klassischen Datei API werden mit read(2) und write(2) Inhalte in bzw. aus den Hauptspeicher transferiert. Wenn nun der angegebene Puffer ausgelagert wird, so befindet sich der Dateiinhalt zwei mal auf der Platte...

Daher ist die Idee naheliegend, zusätzlich zu den Swap-bereich Dateien in den Hauptspeicher abzubilden, so daß die Seiten gleich in die Datei transferiert werden.

Vorteil

API

mmap(2)
Einblenden einer Datei oder eines Teil davon in den Adressraum eines Prozesses
munmap(2)
Entfernt die Einblendung
msync(2)
Erzwingt das schreiben in den Hintergrundspeicher
Recherche im Linux-Kern dazu
mlock(2)
Verhindert die Transferierung in den Hintergrundspeicher

Anwendung:

munlock(2),munlockall(2)
hebt obiges auf
mprotect(2)
Setzt die Zugriffsrechte eines Speicherbereiches (z.B. auf nur lesend)
Man kann damit dann Speicherseiten schützen, und bei Schreibzugriff mittels Signalhandler aktionen ausführen. Beispiel mprot demonstriert das.

Verwendung

Verwendungen im unserem Technologieportal:
Relative Zeiger in RAMS
Hier wird eine kleine Bibliothek zur Implementierung persistenter Objekte versucht.

Fragen zu Implementierungen

Erfahrungen

Links

GNU-Dokumentation memory Mapped I/O
Gingell u.a: Virtual Memoy Architecture of SunOS
beschreibt die Zusammenhänge bei der Implementierung

Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber