Estructura del Sistema de Archivos Linux: Directorios y Asignación de Bloques

Clasificado en Informática

Escrito el en español con un tamaño de 6,18 KB

Directorios bajo la Raíz (/) en Linux

El directorio raíz es la base de la jerarquía del sistema de archivos. A continuación se describen algunos de los directorios estándar más importantes que contiene:

  • /dev: Contiene los archivos de dispositivos que representan el hardware del sistema.
  • /etc: Alberga los archivos de configuración específicos del sistema y de las aplicaciones instaladas.
  • /home: Contiene los directorios personales (o home) de los usuarios del sistema.
  • /lib: Incluye bibliotecas compartidas esenciales para los programas ubicados en /bin y /sbin.
  • /tmp: Destinado a archivos temporales que generalmente se eliminan al reiniciar el sistema.
  • /usr: Representa una segunda jerarquía principal, conteniendo programas, bibliotecas y documentación compartida de usuario (generalmente de solo lectura).
  • /bin: Contiene comandos (binarios) esenciales que pueden ser ejecutados por todos los usuarios.
  • /sbin: Contiene comandos (binarios) esenciales del sistema, típicamente ejecutados por el superusuario (root).
  • /boot: Incluye los archivos necesarios para el proceso de arranque del sistema, como el kernel y el gestor de arranque.
  • /mnt: Punto de montaje tradicional para sistemas de archivos montados temporalmente de forma manual.
  • /media: Punto de montaje estándar para medios extraíbles como discos duros externos, unidades de DVD, pendrives (memorias USB), etc.
  • /var: Almacena datos variables, como archivos de registro (logs), colas de correo electrónico, bases de datos, datos de servidores web, etc.
  • /root: Es el directorio personal del usuario administrador del sistema (superuser o root).

Referencia a Archivos

Existen dos métodos principales para especificar la ubicación de un archivo:

  • Referencia Absoluta: Proporciona la ruta completa desde el directorio raíz (/) hasta el archivo.
    • Ejemplo en Linux: /home/miguel/claves/arch1.txt
  • Referencia Relativa: Considera el directorio actual (directorio de trabajo) como punto de partida para localizar el archivo.
    • Ejemplo en Linux: Si estamos ubicados en el directorio /home/miguel, para acceder al archivo mencionado anteriormente, usaríamos la ruta relativa claves/arch1.txt.

Implementación del Sistema de Archivos (SA)

Windows

  • El árbol de directorios es independiente para cada dispositivo lógico (por ejemplo, C:, D:, H:).
  • El usuario generalmente necesita conocer la letra asignada al dispositivo para acceder a su contenido.

Unix/Linux

  • Existe un único árbol de directorios unificado para todo el sistema, que comienza en la raíz (/).
  • El Sistema Operativo (SO) abstrae la existencia de dispositivos físicos, presentándolos como parte del árbol de directorios.
  • Los dispositivos se representan mediante archivos especiales ubicados típicamente en /dev (por ejemplo, /dev/sda1, /dev/hda2).

Servidor de Archivos (Componente del SO)

Este componente es el encargado de la gestión de los archivos y directorios. Sus funciones principales incluyen:

  • Dividir el espacio físico del disco en unidades lógicas de asignación, denominadas bloques.
  • Determinar cómo se asignan los bloques del disco a cada archivo y mantener un registro detallado de dicha asignación (metadatos).
  • Cuando un proceso solicita espacio en disco para un archivo, el servidor de archivos le entrega una cantidad adecuada de bloques disponibles.

Métodos de Asignación de Bloques

Existen diferentes estrategias para asignar los bloques de disco a los archivos:

  • Asignación contigua
  • Asignación mediante lista ligada (o enlazada)
  • Asignación mediante lista ligada utilizando una tabla de índices (ej. FAT)
  • Nodos índice (i-nodes)

Asignación Contigua

En este método, todos los bloques asignados a un archivo ocupan un área adyacente (consecutiva) en el disco.

  • Ventajas:
    • Implementación relativamente sencilla.
    • Excelente rendimiento para operaciones de Entrada/Salida (E/S) secuenciales, ya que minimiza el movimiento del cabezal del disco.
  • Desventajas:
    • Requiere conocer el tamaño máximo que alcanzará el archivo en el momento de su creación para reservar el espacio.
    • Sufre de fragmentación externa: con el tiempo, el espacio libre en el disco se divide en pequeños huecos no contiguos, dificultando la asignación de nuevos archivos grandes.

Asignación por Lista Ligada (Enlazada)

Cada archivo se representa como una lista enlazada de bloques de disco, que pueden estar dispersos físicamente.

  • Cada bloque contiene, además de los datos, un puntero (una dirección) que indica la ubicación del siguiente bloque perteneciente al mismo archivo. El último bloque tiene un puntero nulo.
  • Ventajas:
    • Permite utilizar eficientemente todos los bloques libres del disco, sin importar si son contiguos o no.
    • No produce fragmentación externa.
  • Desventajas:
    • El acceso secuencial es eficiente (se sigue la cadena de punteros), pero el acceso aleatorio (saltar directamente a un bloque específico) es lento, ya que requiere recorrer la lista desde el principio hasta el bloque deseado.
    • Parte del espacio de cada bloque se utiliza para almacenar el puntero, reduciendo el espacio disponible para los datos del archivo. Esto puede ser menos eficiente si el tamaño útil restante no es óptimo (por ejemplo, no una potencia de dos, si eso es relevante para el sistema).

Entradas relacionadas: