¿Por qué el sistema de archivos de Linux está diseñado como un único árbol de directorios?

¿Por qué el sistema de archivos de Linux está diseñado como un único árbol de directorios?

¿Alguien puede explicar por qué Linux está diseñado como un árbol de directorio único?

Mientras que en Windows podemos tener varias unidades como C:\y D:\, en Unix hay una única raíz. ¿Alguna razón específica?

Respuesta1

Dado que el sistema de archivos Unix es anterior a Windows por muchos años, se puede reformular la pregunta como "¿por qué Windows usa un designador separado para cada dispositivo?".

Un sistema de archivos jerárquico tiene la ventaja de que cualquier archivo o directorio se puede encontrar como hijo del directorio raíz. Si necesita mover datos a un nuevo dispositivo o a un dispositivo de red, la ubicación en el sistema de archivos puede permanecer igual y la aplicación no notará la diferencia.

Suponga que tiene un sistema donde el sistema operativo es estático y hay una aplicación que tiene altos requisitos de E/S. Puede montar /usr como de solo lectura y colocar /opt (si la aplicación se encuentra allí) en unidades SSD. La jerarquía del sistema de archivos no cambia. En Windows esto es mucho más difícil, particularmente con aplicaciones que insisten en vivir en C:\Program Files\

Respuesta2

Esto se debe en parte a razones históricas y en parte a que así tiene más sentido.

multics

multicsfue el primer sistema operativo en introducir elsistema de archivos jerárquicocomo lo conocemos hoy, con directorios que pueden contener directorios. Citando"Un sistema de archivos de uso general para almacenamiento secundario"por RC Daley y PG Neumann:

La sección 2 del artículo presenta la estructura jerárquica de los archivos, que permite un uso flexible del sistema. Esta estructura contiene capacidades suficientes para asegurar la versatilidad. (…)

Para facilitar la comprensión, la estructura de archivos puede considerarse como un árbol de archivos, algunos de los cuales son directorios. Es decir, con una excepción, cada archivo (por ejemplo, cada directorio) se encuentra directamente apuntado por exactamente una rama en exactamente un directorio. La excepción es el directorio raíz, o raíz, en la raíz del árbol. Aunque no se señala explícitamente desde ningún directorio, la raíz está implícitamente señalada por una rama ficticia que el sistema de archivos conoce. (…)

En cualquier momento, se considera que un usuario está operando en algún directorio, llamado directorio de trabajo. Puede acceder a un archivo efectivamente señalado por una entrada en su directorio de trabajo simplemente especificando el nombre de la entrada. Más de un usuario puede tener el mismo directorio de trabajo al mismo tiempo.

Como en muchos otros aspectos, Multics buscó flexibilidad. Los usuarios pueden trabajar en un subárbol del sistema de archivos e ignorar el resto, y aun así beneficiarse de los directorios para organizar sus archivos. Los directorios también se usaban para el control de acceso: el atributo READ permitía a los usuarios enumerar los archivos en un directorio, y el atributo EXECUTE permitía a los usuarios acceder a los archivos en ese directorio (esto, como muchas otras características, perduró en Unix).

Multics también siguió el principio de tener un único grupo de almacenamiento. El documento no se detiene en este aspecto. Un único grupo de almacenamiento combinaba bien con el hardware de la época: no había dispositivos de almacenamiento extraíbles, al menos ninguno que interesara a los usuarios. Multics tenía un grupo de almacenamiento de respaldo separado, pero esto era transparente para los usuarios.

Unix

Unix se inspiró mucho en Multics, pero apuntaba a la simplicidad, mientras que Multics apuntaba a la flexibilidad.

Un único sistema de archivos jerárquico se adaptaba bien a Unix. Al igual que con Multics, los grupos de almacenamiento generalmente no eran relevantes para los usuarios. Sin embargo, había dispositivos extraíbles y Unix los expuso a los usuarios a través delmountyumountcomandos (reservados al “superusuario”, es decir, al administrador). En“El sistema de tiempo compartido UNIX”, Dennis Ritchie y Ken Thompson explican:

Aunque la raíz del sistema de archivos siempre se almacena en el mismo dispositivo, no es necesario que toda la jerarquía del sistema de archivos resida en este dispositivo. Hay una solicitud de montaje del sistema con dos argumentos: el nombre de un archivo ordinario existente y el nombre de un archivo especial cuyo volumen de almacenamiento asociado (por ejemplo, un paquete de discos) debe tener la estructura de un sistema de archivos independiente que contenga su propia jerarquía de directorios. . El efecto del montaje es hacer que las referencias al archivo hasta ahora ordinario se refieran al directorio raíz del sistema de archivos en el volumen extraíble. En efecto, mount reemplaza una hoja del árbol jerárquico (el archivo ordinario) por un subárbol completamente nuevo (la jerarquía almacenada en el volumen extraíble). Después del montaje, prácticamente no hay distinción entre los archivos del volumen extraíble y los del sistema de archivos permanente. En nuestra instalación, por ejemplo, el directorio raíz reside en una pequeña partición de una de nuestras unidades de disco, mientras que la otra unidad, que contiene los archivos del usuario, se monta mediante la secuencia de inicialización del sistema. Un sistema de archivos montable se genera escribiendo en su archivo especial correspondiente. Hay disponible un programa de utilidad para crear un sistema de archivos vacío, o simplemente se puede copiar un sistema de archivos existente.

El sistema de archivos jerárquico también tiene la ventaja de concentrar la complejidad de administrar múltiples dispositivos de almacenamiento en el kernel. Esto significó que el kernel era más complejo, pero como resultado todas las aplicaciones eran más simples. Dado que el kernel tiene que preocuparse por los dispositivos de hardware, pero la mayoría de las aplicaciones no, este es un diseño más natural.

ventanas

Windows remonta su ascendencia a dos linajes:VMS, un sistema operativo diseñado originalmente paraVAXminicomputadora yCP/M, un sistema operativo diseñado para las primeras microcomputadoras Intel.

VMS tenía un sistema de archivos jerárquico distribuido,Archivos-11. En Archivos-11, elruta completa a un archivocontiene un nombre de nodo, una designación de cuenta en ese nodo, un nombre de dispositivo, una ruta de árbol de directorios, un nombre de archivo, un tipo de archivo y un número de versión. VMS tenía un poderosonombre lógicocaracterística que permite definir accesos directos a directorios específicos, por lo que los usuarios rara vez tendrían que preocuparse por la ubicación "real" de un directorio.

CP/M fue diseñado para computadoras con 64kB de RAM y una unidad de disquete, por lo que optó por la simplicidad. No había directorios, pero una referencia de archivo podría incluir una indicación de unidad ( A:o B:).

CuandoMS-DOS2.0 introdujo directorios, lo hizo con una sintaxis que era compatible con MS-DOS 1 que a su vez seguía CP/M. Así que las rutas estaban basadas en una unidad con un nombre de una sola letra. (Además, el carácter de barra /se usó en VMS y CP/M para iniciar las opciones de la línea de comando, por lo que se tuvo que usar un carácter diferente como separador de directorio. Esta es la razón por la que DOS y Windows posterior usan barra invertida, aunque algunos componentes internos también admiten barra diagonal ).

Windows mantuvo la compatibilidad con DOS y el enfoque VMS, por lo que mantuvo la noción de letras de unidad incluso cuando se volvieron menos relevantes. Hoy, bajo el capó, Windows usaUNCcaminos (desarrollado originalmentepor Microsoft e IBM paraOS/2, de ascendencia relacionada). Aunque esto está reservado para usuarios avanzados (probablemente debido al peso del historial), Windows permite el montaje a través depuntos de análisis.

Respuesta3

No existen problemas de seguridad detrás de tener un único árbol de directorios.

Los chicos que diseñaron Unix tenían mucha experiencia con sistemas operativos que requerían que los usuarios supieran qué dispositivo físico contenía un recurso determinado. Dado que parte del propósito de un sistema operativo es crear una máquina abstracta sobre hardware real, pensaron que era mucho más sencillo prescindir de direccionar los recursos por su ubicación física y decidieron poner todo en un solo árbol de nombres.

Esta es sólo una parte del genio detrás deldiseño de unix.

Respuesta4

Tanto *nix como Windows montan sus unidades. En Windows, estos se montan automáticamente en puntos de montaje que, de forma predeterminada, están en orden alfabético ascendente. Estos valores predeterminados son:

  • A:y B:=> disquetes
  • C:=> primera partición del primer disco duro
  • D:=> siguiente partición o siguiente disco duro o unidad de CD/DVD si no hay otras particiones presentes.

Cada uno de estos puntos de montaje es un directorio.

En *nix, los puntos de montaje los decide el usuario. Por ejemplo, tengo una partición montada como /y otra como /home. Entonces, /homees una unidad separada, sería el equivalente a decir E:en Windows.

En ambos casos, Windows y *nix, los puntos de montaje son directorios separados. La única diferencia es que en *nix, estos directorios separados son subdirectorios de /, C:mientras que en Windows, cada punto de montaje se monta directamente debajo de /, My Computerdigamos debajo.

Desde la perspectiva del usuario, la principal ventaja es que los soportes son completamente transparentes. No necesito saber que el directorio /homeestá en realidad en una partición separada. Puedo usarlo como un directorio normal. En cambio, en DOS, tendría que llamarlo explícitamente por el nombre del punto de montaje, digamosE:\home

Las unidades externas se montan prácticamente de la misma manera en ambos sistemas. Digamos D:para Windows y /mnt/cdrompara Linux. Cada uno de estos es un directorio, realmente no veo la diferencia. Cuando coloca un CDROM en su unidad en Windows, el disco se monta D:como en Linux.

información relacionada