Explicar claramente dos conceptos simples: proceso e hilo.

Prefacio

Sin más preámbulos, tomemos una imagen mental~~

  • La relación entre procesos y subprocesos.
  • Paralelismo y concurrencia
  • Cambio de contexto entre procesos y subprocesos.

La relación entre procesos y subprocesos.

¿Qué es el proceso?

El código que escribimos es solo un archivo estático almacenado en el disco duro. Después de la compilación, se generará un archivo ejecutable binario. Cuando ejecutamos este archivo ejecutable, se cargará en la memoria y luego la CPU ejecutará cada elemento en el comando program., entonces el programa en ejecución se llama "proceso". El proceso incluye los valores actuales del contador del programa, los registros y las variables del programa.

Características del proceso

  1. El proceso depende de la ejecución del programa, el proceso es dinámico y el programa es estático.
  2. Un proceso es una unidad independiente utilizada por el sistema operativo para la asignación y programación de recursos.
  3. Cada proceso tiene un espacio de direcciones independiente. El espacio de direcciones incluye el área de código, el área de datos y el área de pila. Los espacios están aislados y no se afectan entre sí.

¿Qué es un hilo?

Hay una gran sobrecarga de tiempo y espacio en la creación, destrucción y conmutación de procesos. En la década de 1980, comenzó a aparecer el concepto de subprocesos. Los subprocesos se diseñaron como una ruta de ejecución del proceso. Los subprocesos en el mismo proceso comparten los recursos de el proceso. Por lo tanto, el sistema no tiene en cuenta los subprocesos. El costo de la programación es mucho menor que el de un proceso.

Varios subprocesos en el mismo proceso pueden compartir recursos como segmentos de código, segmentos de datos, archivos abiertos, etc., pero cada subproceso tiene un conjunto independiente de registros y pilas, lo que garantiza que el flujo de control del subproceso sea relativamente independiente.

Ventajas de los hilos:

  • Pueden existir varios subprocesos en un proceso al mismo tiempo;
  • Cada hilo puede ejecutarse al mismo tiempo;
  • Recursos como espacio de direcciones y archivos se pueden compartir entre subprocesos;

Comparación de procesos e hilos.

  • El proceso es la unidad de asignación de recursos (incluida la memoria, los archivos abiertos, etc.) y el subproceso es la unidad básica de programación de la CPU;
  • Gastos generales de recursos: cada proceso tiene un espacio de direcciones independiente, y el cambio entre procesos tendrá una gran sobrecarga; los subprocesos pueden considerarse procesos livianos. Los subprocesos en el mismo proceso comparten el espacio de direcciones del proceso. Cada subproceso tiene su propia ejecución independiente. contador de pila y programa, y ​​​​la sobrecarga de cambiar entre subprocesos es pequeña.
  • Relación de inclusión: un proceso tiene al menos un subproceso y un subproceso es parte del proceso, por lo que un subproceso también se denomina proceso liviano o proceso liviano.

Para los subprocesos, los subprocesos pueden reducir la sobrecarga en comparación con los procesos, lo que se refleja en:

  • El tiempo de creación de subprocesos es más rápido que el de los procesos, porque durante el proceso de creación, los procesos también necesitan información de administración de recursos, como información de administración de memoria e información de administración de archivos, sin embargo, durante el proceso de creación de subprocesos, esta información de administración de recursos no estar involucrados, sino compartidos.
  • El tiempo de terminación de los subprocesos es más rápido que el de los procesos porque los subprocesos liberan muchos menos recursos que los procesos;
  • El cambio de hilo dentro del mismo proceso es más rápido que el cambio de proceso.
  • Dado que los recursos de memoria y archivos se comparten entre subprocesos en el mismo proceso, no es necesario que los datos pasen por el núcleo al transferir datos entre subprocesos, lo que hace que la interacción de datos entre subprocesos sea más eficiente;

Por lo tanto, ya sea que se trate de eficiencia de tiempo o de espacio, los subprocesos son más altos que los procesos.

Diagrama de relaciones entre procesos y subprocesos.

Paralelismo y concurrencia

La idea de múltiples programas y ejecución alternativa es la idea inicial de que la CPU administre múltiples procesos.

Para un sistema que admite múltiples procesos, la CPU cambiará rápidamente de un proceso a otro, y cada proceso se ejecutará durante decenas o cientos de milisegundos.

Aunque una CPU de un solo núcleo sólo puede ejecutar un proceso en un momento determinado. Pero durante 1 segundo, puede estar ejecutando múltiples procesos, dando la ilusión de paralelismo cuando en realidad es concurrencia.

cambio de contexto

Cambio de contexto de proceso

El llamado contexto del proceso se refiere a los valores en todos los registros de la CPU, el estado del proceso y el contenido de la pila cuando se está ejecutando un proceso. Cuando el núcleo necesita cambiar a otro proceso, debe guarde todo el estado del proceso actual, es decir, guarde el contexto del proceso actual para que cuando el proceso se ejecute nuevamente, el estado en el momento del cambio pueda restaurarse y la ejecución continúe.

¿Cuáles son los escenarios en los que se produce el cambio de contexto de proceso?

  • 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 por turno.
  • Cuando los recursos del sistema son insuficientes (como memoria insuficiente), el proceso no se puede ejecutar hasta que se satisfagan los recursos. En este momento, el proceso también se suspenderá y el sistema programará la ejecución de otros procesos;
  • Cuando un proceso se suspende activamente a través de la función de sueño, naturalmente será reprogramado;
  • Cuando se está ejecutando un proceso con una prioridad más alta, para garantizar la ejecución del proceso de alta prioridad, se suspenderá el proceso actual y se ejecutará el proceso de alta prioridad;

Cambio de contexto de hilo

Cuando un proceso tiene varios subprocesos, estos subprocesos compartirán los mismos recursos, como la memoria virtual y las variables globales, y no es necesario modificar estos recursos durante el cambio de contexto;

Sin embargo, los subprocesos también tienen sus propios datos privados, como pilas y registros, que también deben guardarse durante el cambio de contexto.

¿Qué es el cambio de contexto de hilo?

Cuando dos subprocesos pertenecen al mismo proceso, debido a que la memoria virtual se comparte, los recursos de la memoria virtual permanecen sin cambios durante el cambio y solo es necesario cambiar los datos privados, registros y otros datos no compartidos del subproceso;

Por tanto, el cambio de contexto de subprocesos es mucho menos costoso que el de procesos.

Supongo que te gusta

Origin blog.csdn.net/Z__7Gk/article/details/132715332
Recomendado
Clasificación