Warum ist das Dateisystem von Linux als einzelner Verzeichnisbaum konzipiert?

Warum ist das Dateisystem von Linux als einzelner Verzeichnisbaum konzipiert?

Kann jemand erklären, warum Linux als einzelner Verzeichnisbaum konzipiert ist?

C:\Während wir unter Windows mehrere Laufwerke wie , und haben können D:\, gibt es unter Unix nur ein einziges Stammverzeichnis. Gibt es dafür einen bestimmten Grund?

Antwort1

Da das Unix-Dateisystem viele Jahre älter ist als Windows, kann man die Frage auch anders formulieren: „Warum verwendet Windows für jedes Gerät einen separaten Bezeichner?“

Ein hierarchisches Dateisystem hat den Vorteil, dass jede Datei oder jedes Verzeichnis als untergeordnetes Verzeichnis des Stammverzeichnisses gefunden werden kann. Wenn Sie Daten auf ein neues Gerät oder ein Netzwerkgerät verschieben müssen, kann der Speicherort im Dateisystem gleich bleiben und die Anwendung bemerkt den Unterschied nicht.

Angenommen, Sie haben ein System mit statischem Betriebssystem und einer Anwendung mit hohen E/A-Anforderungen. Sie können /usr schreibgeschützt mounten und /opt (wenn die Anwendung dort liegt) auf SSD-Laufwerken ablegen. Die Dateisystemhierarchie ändert sich nicht. Unter Windows ist dies viel schwieriger, insbesondere bei Anwendungen, die darauf bestehen, unter C:\Programme\ zu liegen.

Antwort2

Dies hat zum Teil historische Gründe und zum Teil auch, weil es so mehr Sinn ergibt.

Multics

Multicswar das erste Betriebssystem, das diehierarchisches Dateisystemwie wir es heute kennen, mit Verzeichnissen, die Verzeichnisse enthalten können.„Ein universelles Dateisystem für die Sekundärspeicherung“von RC Daley und PG Neumann:

Abschnitt 2 des Dokuments stellt die hierarchische Struktur der Dateien vor, die eine flexible Nutzung des Systems ermöglicht. Diese Struktur bietet ausreichende Möglichkeiten, um Vielseitigkeit zu gewährleisten. (…)

Zum besseren Verständnis kann man sich die Dateistruktur als einen Dateibaum vorstellen, von dem einige Verzeichnisse sind. Das heißt, mit einer Ausnahme wird auf jede Datei (also jedes Verzeichnis) direkt von genau einem Zweig in genau einem Verzeichnis verwiesen. Die Ausnahme ist das Stammverzeichnis oder die Wurzel an der Wurzel des Baums. Obwohl von keinem Verzeichnis explizit darauf verwiesen wird, wird die Wurzel implizit von einem fiktiven Zweig verwiesen, der dem Dateisystem bekannt ist. (…)

Ein Benutzer arbeitet zu jedem Zeitpunkt in einem Verzeichnis, seinem Arbeitsverzeichnis. Er kann auf eine Datei zugreifen, auf die ein Eintrag in seinem Arbeitsverzeichnis verweist, indem er einfach den Eintragsnamen angibt. Mehrere Benutzer können gleichzeitig dasselbe Arbeitsverzeichnis haben.

Wie in vielen anderen Aspekten strebte Multics nach Flexibilität. Benutzer können in einem Teilbaum des Dateisystems arbeiten und den Rest ignorieren und trotzdem von Verzeichnissen zur Organisation ihrer Dateien profitieren. Verzeichnisse wurden auch zur Zugriffskontrolle verwendet – das Attribut READ ermöglichte es Benutzern, die Dateien in einem Verzeichnis aufzulisten, und das Attribut EXECUTE ermöglichte es Benutzern, auf Dateien in diesem Verzeichnis zuzugreifen (diese Funktion blieb wie viele andere in Unix erhalten).

Multics folgte auch dem Prinzip eines einzigen Speicherpools. Das Dokument geht nicht näher auf diesen Aspekt ein. Ein einziger Speicherpool passte gut zur damaligen Hardware: Es gab keine entfernbaren Speichergeräte, zumindest keine, die den Benutzern wichtig gewesen wären. Multics hatte zwar einen separaten Backup-Speicherpool, dieser war jedoch für die Benutzer transparent.

Unix

Unix ließ sich stark von Multics inspirieren, zielte jedoch auf Einfachheit ab, während Multics auf Flexibilität abzielte.

Ein einzelnes hierarchisches Dateisystem passte gut zu Unix. Wie bei Multics waren Speicherpools für Benutzer normalerweise nicht relevant. Es gab jedoch Wechseldatenträger, und Unix stellte sie den Benutzern über denmountUndumountBefehle (reserviert für den „Superuser“, also den Administrator). In„Das UNIX Time-Sharing-System“, erklären Dennis Ritchie und Ken Thompson:

Obwohl die Wurzel des Dateisystems immer auf demselben Gerät gespeichert ist, ist es nicht notwendig, dass die gesamte Dateisystemhierarchie auf diesem Gerät liegt. Es gibt eine Mount-Systemanforderung mit zwei Argumenten: dem Namen einer vorhandenen normalen Datei und dem Namen einer speziellen Datei, deren zugehöriges Speichermedium (z. B. ein Plattenpaket) die Struktur eines unabhängigen Dateisystems mit eigener Verzeichnishierarchie haben sollte. Der Effekt von Mount besteht darin, dass Verweise auf die bisher normale Datei stattdessen auf das Stammverzeichnis des Dateisystems auf dem Wechseldatenträger verweisen. Tatsächlich ersetzt Mount ein Blatt des Hierarchiebaums (die normale Datei) durch einen ganz neuen Unterbaum (die Hierarchie, die auf dem Wechseldatenträger gespeichert ist). Nach dem Mounten gibt es praktisch keinen Unterschied zwischen den Dateien auf dem Wechseldatenträger und denen im permanenten Dateisystem. In unserer Installation befindet sich das Stammverzeichnis beispielsweise auf einer kleinen Partition eines unserer Plattenlaufwerke, während das andere Laufwerk, das die Dateien des Benutzers enthält, durch die Systeminitialisierungssequenz gemountet wird. Ein mountbares Dateisystem wird durch Schreiben auf die entsprechende spezielle Datei generiert. Zum Erstellen eines leeren Dateisystems steht ein Dienstprogramm zur Verfügung. Alternativ kann auch einfach ein vorhandenes Dateisystem kopiert werden.

Das hierarchische Dateisystem hat außerdem den Vorteil, dass die Komplexität der Verwaltung mehrerer Speichergeräte im Kernel konzentriert wird. Dies bedeutet, dass der Kernel komplexer ist, alle Anwendungen dadurch jedoch einfacher werden. Da sich der Kernel um Hardwaregeräte kümmern muss, die meisten Anwendungen jedoch nicht, ist dies ein natürlicheres Design.

Windows

Die Ursprünge von Windows gehen auf zwei Linien zurück:VMS, ein Betriebssystem, das ursprünglich für denVAXMinicomputer undCP/M, ein Betriebssystem, das für frühe Mikrocomputer von Intel entwickelt wurde.

VMS hatte ein verteiltes hierarchisches Dateisystem,Dateien-11. In Files-11 ist dievollständiger Pfad zu einer Dateienthält einen Knotennamen, eine Kontobezeichnung auf diesem Knoten, einen Gerätenamen, einen Verzeichnisbaumpfad, einen Dateinamen, einen Dateityp und eine Versionsnummer. VMS hatte eine leistungsstarkelogischer NameFunktion, die das Definieren von Verknüpfungen zu bestimmten Verzeichnissen ermöglicht, sodass sich Benutzer selten um den „tatsächlichen“ Speicherort eines Verzeichnisses kümmern müssen.

CP/M wurde für Computer mit 64 kB RAM und einem Diskettenlaufwerk entwickelt und setzte daher auf Einfachheit. Es gab keine Verzeichnisse, aber eine Dateireferenz konnte eine Laufwerksangabe ( A:oder B:) enthalten.

WannMS-DOS2.0 führte Verzeichnisse ein, allerdings mit einer Syntax, die mit MS-DOS 1 kompatibel war, das wiederum CP/M folgte. Pfade waren also auf einem Laufwerk mit einem einstelligen Namen verwurzelt. (Außerdem /wurde in VMS und CP/M der Schrägstrich verwendet, um Befehlszeilenoptionen zu starten, sodass ein anderes Zeichen als Verzeichnistrennzeichen verwendet werden musste. Aus diesem Grund verwenden DOS und spätere Windows-Versionen den Backslash, obwohl einige interne Komponenten auch Schrägstriche unterstützen).

Windows blieb mit DOS und dem VMS-Ansatz kompatibel, sodass das Konzept der Laufwerksbuchstaben beibehalten wurde, auch wenn diese an Bedeutung verloren. Heute verwendet Windows unter der HaubeUNCPfade (ursprünglich entwickeltvon Microsoft und IBM fürOS/2, von verwandter Abstammung). Obwohl dies Power-Usern vorbehalten ist (wahrscheinlich aufgrund der Länge der Historie), erlaubt Windows das Mounten überAnalysepunkte.

Antwort3

Es bestehen keine Sicherheitsbedenken im Zusammenhang mit einem einzelnen Verzeichnisbaum.

Die Entwickler von Unix hatten viel Erfahrung mit Betriebssystemen, bei denen die Benutzer wissen mussten, welches physische Gerät eine bestimmte Ressource enthielt. Da es Teil des Zwecks eines Betriebssystems ist, eine abstrakte Maschine auf realer Hardware zu erstellen, dachten sie, es sei viel einfacher, auf die Adressierung von Ressourcen über ihren physischen Standort zu verzichten, und beschlossen, alles in einem einzigen Namensbaum zusammenzufassen.

Dies ist nur ein Teil des Genies hinter demDesign von Unix.

Antwort4

Sowohl *nix als auch Windows mounten ihre Laufwerke. Unter Windows werden diese automatisch in Mount-Punkten gemountet, die standardmäßig in aufsteigender alphabetischer Reihenfolge angeordnet sind. Diese Standardwerte sind:

  • A:und B:=> Disketten
  • C:=> erste Partition der ersten Festplatte
  • D:=> nächste Partition oder nächstes Festplatten- oder CD/DVD-Laufwerk, wenn keine anderen Partitionen vorhanden sind.

Jeder dieser Einhängepunkte ist ein Verzeichnis.

In *nix werden die Einhängepunkte vom Benutzer festgelegt. Ich habe beispielsweise eine Partition als eingehängt /und eine andere als /home. /homeIst also ein separates Laufwerk, wäre das das Äquivalent zu beispielsweise E:unter Windows.

In beiden Fällen, Windows und *nix, sind Einhängepunkte separate Verzeichnisse. Der einzige Unterschied besteht darin, dass diese separaten Verzeichnisse in *nix Unterverzeichnisse von sind /, C:während in Windows jeder Einhängepunkt direkt unter dem eingehängt wird /, My Computersagen wir mal unter.

Aus Sicht des Benutzers besteht der Hauptvorteil darin, dass die Einbindungen vollständig transparent sind. Ich muss nicht wissen, dass sich das Verzeichnis /hometatsächlich auf einer separaten Partition befindet. Ich kann es einfach als normales Verzeichnis verwenden. In DOS müsste ich es stattdessen explizit mit dem Namen des Einbindungspunkts aufrufen, sagen wirE:\home

Externe Laufwerke werden in beiden Systemen auf ziemlich dieselbe Weise gemountet. Also D:für Windows und /mnt/cdromfür Linux. Jedes davon ist ein Verzeichnis, ich sehe da keinen wirklichen Unterschied. Wenn Sie unter Windows eine CD-ROM in Ihr Laufwerk einlegen, wird die Platte genauso gemountet D:wie unter Linux.

verwandte Informationen