[Notas] Sistema operativo (11) -Implementación del sistema de archivos

Prefacio

El sistema de archivos proporciona un mecanismo para el almacenamiento en línea y el acceso al contenido del archivo, incluidos los datos y los programas. El sistema de archivos reside permanentemente en el almacenamiento externo, que puede almacenar permanentemente grandes cantidades de datos.

Este capítulo analiza principalmente cómo almacenar y acceder a archivos en el almacenamiento externo más comúnmente utilizado, a saber, el disco. Analice el uso de varios métodos para organizar archivos, asignar espacio en disco, restaurar espacio libre, rastrear la ubicación de los datos y otras partes del sistema operativo para proporcionar interfaces de memoria externa y problemas de rendimiento.

1. Estructura del sistema de archivos

Por qué elegir el disco como espacio de almacenamiento externo para mantener el sistema:

  • Se puede reescribir in situ
  • Se puede acceder directamente a cualquier información del disco.
  • Económico.
  • Discutiremos la estructura del disco en detalle en el próximo capítulo.

Memoria y disco: para mejorar la eficiencia de E / S, la E / S de disco y memoria directa se transfiere en unidades de bloques en lugar de bytes realizados. Cada bloque es uno o más sectores. Dependiendo de la unidad de disco, el sector varía de 32 a 4096B, generalmente 512B.

El sistema de archivos suele tener un diseño jerárquico:

Inserte la descripción de la imagen aquí

  • Equipo: equipo de E / S, incluidas impresoras, teclados, etc.
  • Control de E / S: está compuesto por un controlador de dispositivo y un controlador de interrupciones para realizar la transmisión de información entre la memoria y el disco.
  • Sistema de archivos básico: solo necesita enviar comandos generales al controlador de dispositivo apropiado para leer y escribir bloques físicos en el disco. Cada bloque se identifica por su dirección de disco numérica.
  • Módulo de organización de archivos: Conozca el archivo y sus bloques físicos y lógicos. Al conocer el tipo de asignación de archivos utilizado y la ubicación del archivo, el módulo de organización de archivos puede convertir la dirección del bloque lógico en la dirección del bloque físico utilizada por el sistema de archivos básico.
  • Sistema de archivos lógicos: el sistema de archivos lógicos gestiona los metadatos. Los metadatos incluyen todas las estructuras de datos del sistema de archivos, pero no incluyen los datos reales. El sistema de archivos lógico administra la estructura de directorios de acuerdo con el nombre de archivo de símbolo dado y proporciona la información que necesita el módulo de organización de archivos. El sistema de archivos lógico mantiene la estructura de archivos a través del bloque de control de archivos .
  • Bloque de control de archivos (FCB): contiene información del archivo, incluido el propietario, los permisos y la ubicación del contenido del archivo.
  • Programa de usuario

2. Implementación del sistema de archivos

1. Información general

Los diferentes sistemas operativos tienen diferentes sistemas de archivos, pero aún tienen algunas reglas generales

Regla general parte 1:

  • Bloque de control de arranque (para cada volumen): ** Contiene la confianza que el sistema necesita para arrancar el sistema operativo desde ese volumen. Si el disco no tiene un sistema operativo, entonces el contenido de este bloque está vacío. Suele ser la primera pieza del volumen. El sistema de archivos UFS se llama bloque de arranque **, el sistema de archivos NTFS se llama sector de arranque de partición .
  • Bloque de control de volumen (para cada volumen): ** Contiene información detallada sobre el volumen, como el número de particiones, el tamaño del bloque, el número y punteros de bloques libres, el número y punteros de FCB libres, etc. El sistema de archivos UFS se denomina superbloque y el sistema de archivos NTFS se denomina tabla maestra de archivos **.
  • Estructura de directorios: la estructura de directorios de cada sistema de archivos se utiliza para organizar archivos. En UFS, contiene el nombre del archivo y el número de nodo de índice relacionado . Se almacena en la tabla de archivos maestra en NTFS .

La información en memoria se utiliza para la administración del sistema de archivos y se almacena en caché para mejorar el rendimiento. Estos datos se cargan cuando se instala el sistema de archivos y se descartan cuando se descarga.

Reglas generales parte 2:

  • Una tabla de instalación en memoria, que incluye información sobre todos los volúmenes instalados.
  • Un caché de estructura de directorio en memoria, que se utiliza para almacenar la información del directorio visitado recientemente.
  • La tabla de archivos abiertos de todo el sistema incluye copias FCB y otra información para cada archivo abierto.
  • La tabla de archivos abiertos de un solo proceso incluye un puntero a la entrada correspondiente en la tabla de archivos abiertos de todo el sistema y otra información.

Composición típica de FCB:
Inserte la descripción de la imagen aquí
Uso de FCB: para crear un nuevo archivo, la aplicación llama al sistema de archivos lógico. El sistema de archivos lógico conoce la forma de la estructura de directorios. Para crear un nuevo archivo, asignará un nuevo FCB (si la implementación del sistema de archivos ha creado todos los FCB cuando se crea el sistema de archivos, entonces solo se asigna uno del conjunto FCB libre). Luego, el sistema lee la información del catálogo en la memoria, actualiza el catálogo y la PCB con el nuevo nombre de archivo y escribe el resultado en el disco.

Estructura del sistema de archivos en la memoria: archivo abierto a la izquierda, archivo leído a la derecha
Inserte la descripción de la imagen aquí

2. Partición e instalación

** Los discos se clasifican como crudos (cocidos): **

  • El disco sin formato se refiere a un disco sin un sistema de archivos, porque no existe un sistema de archivos adecuado para almacenar datos específicos y algunas bases de datos utilizan discos sin formato.
  • Un disco cocinado es un disco que contiene un sistema de archivos.

Información de arranque: la información de arranque se puede almacenar en cada partición. Tiene su propio formato, porque el sistema no tiene un controlador de dispositivo del sistema de archivos en el momento del arranque.

Partición raíz: incluye el kernel del sistema operativo y otros archivos del sistema, que se cargan en la memoria en el momento del arranque.

3. Sistema de archivos virtual (sistema de archivos virtual, VFS)

El sistema de archivos virtual es una capa de interfaz (interfaz VFS) entre el sistema de archivos físico y el servicio del sistema de archivos, que abstrae los detalles deseados de cada sistema de archivos físico y proporciona una llamada al sistema unificada para estos diferentes sistemas de archivos. interfaz.

  • La capa VFS define una interfaz VFS clara para separar el funcionamiento general del sistema de archivos de la implementación específica.
  • VFS proporciona un mecanismo para identificar de forma exclusiva un archivo en la red.
  • VFS puede distinguir entre archivos locales y archivos remotos, y puede distinguir aún más diferentes archivos locales según los tipos de archivo.

Inserte la descripción de la imagen aquí

Tres, realización de directorio

1. Lista lineal

La forma más sencilla de implementar un directorio es utilizar una lista lineal de nombres de archivos de almacenamiento y punteros de bloques de datos. Este método es sencillo de programar, pero su ejecución requiere mucho tiempo.

2. Tabla hash

Las funciones hash son fáciles de encontrar, pero se producirán conflictos que reducirán la eficiencia. Pero sigue siendo mejor que las listas lineales.

Cuatro, método de distribución

Aquí se explica cómo se almacena el archivo en el disco.

1. Distribución continua

El método de asignación continua requiere que cada archivo ocupe un conjunto de bloques independientes en el disco. La estrategia de asignación se puede combinar con la estrategia de asignación de memoria en el Capítulo 8 (primero, óptimo, máximo).

Ventajas: simple de implementar, admite acceso secuencial y acceso directo, velocidad de acceso rápida, alta eficiencia, adecuado para la situación en la que el contenido del archivo no se modifica.

Desventajas: Debido a que los archivos se asignan a un espacio contiguo, el tamaño del archivo es difícil de expandir; se producirá una fragmentación externa.

  • Resuelva el problema de la fragmentación externa: transfiera a otro disco, combine el espacio libre y luego transfiéralo nuevamente. Pero habrá tiempo de inactividad .
  • Resuelve el problema de la imposibilidad de expandirse: a través del puntero, cuando el espacio no es suficiente, se amplía otro espacio. El espacio original se busca para el espacio de expansión a través del puntero.

Asignación continua de espacio en disco:
Inserte la descripción de la imagen aquí

2. Asignación de enlaces

La asignación de enlaces resuelve todos los problemas de la asignación continua. Mediante la asignación de vínculos, cada archivo es una lista vinculada de bloques de disco y los bloques de disco se distribuyen en cualquier lugar del disco.

Ventajas: implementación simple, solo se requiere la primera dirección; no hay problema de fragmentación externa, el archivo se puede expandir y no es necesario declarar el tamaño del archivo por adelantado.

Desventajas:

  • Cada bloque de archivo tiene un puntero y ocupa espacio;
  • No se puede leer directamente;
  • Poca confiabilidad, la pérdida de un bloque de datos intermedio hará que la cadena se rompa;

Solución:

  • Reduzca la ocupación del espacio del puntero: agrupe varios bloques en grupos y asígnelos por grupo en lugar de por bloque (pero esto aumentará la fragmentación interna).
  • Aumente la confiabilidad: use la tabla de asignación de archivos (FAT) . El comienzo de cada volumen se utiliza para almacenar FAT. Cada bloque tiene una entrada en la tabla FAT, que puede indexarse ​​por el número de bloque. El uso de FAT es similar a una lista vinculada. La entrada del directorio contiene el número de bloque del primer bloque del archivo. La entrada FAT indexada por el número de bloque contiene el número de bloque del siguiente bloque del archivo. Esta cadena continuará hasta el último bloque, y el valor de la entrada FAT correspondiente a este bloque es el valor de fin de archivo.

Asignación de conexión de espacio en disco:
Inserte la descripción de la imagen aquí
FAT:
Inserte la descripción de la imagen aquí
Ventajas de FAT: leyendo la tabla FAT en la memoria de una vez a través de E / S, se puede obtener acceso aleatorio a cualquier posición del archivo; alta estabilidad.

Deficiencias de FAT: si la tabla FAT se lee en la memoria sin usar el caché, hará que se acceda primero a FAT para cada acceso, lo que resultará en un tiempo de acceso prolongado.

3. Asignación de índices

La asignación vinculada resuelve el problema de la fragmentación externa y la declaración de tamaño de la asignación continua. Sin embargo, si no se utiliza FAT, la asignación de enlaces no puede admitir de forma eficaz el acceso directo, ya que los punteros y los bloques se distribuyen por todo el disco y deben leerse en orden.

Asignación de índices: este problema se resuelve juntando todos los punteros, es decir, mediante bloques de índice .

Ventajas: admite acceso secuencial, acceso aleatorio; el archivo se puede expandir, no es necesario declarar el tamaño del archivo por adelantado; alta estabilidad; sin fragmentación externa.

Desventaja: desperdicio de espacio. Por ejemplo, cada archivo tiene solo uno o dos bloques de longitud. Con la asignación de enlaces, solo se desperdicia un puntero por bloque. Con la asignación de índices, aunque solo uno o dos punteros no están vacíos, se debe asignar un bloque de índice completo.

problema resuelto:

  • Para procesar archivos grandes, se pueden vincular varios bloques de índice o se pueden usar índices de varios niveles.
  • Para evitar que los archivos pequeños desperdicien espacio, se puede utilizar un esquema de combinación. Por ejemplo , el inodo en el sistema de archivos UNX .
    Inserte la descripción de la imagen aquí
    Inode en UNX:
    Inserte la descripción de la imagen aquí

Cinco, gestión del espacio libre

1. vector de bits

Vector de bits: exprese el espacio libre como un mapa de bits, cada espacio libre está representado por 1 bit, si está libre, es 1 y se ha asignado como 0. Por ejemplo, 10101101010100110110101010110.

Ventajas: relativamente simple de implementar; fácil de generar archivos con asignación continua de espacio.

Desventajas: si hay demasiados bloques de disco, el mapa de bits correspondiente será muy grande.

2. Lista vinculada

Lista vinculada: conecte todos los bloques de disco libres con una lista vinculada y almacene el puntero al primer bloque libre en una ubicación especial del disco, y también almacénelo en la caché.

Ventajas: poco espacio de memoria ocupado al realizar consultas (leer la mayor parte es suficiente)

Desventajas: poca fiabilidad, dificultad para encontrar muchos bloques libres. Y la búsqueda lleva mucho tiempo.

3. Grupo

Para la lista enlazada libre, las direcciones de n bloques libres se pueden almacenar en el primer bloque libre, los siguientes n-1 bloques están realmente vacíos y el último bloque contiene las direcciones de otros n bloques libres.
Ventajas: La dirección de una gran cantidad de bloques libres se puede encontrar rápidamente.

4. Cuenta

Por lo general, hay varios bloques contiguos que deben asignarse o liberarse al mismo tiempo, especialmente cuando se utilizan agrupaciones y asignaciones contiguas. Por tanto, se puede registrar la dirección del primer bloque y el número n de bloques libres consecutivos que siguen al primer bloque.

De esta forma, cada entrada en la tabla de espacio libre incluye la dirección del disco y el número. Aunque cada entrada requerirá más espacio que el original, la longitud total de la tabla será más corta, porque el número de bloques consecutivos suele ser mayor que 1.

Supongo que te gusta

Origin blog.csdn.net/qq_41882686/article/details/112915794
Recomendado
Clasificación