【Proceso e hilo】La mejor explicación

Tabla de contenido

1. Gestión de la CPU

2. Proceso

2.1 Resumen

2.2 Estructura de datos

2.3 Estado del proceso

2.4 Proceso y memoria

2.5 Cola de PCB

3. Hilo

3.1 Resumen

3.2 Implementación


1. Gestión de la CPU

Los procesos y los hilos son conceptos en el sistema operativo, este concepto es en realidad una estrategia de gestión para la CPU. Todo el sistema operativo puede considerarse como el software de gestión del hardware de la computadora, mientras que los procesos y los subprocesos son la gestión de la CPU.

Como núcleo de la computadora, las responsabilidades de la CPU se resumen a continuación:

Obtener y ejecutar.

La CPU es un componente que solo sabe cómo procesar instrucciones, y el contador del programa determina qué instrucciones se procesan específicamente. El contador de programa es como el guardián de la CPU. Enviará continuamente la dirección de la instrucción que se ejecutará a la CPU en la memoria, y la CPU ejecutará la instrucción de búsqueda, buscará la instrucción que se ejecutará desde la dirección correspondiente, y luego ejecutarlo. Todo el proceso se muestra en la siguiente figura:

Hay varios problemas en todo el proceso de recuperación de la CPU:

  • La tasa de utilización no es alta

  • falta de control

Baja tasa de utilización:

Suponiendo que la CPU está ejecutando las instrucciones de un determinado programa, continuará ejecutando los códigos de instrucción de este programa. Cuando todo el programa tiene operaciones lentas, como operaciones de E/S, la velocidad de E/S es mucho menor que la de la CPU. Velocidad, entonces la CPU estará en un estado de espera de IO por un período de tiempo. Si el tiempo de espera se utiliza para realizar otras tareas en términos de eficiencia de la CPU, se puede realizar una gran cantidad de contenido.

Falta de control:

Hay prioridades entre los programas. Por ejemplo, la CPU actual está ejecutando un comando de programa para imprimir un archivo. Debido a que necesita tratar con dispositivos IO, este programa requiere relativamente mucho tiempo. En ese momento, entró una instrucción de programa para lanzar una bomba nuclear. Obviamente, el programa con mayor prioridad esperó hasta que se ejecutó el programa con menor prioridad, y la instrucción anterior se ejecutó correctamente, por lo que no había forma de saberlo.

Ideas para resolver los problemas anteriores:

Deje que la CPU cambie de programa y deje que los programas se ejecuten alternativamente.

En lugar de dejar que el programa termine de ejecutarse de una sola vez, divida el tiempo de la CPU en intervalos de tiempo. Un segundo pertenece al programa A, el siguiente segundo pertenece al programa B y el siguiente segundo pertenece al programa A... Deje que los programas se ejecuten alternativamente , por lo que incluso si se encuentra con operaciones que consumen mucho tiempo, como IO, también puede usar el tiempo de inactividad durante el mismo. Por ejemplo, una operación de E/S originalmente tarda tres segundos, lo que significa que la CPU tiene que esperar tres segundos para devolver el resultado después de ejecutar la operación de E/S. Conocí a IO en este segundo y se lo di a otros programas en el segundo siguiente. y volvió en el siguiente segundo, de modo que se utilizó el tiempo en el medio.

2. Proceso

2.1 Resumen

Mencionamos anteriormente que para hacer un uso completo de la CPU, es necesario dividir el tiempo de la CPU y ejecutar programas de forma cruzada. Pero después de hacerlo, hay un problema por resolver:

¿Cómo describiría un programa en acción?

Para hacer que el programa cambie, es necesario describir estos programas en ejecución, describir dónde se ha ejecutado un determinado programa, etc. De esta forma, al programar de ida y vuelta, puede seguir ejecutándose desde la última vez. Por supuesto, la descripción del hilo debe ser más de uno donde se ejecutó la última vez. También hay muchos detalles. Por ejemplo, a cada programa en ejecución se le puede dar una prioridad. Cada programa en ejecución tiene un número de serie para distinguirlo. Una descripción de un programa en ejecución que se inyecta en esta clase se denomina proceso.

Definición de proceso:

Se utiliza para describir y administrar el "proceso en ejecución" de un programa. Se refiere a una actividad en ejecución de un programa en un determinado conjunto de datos. Es una unidad básica para la asignación de recursos .

Características del proceso:

  • Concurrencia, debido a la ejecución de la CPU cambiando entre programas, múltiples procesos tendrán la sensación de ser ejecutados simultáneamente.

  • Independencia, un proceso es la unidad básica para asignar recursos y ejecutar la programación.

La diferencia entre el programa de lluvia de proceso:

Un programa es estático, un conjunto de instrucciones almacenadas en el almacenamiento durante mucho tiempo. La dinámica de procedimiento es un proceso de ejecución del programa que se realiza una sola vez y existe durante un breve período de tiempo. Un programa puede tener múltiples procesos.

2.2 Estructura de datos

El proceso consta de tres partes:

  • tarjeta de circuito impreso

  • el código

  • datos

No hay nada que hablar de datos y códigos, estas cosas deben ser requeridas para que el programa se ejecute, el punto clave es prestar atención a la PCB.

Bloque de control de procesos (PCB): se utiliza para registrar mensajes importantes, como hacia dónde se dirige la ejecución actual, prioridad, nombre, etc. El PCB se crea cuando se crea el proceso y se cancela cuando se cancela el proceso. PCB es la unidad del proceso de gestión del sistema operativo.

2.3 Estado del proceso

Teóricamente, un proceso tiene tres estados:

En ejecución: el proceso ocupa la CPU y se ejecuta en la CPU. Estado listo (Ready): tiene las condiciones de ejecución, aún no se está ejecutando, esperando los recursos de la CPU. Estado bloqueado (Block): El proceso que ha comenzado a ejecutarse está esperando un recurso durante la ejecución. También llamado estado de espera (wait). Los anteriores son solo los tres estados básicos necesarios en teoría, y la implementación específica de cada tipo de sistema operativo será diferente.

2.4 Proceso y memoria

Proceso y memoria Los datos y el código de cada programa se cargan en el espacio de la memoria, y cada proceso tendrá una estructura de datos correspondiente independiente (tabla de páginas en la gestión de memoria) para registrar dónde se almacenan los datos y el código del proceso. Cada programa se carga en la memoria para generar un proceso correspondiente, cuando se genera un proceso, al mismo tiempo se generará un PCB perteneciente al proceso, la entrada de la tabla de páginas se registrará en el PCB, es decir, donde se encuentra el actual se ha ejecutado el programa. La CPU programará y ejecutará cada proceso de acuerdo con la cola de la PCB.

2.5 Cola de PCB

Procesos en espera de ser programados para su ejecución:

En consecuencia, hay colas de bloqueo, etc., todas las cuales son similares a la estructura de la figura anterior. La CPU seleccionará un proceso de la cola de listos para ejecutar de acuerdo con el algoritmo de programación. Cuando el proceso ejecutado no puede continuar avanzando, pondrá temporalmente el proceso en la cola de bloqueo y luego seleccionará un proceso de la cola de listos para ejecutarlo nuevamente. Una vez que el proceso anterior vuelve a estar listo, en cierto momento, la CPU retrocede y continúa avanzando en el proceso.

3. Hilo

3.1 Resumen

Los hilos pueden entenderse como procesos de multiplexación.La aparición de hilos trae dos ventajas:

  • Cambiar entre programas es más ligero

  • Mayor concurrencia

1. Cambiar entre programas es más ligero:

Cambiar entre procesos provocará un cambio de contexto de la CPU, lo que tiene una sobrecarga de alto rendimiento. Si no conoce muy bien el contexto de la CPU, puede pasar a:

Explicar el estado de la CPU en detalle__Blog de BugMan-Blog de CSDN

2. Mayor concurrencia:

Tomemos un ejemplo:

Suponga que las siguientes instrucciones se van a ejecutar en un segmento de tiempo determinado de la CPU:

Después de que la primera línea de código llama al dispositivo IO, incluso si se ha utilizado, el recurso ya no es necesario, pero antes de que finalice la ejecución de la línea N de código, el dispositivo IO todavía está ocupado por el proceso y otros procesos. esa necesidad de usar el recurso solo puede esperar. Por supuesto, este problema no existe en una arquitectura de una sola CPU, pero una vez que se trata de una arquitectura de varias CPU, se producirá esta situación.

3.2 Implementación

Hay dos implementaciones de hilos:

  • subproceso a nivel de usuario

  • subproceso a nivel de kernel

Subprocesos a nivel de usuario:

A nivel de programa, el usuario implementa subprocesos lógicos a través de la codificación manual e implementa manualmente la lógica de conmutación de subprocesos a través de la codificación, es decir, la programación en el espacio del usuario se basa en subprocesos y la programación en la CPU se basa en procesos.

Subprocesos a nivel de kernel:

La programación del espacio de usuario se realiza en unidades de procesos y la programación de la CPU se realiza en unidades de subprocesos.

En resumen, los hilos pueden entenderse como la multiplexación de procesos, cuando el sistema operativo admite hilos, el cambio de contexto de la CPU todavía se realiza en unidades de procesos. El bloque de control de un hilo se llama TCB, y su función y estructura son casi las mismas que las de un proceso.El TCP de un hilo que pertenece al mismo proceso se almacena en el espacio de memoria del proceso.

Supongo que te gusta

Origin blog.csdn.net/Joker_ZJN/article/details/132345120
Recomendado
Clasificación