El proceso de implementación de múltiples archivos que se ejecutan simultáneamente en Linux

  

Hace poco, el sistema maneja este problema cuando un cliente le pide a diferentes usuarios que operen en el mismo archivo. Este artículo presentará brevemente el proceso de múltiples procesos bajo Linux y, al mismo tiempo, la operación del mismo archivo. Supongamos que hay tres procesos A, B y C que operan en el archivo a.txt. Un proceso debe leer los primeros a 100 caracteres del archivo, el proceso B debe leer la línea que contiene el carácter aa en el archivo y C debe escribir en el archivo a.txt " ABC ". La secuencia de inicio de los tres procesos es A, B y C.

[正文]

Una condición hipotética

1.1 Tres procesos
1, Supongamos que hay tres procesos A, B, C que operan en el archivo a.txt file 2, Un proceso para leer los primeros 1 a 100 caracteres del archivo; 3, proceso B para leer la línea que contiene el carácter aa en el archivo; 4, C para escribir en un archivo .txt " ABC "; H2> 1.2 Secuencia de inicio de proceso
1. La secuencia de inicio de los tres procesos es A, B, C;

Dos procesos

2.1 A inicio de proceso
Los pasos de ejecución de código del proceso A son los siguientes:

  1. Abrir el archivo a.txt
  2. Leer el contenido del archivo correspondiente a la condición

    Cuando se inicia el proceso A, al ejecutar el archivo a.txt " La tabla de administración (file_table [64]) asocia la tabla de punteros del proceso A con el i-node del archivo a.txt, y otorga al proceso A la autoridad y la capacidad para operar el archivo a.txt. Al ejecutar " leyendo el contenido del archivo de la condición correspondiente, el sistema cargará el archivo a.txt del disco duro en el búfer. En este proceso, la función correspondiente del núcleo solicitará un espacio de almacenamiento intermedio de "inactivo", y cargará el archivo a.txt desde el disco duro en el espacio de almacenamiento intermedio. Dado que la carga lleva tiempo, el espacio de almacenamiento intermedio se bloquea. El proceso A debe esperar a que se complete la carga antes de leer el contenido del archivo. En este punto, el proceso A se suspende, se establece en " estado de espera ininterrumpible ", el proceso del búfer espera a que el líder de la cola sea el proceso A.

    2.2 Inicio del proceso B B Los pasos para la ejecución del código del Proceso B son los siguientes:

    1. Abrir el archivo a.txt
    2. Lea el contenido de la condición correspondiente

      Cuando B Una vez que se inicie el proceso, ejecute " abra el archivo a.txt ". De manera similar, la tabla de administración de archivos (file_table [64]) asocia la tabla de punteros del proceso B con el nodo i del archivo a.txt, lo que le otorga al proceso B la autoridad y la capacidad para manipular el archivo a.txt. Es importante tener en cuenta que dado que los diferentes procesos operan en archivos de manera diferente, este proceso debe realizarse nuevamente. Sin embargo, como el nodo i del archivo a.txt se encontró cuando se ejecuta el proceso A, el proceso B no necesita realizar el nodo i que atraviesa el nodo i para encontrar un.txt. Al ejecutar " leyendo el contenido del archivo de la condición correspondiente, el sistema encuentra que el búfer de datos a cargar ya existe a través de la estructura de administración de la tabla hash, por lo que los datos ya no se cargan en el búfer desde el disco duro. En cambio, el número de referencias al búfer se incrementa en uno y el total es 2.
      (Tenga en cuenta que debido a que los tres procesos son la operación "" al mismo tiempo" en un archivo, el tiempo es muy corto, en este momento el archivo a.txt aún está en proceso de cargar el búfer desde el disco duro). En este momento, el proceso B también debe esperar El contenido del archivo solo se puede leer después de que se complete la carga. Por lo tanto, el proceso B también se suspende, se establece en "estado de espera ininterrumpible", el proceso del búfer espera a que la cabecera de la cola sea el proceso B, seguido del proceso A.

      2.3 Inicio del proceso C Los pasos para la ejecución del código del Proceso C son los siguientes:

      1. Abrir archivo a.txt
      2. Escriba el contenido del archivo correspondiente

        Cuando C Después del inicio, ejecute " Abra el archivo a.txt ". De manera similar, la tabla de administración de archivos (file_table [64]) asocia la tabla de punteros del proceso C con el i-node del archivo a.txt, otorgándole al proceso C la autoridad y la capacidad para manipular el archivo a.txt. Al igual que el proceso B, el proceso C pasa por el mismo proceso e ingresa al "estado de espera ininterrumpible", y se ubica al principio de la cola en esta cola del búfer, seguido de los procesos B, A, respectivamente.

        2.4 Proceso de activación
        En este momento, los procesos A, B y C se encuentran en un estado de espera para que el búfer se desbloquee después de que se carguen los datos, es decir, el estado suspendido. Una vez que se cargan los datos, se completa la transmisión del disco duro "" transmisión de datos", el sistema informa que se han cargado los datos del sistema. Una vez que el sistema recibe la interrupción, desbloquea el búfer y activa los procesos en la cola. En este punto, el sistema activará el proceso C al comienzo del equipo y establecerá el proceso C en el estado listo. Luego comience a ejecutar el código "Escribir datos", comience a cronometrar y establezca el proceso B en el estado listo. Cuando termina el tiempo, el proceso de C se completa y sale. El proceso B comienza a ejecutarse y " lee el código de datos y " inicia el tiempo y establece el proceso A en el estado listo. Cuando termina el tiempo, el proceso B se completa y sale. El proceso A comienza a ejecutarse y " lee el código ", inicia la sincronización del modelo y establece la cola en " NULL ". Cuando termina el tiempo, el proceso A se completa y sale. En este punto, se completan los tres procesos.

        Tres resumen
        del proceso anterior, podemos ver que cuando tres procesos operan en un archivo al mismo tiempo, aunque el orden de inicio del proceso es A, B, C, pero finalmente cuando los datos se cargan en el búfer Una vez que se completa la zona, el orden de ejecución se basa en el encabezamiento de la cola de espera al final del equipo, es decir, C, B y A. Después de la ejecución de los tres procesos ABC, la modificación de los datos solo se encuentra en el búfer y no se escribe inmediatamente en el disco duro, pero los datos del búfer se sincronizan con el disco duro a través del proceso de actualización posterior. Debido al espacio limitado, no los presentaremos aquí. Los lectores están interesados ​​en investigar por su cuenta.

Copyright © Conocimiento de Windows All Rights Reserved