Die kurze Antwort lautet, dass dies nur dann der Fall ist, wenn Sie über ein physisches Dateisystem verfügen /dev
(und wenn Sie eine moderne Linux-Distribution verwenden, tun Sie dies wahrscheinlich nicht).
Die lange Antwort lautet:
Dies alles geht auf die ursprüngliche UNIX-Philosophie zurück, dass alles eine Datei ist. Diese Philosophie ist Teil dessen, was UNIX so vielseitig gemacht hat, da Sie direkt mit Geräten aus dem Benutzerbereich interagieren können, ohne dass in Ihrer Anwendung spezieller Code erforderlich ist, um direkt mit der physischen Hardware zu kommunizieren.
Ursprünglich /dev
war es nur ein weiteres Verzeichnis mit einem bekannten Namen, in dem Sie Ihre Gerätedateien ablegen. Einige UNIX-Systeme verfolgen diesen Ansatz immer noch (ich glaube, OpenBSD tut dies immer noch), und Sie können normalerweise feststellen, ob ein System so ist, da es viele Gerätedateien für Geräte enthält, über die das System nicht verfügt (z. B. Dateien für alle mögliche Partition auf jeder möglichen Festplatte). Dies spart Speicherplatz und Zeit beim Booten auf Kosten der Verwendung von etwas mehr Speicherplatz, was für frühe Systeme ein guter Kompromiss war, da sie im Allgemeinen sehr speicherbeschränkt und nicht sehr schnell waren. Dies wird allgemein als statisch bezeichnet /dev
.
Auf modernen Linux-Systemen (und ich glaube auch an FreeBSD und möglicherweise neueren Versionen von Solaris) /dev
handelt es sich um ein temporäres In-Memory-Dateisystem, das vom Kernel gefüllt wird (oder udev, wenn Sie Systemd verwenden, weil sie dem Kernel nicht vertrauen, fast alles zu tun). . Dies spart Speicherplatz zum Preis von etwas Speicher (normalerweise weniger als ein paar MB) und einen sehr geringen Verarbeitungsaufwand. Es hat auch eine Reihe anderer Vorteile, wobei einer der größten darin besteht, dass es einfacher ist, Hot-Plug-Hardware zu erkennen. Dies wird allgemein als dynamisch bezeichnet /dev
.
In beiden Fällen wird auf Geräteknoten jedoch über die reguläre VFS-Schicht zugegriffen, was per Definition bedeutet, dass sie über einen Inode verfügen müssen (auch wenn es sich um einen virtuellen handelt, der nur vorhanden ist, damit solche Dinge wie vorgesehen stat()
funktionieren. Aus praktischer Sicht Dies hat keine Auswirkungen auf Systeme, die eine Dynamik verwenden, /dev
da sie die Inodes nur im Speicher speichern oder nach Bedarf generieren, und nahezu keine Auswirkungen, wenn sie /dev
statisch sind, da Inodes nahezu keinen Speicherplatz auf der Festplatte belegen und die meisten Dateisysteme entweder keine Obergrenze haben sie oder Vorsorge weit mehr als irgendjemand jemals brauchen wird.