¿Cómo lee Linux un archivo / cómo se recuperan los datos?

Primero y más importante está escrito a la vanguardia.
Este artículo continuará actualizándose. Estoy aprendiendo el multiproceso multiproceso de Linux del Sr. Zhu Youpeng, que es la comprensión más simple de Linux_os

Proceso de lectura de archivos de Linux

Eficiencia de E / S de archivos y E / S estándar

En Linux, se llama API, en lenguaje C se llama función de biblioteca

(1) File IO se refiere a las funciones de API de abrir, cerrar, escribir, leer y otras de las que estamos hablando actualmente

Constituye un sistema de lectura y escritura de archivos, este sistema puede completar muy bien la lectura y escritura de archivos, pero la eficiencia no es la más alta.

(2) Las funciones de la biblioteca de lenguaje de la capa de aplicación C proporcionan una lista de funciones que se utilizan para leer y escribir archivos, denominada IO estándar.

E / S estándar consta de una serie de funciones de biblioteca C (fopen, fclose, fwrite, fread),

Estas funciones estándar de E / S en realidad están encapsuladas por archivo IO

(De hecho, fopen llama a abrir, y fwrite usa escritura para completar la escritura del archivo).

Después de encapsular la E / S estándar, es principalmente para agregar un búfer de mecanismo de búfer en la capa de aplicación .

De esta forma , el contenido que escribimos a través de fwrite no ingresa directamente al buf en el kernel.

En su lugar, ingrese primero el búfer mantenido por la biblioteca de E / S estándar de la capa de aplicación.

Luego, la propia biblioteca de E / S estándar elige un buen momento de acuerdo con el mejor recuento de una sola escritura del sistema operativo para completar la escritura buf en el kernel

(El buf en el kernel se selecciona luego de acuerdo con las características del disco duro y finalmente se escribe en el disco duro).

Como se muestra en la figura: el
Flujo de documentos
primer búfer está en la capa de la aplicación y el segundo búfer está en el kernel.

Después de hablar sobre el proceso de lectura de archivos, echemos un vistazo a cómo se almacena el archivo en el disco duro:

Almacenamiento de archivos en disco duro

(1) Los archivos generalmente se almacenan en el disco duro Los archivos almacenados en el disco duro se almacenan en una forma fija, que llamamos archivos estáticos.

(2) Un disco duro se puede dividir en dos áreas principales:

Una es la entrada de la tabla de administración de contenido del disco duro y la otra es el área donde se almacena realmente el contenido.

Cuando el sistema operativo accede al disco duro, primero lee la tabla de administración de contenido del disco duro.

Busca la información a nivel de sector del archivo al que queremos acceder,

Luego use esta información para consultar el área donde realmente se almacena el contenido, y finalmente obtenga el archivo que queremos.

(3) La primera información que obtiene el sistema operativo es el nombre del archivo y el resultado final es el contenido del archivo.

El primer paso es consultar la tabla de administración de contenido del disco duro, que registra información diversa de cada archivo en unidades de archivos.

Cada archivo tiene una lista de información (lo llamamos inodo, i-nodo, que es esencialmente una estructura.
Esta estructura tiene muchos elementos. Cada elemento registra cierta información sobre el
archivo, incluido el nombre del archivo y el archivo en el disco duro. Número de sector correspondiente, número de bloque y otras cosas ...)

Enfatice: La administración del disco duro se basa en archivos, cada archivo tiene un inodo,

Cada inodo tiene un número digital, correspondiente a una estructura, y se registra información diversa en la estructura.

Archivos abiertos y vnodes en memoria

(1) La ejecución de un programa es un proceso y el archivo que abrimos en el programa pertenece a un proceso.

Cada proceso tiene una estructura de datos que se utiliza para registrar toda la información de este proceso (llamada tabla de información del proceso),

Un puntero en la tabla apuntará a una tabla de administración de archivos,

La tabla de administración de archivos registra todos los archivos abiertos por el proceso actual y su información relacionada.

El índice utilizado para indexar cada archivo abierto en la tabla de administración de archivos es el descriptor de archivo fd,

Lo que finalmente encontramos es una estructura de administración vnode del archivo abierto

(2) Un vnode registra diversa información sobre un archivo abierto,

Y solo necesitamos saber el fd de este archivo,

Puede encontrar fácilmente el vnode de este archivo y realizar varias operaciones en este archivo.
conclusión

  1. Cree un proceso, obtenga una tabla de información del proceso
  2. Obtenga el fd del archivo de acuerdo con la ubicación del archivo almacenado en el disco duro (descripción del archivo)
  3. Mientras se abre un archivo, se crea una tabla de administración de archivos vnode, que registra información diversa del archivo abierto
  4. Con la información anterior, puede leer y escribir el archivo.
  5. Para evitar múltiples accesos al hardware, se establece un mecanismo de caché, cada caché es de 2M y la ubicación que se desea modificar se ubica a través de la función lseek.
  6. Dos procesos comparten la realización del mismo archivo: el atributo o_append.

Principios de recuperación de datos

Póngase en contacto con la práctica habitual, cuando formatea el disco duro (disco U), encuentra que hay: formato rápido y formato de bajo nivel.

El formateo rápido es muy rápido. Solo se tarda 1 segundo en formatear un disco U de 32 GB. El formateo normal es lento.

¿La diferencia entre estos dos? De hecho, el formato rápido solo elimina la tabla de administración de contenido del disco duro (inodo) en el disco U.

El contenido real almacenado no ha cambiado. Este contenido formateado puede recuperarse.

El formato de nivel inferior es difícil de recuperar, necesita ser recuperado a través de una memoria flash, que es muy costosa.

Por favor critica y corrige

terminado

Supongo que te gusta

Origin blog.csdn.net/Vast_Wang/article/details/102263198
Recomendado
Clasificación