GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum muss Linux sowohl `/dev/cdrom` als auch `/media/cdrom` haben?

/media/cdrom ist eine Konvention für den Einhängepunkt , während /dev/cdrom ist das spezielle Gerät, das auf ersterem montiert werden könnte.

Sie brauchen beide, weil sie unterschiedlichen Zwecken dienen:Die meisten Anwendungen lesen nicht direkt vom speziellen Gerät, sondern können von einem Dateisystem (etwas, das gemountet ist) lesen.


(Danke für so viele Antworten auf meine Frage. Nachdem ich eine Weile im Internet gesucht habe, möchte ich mein eigenes Verständnis teilen.)

Laut hier:

In Unix-ähnlichen Betriebssystemen ist eine Gerätedatei oder spezielle Datei eine Schnittstelle für einen Gerätetreiber die in einem Dateisystem so erscheint, als wäre es eine gewöhnliche Datei.

Laut hier:

Der Mount-Befehl dient zum Anhängen des Dateisystems gefunden auf einem Gerät zum großen Dateibaum.

Ich denke also, dass es hier zwei verschiedene Ebenen der Software-Abstraktion gibt:

  • /dev/cdrom ist eine spezielle Gerätedatei. Es abstrahiert die CD-ROM-Hardware als Block-IO-Gerät. Diese Abstraktion wird vom Gerätetreiber bereitgestellt.

  • /media/cdrom ist ein Einhängepunkt für ein Dateisystem. Es bietet also eine höhere Abstraktionsebene der CD-ROM-Hardware, d. h. als Dateisystem. Wie das ISO-9660-Dateisystem. Und diese Abstraktion wird vom Dateisystemtreiber bereitgestellt.

Also im Grunde 2 verschiedene Dateispeicherorte für 2 verschiedene Abstraktionsebenen. Und in verschiedenen Szenarien benötigen wir möglicherweise andere. Ich denke, dass andere Betriebssysteme wie Windows auch so unterschiedliche Optionen bieten, nur dass Linux sie in einer einzigen Dateihierarchie vereinheitlicht.

(Ich denke, vielleicht sollte ich ein Experiment machen, indem ich C-Code unter Linux schreibe, um mit beiden /dev/cdrom zu interagieren und /media/cdrom . Und sehen, wie alles weitergeht.)

(Ich werde weiter lernen und mein Verständnis entsprechend verfeinern.)


Warum haben wir beide /dev/cdrom und /media/cdrom ?

Warum haben wir beide /dev/sda2 und /home ?

Grundsätzlich /dev/cdrom ist eine Datei . Wenn Sie darauf zugreifen, greifen Sie auf die einzelnen Bits und Bytes auf der CD zu (falls vorhanden). Während /media/cdrom ist ein Ordner . Wenn Sie darauf zugreifen, greifen Sie auf die Dateien zu auf der CD gespeichert.

Ebenso /dev/sda2 stellt den rohen Inhalt der zweiten Partition auf der ersten Festplatte dar. Diese würden Sie direkt anschreiben, wenn Sie z. B. die Partition formatieren möchten. (Die mkfs Programm öffnet buchstäblich /dev/sda2 oder was auch immer, und schreibt bestimmte Bitmuster darauf.) Dann mounten Sie /dev/sda2 bei, sagen wir, /home , und jetzt können Sie auf die eigentlichen Dateien zugreifen . Wenn Sie über den Einhängepunkt auf die Dateien zugreifen, liest und schreibt der Dateisystemtreiber die zugrunde liegende Gerätedatei.

Das ist einfach die Art und Weise, wie Unix Dinge tut.


Linux
  1. Warum brauchen wir einen Bootloader in einem eingebetteten Gerät?

  2. Warum brauchen wir die .so.1-Datei unter Linux?

  3. Warum listet Linux NVMe-Laufwerke als /dev/nvme0 anstelle von /dev/sda auf?

  4. Warum verwendet Linux eine Swap-Partition und keine Datei?

  5. Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0

Linux-Dateibefehl:Was macht er und wie wird er verwendet?

Linux:Unterschied zwischen /dev/console , /dev/tty und /dev/tty0?

Linux – Warum zeigt Linux sowohl mehr als auch weniger Speicher an, als ich physisch installiert habe?

Linux – Warum sind „/dev/ptmx“ und „/dev/pts/ptmx“ keine Gerätedateien?

Wie teilt man eine monolithische Partition in zwei, eine für `/` und eine für `/home`??

Warum muss ein RAID 10-Gerät initialisiert werden?