La respuesta corta es que solo lo hace si tiene un respaldo de sistema de archivos físico /dev
(y si está utilizando una distribución moderna de Linux, probablemente no).
La respuesta larga sigue:
Todo esto se remonta a la filosofía original de UNIX de que todo es un archivo. Esta filosofía es parte de lo que hizo que UNIX fuera tan versátil, porque podía interactuar directamente con los dispositivos desde el espacio de usuario sin necesidad de tener un código especial en su aplicación para comunicarse directamente con el hardware físico.
Originalmente, /dev
era solo otro directorio con un nombre conocido donde colocaba los archivos de su dispositivo. Algunos sistemas UNIX aún adoptan este enfoque (creo que OpenBSD todavía lo hace), y generalmente puede saber si un sistema es así porque tendrá muchos archivos de dispositivo para dispositivos que el sistema no tiene realmente (por ejemplo, archivos para cada posible partición en cada disco posible). Esto ahorra espacio en memoria y tiempo en el arranque a costa de usar un poco más de espacio en disco, lo cual fue una buena compensación para los sistemas iniciales porque generalmente tenían mucha memoria y no eran muy rápidos. Esto generalmente se conoce como tener una estática /dev
.
En los sistemas Linux modernos (y creo que también FreeBSD y posiblemente versiones recientes de Solaris), /dev
es un sistema de archivos temporal en memoria poblado por el núcleo (o udev si usa Systemd, porque no confían en que el núcleo haga casi nada) . Esto ahorra algo de espacio en disco al precio de algo de memoria (generalmente menos de unos pocos MB) y una sobrecarga de procesamiento muy pequeña. También tiene una serie de otras ventajas, siendo una de las más grandes que es más fácil detectar hardware conectado en caliente. Esto generalmente se conoce como tener una dinámica /dev
.
Sin embargo, en ambos casos, se accede a los nodos del dispositivo a través de la capa VFS normal, lo que por definición significa que tienen que tener un inodo (incluso si es virtual y simplemente existe para que cosas como stat()
funcionen como se supone.) Desde una perspectiva práctica, esto tiene un impacto cero en los sistemas que usan una dinámica /dev
porque solo almacenan los inodos en la memoria o los generan según sea necesario, y un impacto cercano a cero donde /dev
es estático porque los inodos ocupan casi cero espacio en el disco y la mayoría de los sistemas de archivos no tienen límite superior ellos o aprovisionarlos mucho más de lo que cualquiera pueda necesitar.