Alfabetización en cinco minutos: conocimientos básicos de procesos e hilos

El mapa mental contextual del texto completo es el siguiente:

1. Explicación simple del proceso y el hilo.

Proceso (Process) e hilo (Thread) son los conceptos básicos del sistema operativo, pero son relativamente abstractos y no fáciles de entender. La siguiente explicación proviene del blog del profesor Ruan Yifeng ( http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html ), aunque no es muy rigurosa, pero es suficiente imagen , después de leerla, puedes tener una buena comprensión de los procesos y subprocesos Una impresión muy intuitiva, que también es conveniente para comprender el siguiente texto.

① El núcleo de una computadora es la CPU, que realiza todas las tareas informáticas. Es como una fábrica, en funcionamiento todo el tiempo.

Suponga que la energía de la fábrica es limitada y solo puede ser utilizada por un taller a la vez . Es decir, cuando se inicia un taller, se deben cerrar otros talleres. El significado detrás de esto es que un solo núcleo de la CPU solo puede ejecutar una tarea a la vez.

③ Un proceso es como un taller en una fábrica, representa una sola tarea que la CPU puede manejar. En cualquier momento, la CPU siempre está ejecutando un proceso y los otros procesos están en un estado de no ejecución.

④ Puede haber muchos trabajadores en un taller. Trabajan juntos para completar una tarea.

⑤ Los hilos son como obreros en el taller. Un proceso puede contener varios subprocesos.

⑥ El espacio del taller es compartido por los trabajadores, por ejemplo, muchas habitaciones son accesibles para cada trabajador. Esto simboliza que el espacio de memoria de un proceso se comparte y cada subproceso puede usar esta memoria compartida.

⑦ Sin embargo, el tamaño de cada habitación es diferente y algunas habitaciones solo pueden acomodar a una persona como máximo, como el baño. Cuando hay gente dentro, los demás no pueden entrar. Esto significa que cuando un subproceso usa alguna memoria compartida, otros subprocesos deben esperar a que finalice antes de usar esta parte de la memoria.

⑧ Una forma sencilla de evitar que otros entren es agregar un candado a la puerta. Los que llegaron primero cerraron la puerta con llave, y los que llegaron después vieron la cerradura y se alinearon en la puerta, esperando que se abriera la cerradura antes de entrar. Esto se llama "exclusión mutua" (Exclusión mutua, abreviada como Mutex), que evita que varios subprocesos lean y escriban en un área de memoria determinada al mismo tiempo.

⑨ También hay algunas habitaciones que pueden acomodar a n personas al mismo tiempo, como la cocina. En otras palabras, si el número de personas es mayor que n, las personas adicionales solo pueden esperar afuera. Esto es como ciertas áreas de memoria que solo pueden ser utilizadas por un número fijo de subprocesos.

⑩ La solución en este momento es colgar n llaves en la puerta. Las personas que entran toman una llave y la cuelgan en el lugar original cuando salen. Los que llegaron más tarde se encontraron con que la llave estaba vacía, por lo que supieron que tenían que hacer cola en la puerta. Este enfoque se denomina "semáforo" (Semaphore), y se utiliza para garantizar que varios subprocesos no entren en conflicto entre sí.

No es difícil ver que el bloqueo de exclusión mutua Mutex es un caso especial del semáforo semáforo (n = 1) . En otras palabras, el primero puede ser reemplazado por el segundo. Sin embargo, debido a que Mutex es relativamente simple y eficiente, este diseño todavía se adopta cuando se debe garantizar la exclusividad de los recursos.

2. Proceso de alfabetización básica

① ¿Qué es un proceso?

Combinado con la explicación simple anterior, la definición científica del proceso se da a continuación:

Un proceso es una actividad en ejecución de un programa en un determinado conjunto de datos, y también es la unidad básica para la asignación de recursos y la protección del sistema operativo .

En términos sencillos, un proceso es un proceso de ejecución de un programa .

Un programa es estático y existe para siempre como un recurso en el sistema.

Un proceso es dinámico, se produce, cambia y marchita dinámicamente, y tiene su propio ciclo de vida.

Por ejemplo: cuelgue tres números QQ al mismo tiempo, corresponden a tres procesos QQ, y salir de uno matará el proceso correspondiente. Sin embargo, incluso si abandona los tres QQ, ¿el programa QQ está muerto? Obviamente no.

Un proceso no solo incluye la entidad del programa en ejecución, sino que también incluye todos los recursos del sistema ocupados por el programa en ejecución, como CPU, memoria, recursos de red, etc. Cuando muchos socios pequeños responden al concepto de un proceso, a menudo solo dicen que es una entidad en ejecución e ignoran los recursos que ocupa el proceso. Por ejemplo, si el mismo programa se ejecuta dos veces al mismo tiempo, entonces son dos procesos independientes.

② La composición del proceso

El proceso consta principalmente de tres partes:

1) PCB del bloque de control de proceso , que incluye las siguientes partes:

  • información de descripción del proceso
  • Información de Control y Gestión de Procesos
  • Lista de verificación de asignación de recursos
  • Información relacionada con la CPU

2) Segmento de datos . Es decir, varios datos durante la ejecución del proceso (como variables definidas en el programa)

3) Segmento de programa . es el código del programa (secuencia de instrucciones)

Por ejemplo: tres cuentas QQ están registradas al mismo tiempo, correspondientes a tres procesos QQ, sus PCB y segmentos de datos son diferentes, pero el contenido de los segmentos del programa es el mismo (todos ejecutan el mismo programa QQ)

El PCB se proporciona al sistema operativo, mientras que el segmento de programa y el segmento de datos son utilizados por el propio proceso.

PCB de bloque de control de proceso

Cada proceso tiene un único bloque de control de proceso (Process Control Block, PCB), o descriptor de proceso, que es el identificador único de la existencia del proceso , y es la estructura de datos utilizada por el sistema operativo para registrar y describir el proceso. estado e información ambiental También es la única estructura de datos para que el sistema operativo domine el proceso y la base principal para administrar el proceso. Por lo tanto, el PCB se proporciona para que lo use el sistema operativo.

Explicación popular: El sistema operativo necesita gestionar cada proceso, pero toda la información necesaria para la gestión se colocará en el PCB, y el PCB es el único signo de la existencia del proceso . Crear un proceso y cancelar un proceso se refieren a operaciones en el PCB.Cuando se crea un proceso, el sistema operativo crea un PCB para él, y cuando finaliza el proceso, su PCB se reciclará.

En términos generales, la PCB contendrá los siguientes cuatro tipos de información:

1) Información de descripción del proceso : se utiliza para permitir que el sistema operativo distinga cada proceso

  • Cuando se crea un proceso, el sistema operativo asignará un "número de ID" único y no repetido al proceso: PID (ProcessID, ID de proceso)
  • Además, la información de descripción del proceso también incluye el ID de usuario ( UID ) al que pertenece el proceso

2) Información de gestión y control del proceso : registrar el estado de ejecución del proceso. Por ejemplo, el tiempo de uso de la CPU, el uso del disco, el uso del tráfico de red, etc.

3) Lista de asignación de recursos : registra qué recursos se asignan al proceso. Por ejemplo, cuánta memoria se asigna, qué dispositivos de E/S se utilizan, qué archivos se utilizan, etc.

4) Información relacionada con la CPU : cuando un proceso renuncia a la CPU, debe guardar información diversa del proceso en la CPU, como los valores de varios registros. Se utiliza para implementar la conmutación de procesos, para garantizar que el sitio de la CPU se restaure cuando el proceso se ejecute de nuevo y la ejecución continúe desde el punto de interrupción. Esto se denomina guardar información de la escena .

③ Estado del proceso

Aunque cada proceso es una entidad independiente con su propio PCB y estado interno, a menudo existe la necesidad de interacción entre procesos. La salida de un proceso puede ser la entrada de otro. Suponiendo que la entrada del proceso A depende de la salida del proceso B, entonces el proceso A no puede ejecutarse antes de que salga la salida del proceso B y se bloqueará. Este es el estado de bloqueo del proceso.

El modelo clásico de proceso de tres estados es el siguiente:

  • En ejecución : el proceso ocupa la CPU y se está ejecutando.
  • Estado Ready (listo): El proceso tiene las condiciones para ejecutarse, esperando que el sistema asigne CPU para ejecutarse.
  • Estado de bloqueo /estado de espera (espera): El proceso no tiene las condiciones para ejecutarse y está esperando la finalización de un evento.

El intervalo de tiempo en la figura anterior se agota, lo que se puede entender de la siguiente manera:

Los procesos se ejecutan simultáneamente. Macroscópicamente, varios programas pueden ejecutarse al mismo tiempo durante un período de tiempo, pero de hecho, microscópicamente, suceden alternativamente. Es decir, la CPU generalmente no permite que un proceso se ejecute al mismo tiempo.Para garantizar que todos los procesos se puedan programar de manera justa, el tiempo de la CPU se divide en intervalos de tiempo, y estos intervalos de tiempo se asignan a cada proceso en doblar. Después de que se agote el intervalo de tiempo de un proceso, el proceso entrará en el estado listo y otros procesos asignados al intervalo de tiempo entrarán en el estado de ejecución. El proceso en el estado listo debe esperar la siguiente programación del programador de procesos y, luego, puede reanudar su ejecución después de asignar los intervalos de tiempo de la CPU.

Cabe señalar que el estado de bloqueo se convierte del estado de ejecución debido a la falta de recursos necesarios, pero este recurso no incluye segmentos de tiempo de CPU, y la falta de segmentos de tiempo de CPU se convertirá del estado de ejecución al estado listo .

Muchos sistemas han agregado un nuevo estado (nuevo) y un estado terminal (salida), formando un modelo de cinco estados :

  • Nuevo estado (nuevo): El estado cuando se está creando el proceso
  • Estado de terminación (salida): El estado cuando el proceso está desapareciendo del sistema

En la figura anterior se puede ver que solo el estado listo y el estado en ejecución se pueden convertir entre sí, y los otros son conversión unidireccional .

¿Cómo se gestionan estos sistemas operativos de procesos en diferentes estados?

Como se mencionó anteriormente, el PCB se proporciona al sistema operativo y es la base principal para que el sistema operativo administre el proceso. Así es, el funcionamiento es gestionar estos procesos con diferentes estados a través del PCB.

Los PCB de proceso se organizarán de cierta manera. En términos generales, el sistema operativo vinculará los PCB de todos los procesos en el mismo estado. Esta estructura de datos se denomina Process Queue.

④ Control de procesos

El llamado control de procesos es para administrar de manera efectiva todos los procesos en el sistema y realizar la función de conversión del estado del proceso.

Incluyendo proceso de creación, proceso de bloqueo, proceso de activación, proceso de finalización, etc. Estas funciones se realizan mediante primitivas , y el sistema operativo utiliza primitivas para completar los principios del proceso, incluida la sincronización y exclusión mutua de procesos, la comunicación y la gestión de procesos.

¿ Qué son los primitivos ?

Una primitiva es un tipo especial de programa cuya ejecución es atómica . En otras palabras, la operación de este programa debe hacerse de una sola vez sin interrupción. Una primitiva es un programa en el núcleo del sistema operativo :

Piénselo: ¿ Por qué el proceso de control del proceso (transición del estado del proceso) debe completarse de una sola vez y no puede interrumpirse?

Respuesta: Si el proceso de transición de estado del proceso no se puede completar de una sola vez, puede causar que alguna información clave de la estructura de datos en el sistema operativo sea inconsistente, lo que afectará al sistema operativo para realizar otras tareas de administración.

creación de procesos

Cuando se inicia inicialmente el sistema operativo, se crean algunos procesos del sistema para llevar a cabo la asignación de recursos del sistema y la gestión del control. Al mismo tiempo, se crea un ancestro de todos los procesos de usuario. Otros procesos de usuario se crean cuando se ejecutan las aplicaciones.

El sistema operativo permite que un proceso cree otro proceso y permite que el proceso secundario herede los recursos que pertenecen al proceso principal. Cuando finaliza el proceso secundario, los recursos que heredó en el proceso principal deben devolverse al proceso principal. Al mismo tiempo, cuando finaliza el proceso principal, todos sus procesos secundarios también finalizarán.

El proceso de creación de un proceso, es decir, el contenido de la creación de primitivas es el siguiente:

  • Agregue un elemento a la lista de procesos, solicite un PCB gratuito del grupo de PCB (el PCB es limitado, si la aplicación falla, la creación fallará) y asigne un identificador de proceso único al nuevo proceso;
  • Asigne un espacio de direcciones para el nuevo proceso y determine el programa cargado en el espacio de direcciones del proceso por el programa de gestión de procesos;
  • Asignar varios recursos para el nuevo proceso;
  • Inicializar PCB, como identificador de proceso, estado inicial de CPU, etc.;
  • Establezca el estado del nuevo proceso en listo y muévalo a la cola listo, esperando a que se programe para ejecutarse.

¿Qué evento activará la creación del proceso ? Hay cuatro situaciones de la siguiente manera:

  • Inicio de sesión de usuario: en el sistema de tiempo compartido, si el usuario inicia sesión correctamente, el sistema creará un nuevo proceso para él
  • Programación de trabajos: en un sistema de procesamiento por lotes multicanal, si se coloca un nuevo trabajo en la memoria, se creará un nuevo proceso para él.
  • Proporcionar servicio: cuando el usuario realiza algunas solicitudes al sistema operativo, se creará un nuevo proceso para manejar la solicitud
  • Solicitud de aplicación: un proceso de usuario solicita activamente crear un proceso secundario

terminación del proceso

La finalización de un proceso también se conoce como revocación, y el proceso debe finalizar después de que haya completado un trabajo específico o haya encontrado un error grave. Hay tres tipos de eventos que hacen que un proceso termine:

  • Fin normal: el propio proceso solicita la terminación (salir de la llamada al sistema)
  • Final anormal: como división entera por 0, uso ilegal de instrucciones privilegiadas y luego terminado por la fuerza por el sistema operativo
  • Intervención externa: Ctrl + Alt + eliminar abre el administrador de procesos y el usuario elimina manualmente el proceso

El proceso de terminación (deshacer) de un proceso, es decir, el contenido de la primitiva de deshacer es el siguiente:

  • Encuentre el PCB que finalizó el proceso de la colección de PCB;
  • Si el proceso está en estado de ejecución, privar inmediatamente de su CPU, finalizar la ejecución del proceso y luego asignar recursos de CPU a otros procesos;
  • Si tiene procesos secundarios, todos los procesos secundarios deben terminarse;
  • Devolver todos los recursos propiedad del proceso al proceso principal o al sistema operativo;
  • Recicle los PCB y devuélvalos al depósito de PCB.

Proceso de bloqueo y despertar

El bloqueo de procesos significa que el proceso renuncia a los recursos de la CPU y espera un evento, como esperar recursos, esperar a que se completen las operaciones de E/S, etc.

Los procesos suelen utilizar primitivas de bloqueo para bloquearse a sí mismos, por lo que el bloqueo es un comportamiento autónomo de un proceso y un evento síncrono. Cuando se complete el evento de espera, se generará una interrupción, se activará el sistema operativo y se despertará el proceso bloqueado bajo el control del sistema, es decir, la primitiva de despertar.

El bloqueo y la reactivación de procesos se realizan obviamente mediante la conmutación de procesos.

Los pasos de bloqueo del proceso, es decir, el contenido de la primitiva de bloqueo es:

  1. Encuentre el PCB correspondiente al proceso a bloquear;
  2. Proteja el sitio en ejecución del proceso, establezca la información de estado de la PCB en estado de bloqueo y detenga temporalmente la ejecución del proceso;
  3. Inserte el PCB en la cola de bloqueo (cola de espera) para el evento correspondiente.

Los pasos de activación del proceso, es decir, el contenido de la primitiva de activación es:

  1. Encuentre el PCB del proceso correspondiente en la cola de bloqueo del evento;
  2. Retire el PCB de la cola de bloqueo y establezca el estado del proceso en listo;
  3. Inserte la placa de circuito impreso en la cola lista, a la espera de que el programador la programe.

Las primitivas de bloqueo y las primitivas de activación hacen exactamente lo contrario:

La primitiva de bloqueo hace que el proceso cambie del estado de ejecución al estado de bloqueo

La primitiva de activación hace que el proceso pase del estado bloqueado al estado listo .

Si un proceso usa un primitivo de bloqueo para bloquearse a sí mismo, entonces debe usar un primitivo de activación para activarse y despertarse por lo que sea que esté bloqueado, de lo contrario, el proceso bloqueado permanecerá en estado bloqueado para siempre. Por lo tanto, las primitivas de bloqueo y las primitivas de activación vienen en pares .

⑤ Cambio de contexto de proceso

El llamado cambio de contexto de proceso significa que cada proceso comparte recursos de CPU. Es imposible que un proceso ocupe recursos de CPU para siempre. En diferentes momentos, los procesos deben cambiarse, de modo que se asignen recursos de CPU a diferentes procesos. Este proceso es un proceso Un cambio de contexto, donde un proceso cambia a otro proceso para ejecutarse .

Debido a que el kernel administra y programa el proceso, el cambio de contexto del proceso debe ocurrir en el estado del kernel .

La conmutación del contexto del proceso también es una operación primitiva, denominada primitiva de conmutación , y su contenido es el siguiente:

  1. Primero, almacene la información del entorno en ejecución del proceso A en la PCB, que es el contexto del proceso (Contexto)
  2. Luego, mueva la PCB a la cola de proceso correspondiente;
  3. Seleccione otro proceso B para ejecutar y actualice el estado en su PCB para ejecutar
  4. Cuando se reanude el proceso A, restaurar el entorno operativo requerido por el proceso A de acuerdo con su PCB

Los eventos que causan el cambio de contexto del proceso, es decir, la razón por la cual un proceso actual que ocupa recursos de CPU para ejecutarse es expulsado de la CPU son los siguientes:

  • El intervalo de tiempo del proceso actual.
  • Llega un proceso de mayor prioridad
  • El proceso actual bloquea activamente
  • proceso actual terminado

3. Hilo de alfabetización básica

① ¿Qué es un hilo?

Combinado con la explicación simple al principio del artículo, puede haber varios subprocesos en un proceso y comparten los recursos de este proceso.

Por ejemplo, QQ y el navegador Chrome son dos procesos. Hay muchos subprocesos en el proceso de Chrome, como el subproceso de solicitud HTTP, el subproceso de respuesta de evento, el subproceso de representación, etc. Se realiza una solicitud HTTP, el navegador también puede responder a otros eventos del usuario.

② Por qué introducir hilos

Los primeros sistemas operativos usaban procesos como la unidad básica de operación independiente, hasta que los científicos informáticos posteriores propusieron una unidad básica más pequeña que puede ejecutarse de forma independiente, es decir, subprocesos. Esto es como un físico que estudia la composición de la materia: primero descubre moléculas, luego continúa subdividiendo y descubriendo átomos, y luego núcleos atómicos, electrones, quarks, etc.

Entonces, ¿por qué introducir hilos? Solo debemos recordar esta frase: los subprocesos también se denominan miniprocesos, pero son más fáciles de crear y revocar que los procesos .

De lo anterior, sabemos que un proceso es una unidad básica con recursos, y también puede programarse de forma independiente, esto es como un soldado que lleva comida y pasto en cualquier momento, lo que inevitablemente aumentará la velocidad de ejecución de las órdenes del soldado ( combate). Por lo tanto, una idea simple es: asignar dos soldados para ejecutar la misma orden: uno se encarga de llevar los alimentos y suministros requeridos en cada momento, y el otro soldado se encarga de ejecutar la orden (combate). Esta es la idea de los hilos, y los soldados que viajan ligeros son hilos .

En estricta descripción del lenguaje, es:

Cuando se crea o revoca un proceso, el sistema debe asignar o reclamar recursos para él, como espacio de memoria, dispositivos de E/S, etc., lo que requiere una gran sobrecarga de espacio-tiempo, lo que limita la mejora adicional del grado de concurrencia. .

Para reducir la sobrecarga del cambio de proceso, los dos atributos del proceso como unidad de asignación de recursos y unidad de programación se tratan por separado , es decir, el proceso aún se usa como la unidad básica de asignación de recursos, pero no como la unidad básica de asignación. programación (rara vez programada o conmutada), y la programación La responsabilidad de la ejecución y la conmutación se transfiere al subproceso, es decir, el subproceso se convierte en la unidad básica de la programación independiente , que es más fácil (más rápido) de crear y revocar que el proceso .

¡Recuerda esta frase! Antes de que se introdujeran los subprocesos, los procesos eran la unidad básica de asignación de recursos y programación independiente. Después de que se introduce el subproceso, el proceso es la unidad básica de asignación de recursos y el subproceso es la unidad básica de programación independiente .

③ Ventajas y desventajas del hilo

Las características de los hilos son similares a las de los procesos, y básicamente tienen algunos procesos, tales como:

  • Un subproceso tiene tres estados básicos de listo, bloqueado y en ejecución, y también tiene una relación de transición entre estados;
  • Los subprocesos pueden ejecutarse simultáneamente
  • En un entorno de múltiples CPU, cada subproceso también se puede asignar a diferentes CPU para la ejecución en paralelo

Ventajas de los hilos:

  • Pueden existir múltiples subprocesos en un proceso al mismo tiempo, y estos subprocesos comparten los recursos del proceso. La comunicación entre procesos debe solicitar los servicios del sistema operativo (porque la CPU tiene que cambiar al modo kernel), lo que tiene una gran sobrecarga. La comunicación entre subprocesos bajo el mismo proceso no requiere la intervención del sistema operativo, y la sobrecarga es menor.
    Sin embargo, cabe señalar que la comunicación entre subprocesos pertenecientes a diferentes procesos también debe solicitar servicios del sistema operativo.
  • La sobrecarga de la concurrencia entre subprocesos es menor que la de los procesos y se mejora la concurrencia del sistema.
    Del mismo modo, debe tenerse en cuenta que cambiar entre subprocesos que pertenecen a diferentes procesos provocará un cambio de proceso, por lo que la sobrecarga también es alta.

Desventajas de los hilos:

  • Cuando un subproceso en un proceso falla, bloquea todos los subprocesos del proceso al que pertenece.

Por ejemplo, para el diseño del juego por parte del usuario, no se deben usar subprocesos múltiples, de lo contrario, si un usuario cuelga, afectará a otros subprocesos del mismo proceso.

4. Resumen

El diseño del sistema operativo, desde la perspectiva de procesos e hilos, se puede resumir en tres puntos:

  • En forma de multiproceso, se permite que se ejecuten varias tareas al mismo tiempo;
  • En forma de subprocesos múltiples, lo que permite que una sola tarea se divida en diferentes partes para ejecutarse;
  • Se proporciona un mecanismo de coordinación para evitar conflictos entre procesos y subprocesos, por un lado, y para permitir que los recursos se compartan entre procesos y subprocesos, por otro lado.

fuente:

Alfabetización de cinco minutos: se deben conocer los conceptos básicos de procesos e hilos: el mapa mental del texto completo de Zhihu es el siguiente: 1. Una explicación simple de procesos e hilos El proceso y el hilo son conceptos básicos del sistema operativo, pero son relativamente abstractos y no fáciles de comprender. La siguiente explicación proviene del blog del maestro Ruan Yifeng (http://www.ruanyifeng.com/blog/201… https://zhuanlan.zhihu.com/p/403313422 

Supongo que te gusta

Origin blog.csdn.net/usstmiracle/article/details/132226850
Recomendado
Clasificación