Jedes Betriebssystem hat seine eignen Begriffe, die oft auf eine lange eigene Historie zurückblicken können. Da früher jedes Betriebssystem seine eigne abgeschlossene Welt war, habe sich für eine und dasselbe Element oft unterschiedliche Begriffe eingebürgert und umgekehrt bedeutet ein und derselbe Begriff unterschiedliches. Im dem folgenden Glossar habe ich versucht, eine Übersetzunghilfe zu liefern:
Linux und MacOS kennen beide einen Mechanismus Dateien zu klonen, ohne sie zu kopieren.
Bei MacOS nennen sich das Alias, Linux nennt es Link.
Links im WWW dagegen sind mit vollem
Namen eigentlich "Hyperlinks". Aber wer spricht schon immer den vollen Namen aus.
Leider ist es mit der Gleichsetzung Alias(MacOS) = Link(Linux) noch nicht getan.
Linux kennt nämlich zwei Varianten, von Links,
die symbolischen Link,
die vermittels einer Pfadangabe auf eine andere Datei verweisen, und
harte Links, die ununterscheidbar Klone sind.
Die Aliase von MacOS entsprechen dabei eher den symbolischen Links,
sind aber intelligenter,
da sie ihre Ziel (im Idealfall) auch dann nicht aus den Augen verlieren, wenn es verschoben wird.
Symbolische Links können das nicht,
harte Links dagegen schon. Diese sind aber wiederum
so gut geklont, dass hinterher nicht mehr unterscheiden ist, wer Klon und wer Ausgangsdatei ist.
Mehr dazu in meine Text zum zum Linux-Fielsystem.
Doch noch ist die Verwirrung nicht völlig aufgelöst. Zu allem Überfluss kennt auch Linux
etwas, das sich Alias nennt. Dabei handelt es sich um einen Mechanismus der Kommandoshells (egal ob
(t)csh, bash oder andere moderne Shells). Mit einem Alias kann man sich eine (eigene) Abkürzung
für oft benötigte lange Kommandozeilen definieren. Das ganze geht so. In der
entsprechenden Konfigurationsdatei (also
/etc/profile und ~/.profile oder
/etc/csh.cshrc und ~/.cshrc)
steht z.B. folgende Zeile:
alias ll="ls-l" (bash-Variante) oder
alias ll "ls-l" ((t)csh-Variante).
Damit wird immer, wenn ich in der Kommandozeile ll eintippe ls -l dafür ersetzt
uns ausgeführt. (ls zeigt den Inhalt eine angegebene oder des aktuellen Verzeichnisses an.
Die Option -l bewirkt, dass nicht nur die Namen der Dateien, sondern auch Größe,
Modifikationsdatum, Rechte, etc. ausgegeben werden).
Wenn der Hauptspeicher nicht ausreicht können beide Betriebssysteme Platz auf der Festplatte als Erweiterung des Hauptspeichers nutzen. Dabei gibt es einige Unterschiede. Beim virtuellen Speicher von MacOS wird auf der Platte ein Abbild des Gesammtspeichers gehalten. Dazu führt dazu, dass der virtuellen Speicher mindestens die Größe des Hauptspeichers haben muss. Außerdem sitzt der virtuelle Speicher immer mit auf einer normalen Partition.
Der swap-space von Linux (und auch von MacOS X) ist etwas cleverer. Er sitzt zum einen in der Regel in einer eigenen Partition und kann daher nicht fragmentieren (swap-files sind aber trotzdem möglich wenn auch selten verwendet). Zum anderen ist der ganze Speicher des swap-space (d.h. aller swap-Partitionen und -files) zusätzlich zum Hauptspeicher. Um bei 128 MB Hauptspeicher 192 MB nutzen zu können, brauche ich also bei Linux 64 MB swap, bei MacOS 192 MB virtuellen Speicher.
Schließlich auch Linux kennt eine Konzept, das virtueller Speicher genannt wird. Dieser hat aber eine grundsätzlich andere Bedeutung und Aufgabe. Multitaskingsystemen wird jeder Prozess von einem anderen aus gestartet. Unter Linux/UNIX geschieht dies nun so, dass zunächst eine Kopie des erzeugenenden Prozesses erzeugt wird und im Speicher dieser Kopie, dann der neue Prozess gestartet wird. Dieser reorganisiert dann als erstes seine Speicher und passt die Größe an. Wenn nun ein Prozess des über 50 % des verfügbaren Speicher von RAM und swap belegt einen Kindprozess erzeugen will, so scheint dies nicht möglich zu sein. Mit Hilfe des virtueller Speichers geht dies aber doch. Denn aller Speicher, auf den noch nicht zugegriffen wurde,- und auf die Kopie der Daten wurde ja beim Kindprozess noch nicht zugegriffen - wird zunächst nur virtuell angelegt. Erst beim ersten Zugriff auf eine Speicheradresse wird diese eine physikalischen Speicheradresse zugeordnet.
Dadurch wird die Speicherverwaltung sehr flexible. Ein Beispiel: Nehmen wir an eine Programm müsste eine Tabelle verwalten, die je nach Startsituation viele Spalten oder viele Zeilen entfällt. Ein Tabelle mit der maximalen Spalten und Zeilezahl würde aber den Speicher sprengen. Trotzdem kein Problem die Tabelle fest mit maximaler Größe im Programm einzubauen. Physikalisch angefordert wird immer nur der Teil des Speicher, der tatsächlich genutzt wird. (Für die Experten: Es ist natürlich möglich in diesem Fall, das Problem eleganter mit dynamischer Speicheranforderung zu lösen.)