nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Speicherverwaltung: eigene vs. System

Von: Ole Streicher (ole-usenet-spam@gmx.net) [Profil]
Datum: 27.04.2009 16:34
Message-ID: <ytzab62kvx4.fsf@burgos.aip.de>
Newsgroup: de.comp.os.unix.programming
Hallo,

ich habe in einem Programm die Notwendigkeit, einige ziemlich große
Datenblöcke (ca. 2-4 Blöcke, jeweils ca. 1-2 GB) zu verwalten
(wahlfreier Zugriff).

Dafür sehe ich im Prinzip zwei Möglichkeiten:

1. Ich alloziere einfach genügend große Speicherbereiche und verwende
sie. Wenn der (physische) Speicher ausgeht, wird ja sowieso in den
Swap ausgelagert.

2. Ich lege für die Blöcke Temp-Dateien an und verwende mmap() für den
direkten Zugriff. Wenn noch genügend physischer Speicher vorhanden ist,
erfolgt das Datenkopieren sowieso im Cache.

Auf den ersten Blick erscheinen mir beide Möglichkeiten etwa
gleichwertig: solange nur genug physischer Speicher vorhanden ist,
erfolgen die Operationen potentiell eher im RAM als auf der
Festplatte.

Im ersten Fall bin ich aber in der Größe auf das limitiert, was der
(spätere) Benutzer als Swap angelegt hat, während im zweiten Fall im
Grunde nur das Dateisystem ein Limit darstellt (?). Dafür wird man
wohl im zweiten Fall "gegen" das OS arbeiten, welches aus
Sicherheitsgründen immer mal (sinnlos) Daten auf die Platte schreiben
wird --> eigentlich erscheint mit die erste Lösung als einzig
sinnvolle und die zweite als (von absoluten Ausnahmen abgesehen)
unsinnig.

Was mich nur stutzig macht: warum legen dann Programme überhaupt
temporäre (auf den Programmlauf beschränkte) Dateien an? Der einzige
Grund, der mit einfiele, wäre IPC, aber selbst da ist ein
Zwischenspeicher auf der Platte sicher keine gute Wahl.

Gibt es einen Grund, *nicht* malloc() zu nehmen, sondern mmap()?

Viele Grüße

Ole

[ Auf dieses Posting antworten ]

Antworten