\section{RAM-Disks}

Ein Gerät, dass sich wie eine Festplatte ansprechen lässt, muß nicht
immer eine Festplatte sein. Genauso, wie eine Block\-device in einer 
Datei untergebracht werden kann, kann sie
auch im Arbeitsspeicher untergebracht werden. Man spricht dann von
einer RAM-Disk. Der RAM-Disk-Treiber alloziert einen Teil des
Hauptspeichers (bubble memory), teilt diesen in Sektoren ein und
schafft damit ein Gerät, das sich wie eine Festplatte ansprechen
lässt. 

Eine RAM-Disk vergisst üblicherweise ihren Inhalt, wenn das System
heruntergefahren wird. Der Inhalt kann gesichert werden, indem man den
flüchtigen Speicher mit einer Batterie sichert, oder den Inhalt der
RAM-Disk beim Herunterfahren auf eine Festplatte schreibt. Da beide
Möglichkeiten den Durchsatz verringern oder die Hardwarekosten
erhöhen, macht es wenig Sinn, RAM-Disks auf das Überleben von
Stromausfällen auszulegen.

RAM-Disks werden aus diesen Gründen hauptsächlich für Daten verwendet,
die entweder häufig verändert werden oder einfach wiederhergestellt
werden können (z.B. für das {\ttfamily /tmp}-Verzeichnis). Ihr größter
Vorteil ist der erhöhte Durchsatz, verglichen mit physikalischen
Festplatten. Dieser erhöhte Durchsatz macht besonders bei Compilern
oder ähnlichen Anwendungen Sinn, wenn viel Gebrauch von temporären
Dateien gemacht wird. 

Die Verwendung von dezidiertem Speicher ausschließlich für eine
RAM-Disk ist eine äußerst teure Angelegenheit. Das System kann den
gesamten Durchsatz verbessern, indem der Speicher für häufig benötigte
Seiten benutzt wird. Speicher der dem Dateisystem vorbehalten ist,
wird besser als Pufferspeicher verwendet. Dies benötigt nur einen
Kopiervorgang innerhalb des Speichers. Die Verwendung von Speicher in
einer RAM-Disk benötigt dagegen zwei Kopiervorgänge. Einen von der
RAM-Disk in den Puffer und einen in den Hauptspeicher.

4.4BSD umgeht dies, indem die RAM-Disk in dem auslagerbaren Teil des
Speichers angelegt wird. In diesem Fall muß die RAM-Disk mit anderen
Prozessen um Speicher konkurrieren. Falls der Speicher knapp wird,
werden weniger häufig benötigte Seiten ausgelagert. Dies ermöglicht es
auch, die Größe der RAM-Disk wesentlich größer zu wählen, als es der
physikalische Speicherausbau eigentlich zuließe. So kann das
{\ttfamily /tmp}-Verzeichnis im virtuellen Adressbereich liegen, der
über den physikalischen Speicher hinausgeht. Dies erlaubt es, kleine
Dateien schnell anzusprechen, während große Dateien auch gespeichert
werden können, sich allerdings typischerweise mit den
Geschwindigkeiten plattenbasierter Dateisysteme ansprechen lassen.  

\cite{McKu96} Kap 8.4, \emph{The Memory-Based Filesystem}.

% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...
% laber laber laber laber...

                                % abstract ist eine zusammenfassung,
                                % nur bei article vorhanden 

%\begin{abstract}
%Ausgehend von den vielfältigen, teils konträren Ansprüchen an das
%Ein-/Ausgabesystem, versucht dieser Text einen Überblick über den
%Aufbau dieses Systembestandteils bei modernen Betriebssystemen zu
%geben. 

%Einer kurzen Einführung in die Struktur der Gerätetreiber und deren
%Aufbau in Schichten folgen die Grundzüge der Kommunikation mit den
%Ein-/Ausgabegeräten.

%Dieser Text behandelt die Arten von Geräten, deren unterschiedliche
%Verwendung als Speicher-, Ein- oder Ausgabegerät, sowie Geräte, die
%nur im Namensraum des Dateisystems vorkommen. Unterschiede zwischen
%zeichenorientierten Geräten und blockorientierten Geräten werden am
%Beispiel der Aufrufe an Gerätetreiber unter Unix erörtert.    

%Das bei Unix gern verwendete Paradigma ``Everything-Is-A-File'' wird
%näher betrachtet und schließlich auch auf Stellen eingegangen, an
%denen es nicht konsequent umgesetzt wurde.

%Aufbauend auf den Eigenschaften blockorientierter Geräte, werden
%schließlich die Grundlagen der Festplattenpartitionierung, sowie der
%Konkatenation bis zu den verschiedenen RAID-Level behandelt.

%\end{abstract}

                             