(Notas de estudio - Gestión de procesos) Subproceso

En los primeros sistemas operativos, los procesos eran la unidad básica de operación independiente, hasta más tarde, los informáticos propusieron una unidad básica más pequeña que puede ejecutarse de forma independiente: hilo


 

¿Por qué usar hilos?

Por ejemplo, suponga que desea escribir un software de reproducción de video, entonces hay tres módulos principales de funciones de software:

  • leer datos del archivo de video
  • Descomprimir los datos leídos
  • Reproduzca los datos de video comprimidos

Para una implementación de un solo proceso:

 Para este método de proceso único, existen los siguientes problemas:

  • La imagen y el sonido reproducidos serán incoherentes, porque cuando la capacidad de la CPU no es lo suficientemente fuerte, el proceso puede estar esperando aquí durante la lectura, lo que llevará a esperar medio día para la descompresión y reproducción de datos.
  • Las funciones no se ejecutan simultáneamente, lo que afecta la eficiencia del uso de recursos

Luego cambie a un método multiproceso:

 Para este enfoque multiproceso, todavía hay problemas:

  • ¿Cómo se comunican y comparten datos los procesos?
  • La sobrecarga del sistema para mantener un proceso es relativamente grande, como cuando se crea un proceso, se asignan recursos y se construye una PCB , cuando se finaliza un proceso, se reclaman recursos y se revoca una PCB, cuando se cambia de un proceso a otro, se guarda la información de estado del proceso actual;

Entonces, ¿cómo resolverlo? Tiene que haber una nueva entidad que satisfaga las siguientes propiedades:

  • Las entidades pueden ejecutarse simultáneamente
  • Las entidades comparten el mismo espacio de direcciones

Esta nueva entidad es un hilo (Thread) , que puede ejecutarse simultáneamente y compartir el mismo espacio de direcciones.


¿Qué son los hilos?

Un hilo es un flujo de ejecución en un proceso.

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

 ¿Ventajas y desventajas de los hilos?

Ventajas de los hilos:

  • Pueden existir múltiples subprocesos en un proceso al mismo tiempo
  • Cada subproceso puede ejecutarse simultáneamente
  • Los recursos como el espacio de direcciones y los archivos se pueden compartir entre subprocesos

Desventajas de los hilos:

  • Cuando un subproceso en el proceso falla, hará que todos los subprocesos del proceso al que pertenece se bloqueen (aquí para el lenguaje C/C++).

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.


Comparación de hilos y procesos

Comparación de hilos y procesos:

  • Un proceso es una unidad para la asignación de recursos (incluida la memoria, los archivos abiertos, etc.) y un subproceso es una unidad para la programación de la CPU.
  • Los procesos tienen una plataforma de recursos completa, mientras que los hilos solo comparten recursos esenciales, como registros y pilas.
  • Los subprocesos también tienen tres estados básicos de listo, bloqueado y en ejecución, y también tienen relaciones de transición entre estados.
  • Los subprocesos pueden reducir la sobrecarga de tiempo y espacio de la ejecución simultánea

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

  • El tiempo de creación del subproceso es más rápido que el proceso, porque el proceso también necesita información de administración de recursos durante el proceso de creación, como información de administración de memoria, información de administración de archivos, y el subproceso no diseñará esta información de administración de recursos durante el proceso de creación, sino que compartirá a ellos
  • El tiempo de finalización del subproceso es más rápido que el del proceso, porque los recursos liberados por el subproceso son mucho más pequeños que los del proceso.
  • El cambio de subprocesos dentro del mismo proceso es más rápido que el cambio de procesos, porque los subprocesos tienen el mismo espacio de direcciones (espacio de memoria virtual), lo que significa que los subprocesos del mismo proceso tienen la misma tabla de páginas, por lo que no es necesario cambiar de página al cambiar de superficie . Para cambiar entre procesos, la tabla de páginas debe cambiarse al cambiar, y la sobrecarga de cambiar la tabla de páginas es relativamente grande.
  • Dado que los subprocesos del mismo proceso comparten memoria y recursos de archivo, la transferencia de datos entre subprocesos no necesita pasar por el kernel, lo que hace que la interacción de datos entre subprocesos sea más eficiente.

Entonces, ya sea eficiencia de tiempo o eficiencia de espacio, los subprocesos son más importantes que los procesos.


Cambio de contexto de hilo

Sabemos que la mayor diferencia entre procesos y subprocesos es que los subprocesos son la unidad básica de programación, mientras que los procesos son la unidad básica de propiedad de recursos.

La llamada programación de tareas del sistema operativo en realidad programa hilos, y los procesos solo proporcionan hilos con recursos como memoria virtual y variables globales.

Para hilos y procesos, puede entenderse como:

  • Cuando un proceso tiene un solo hilo, se puede considerar que el proceso es igual al hilo.
  • Cuando un proceso tiene múltiples subprocesos, estos subprocesos compartirán los mismos recursos, como la memoria virtual y las variables globales, y estos recursos no necesitan modificarse durante el cambio de contexto.

Además, 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?

También depende de si los hilos pertenecen al mismo proceso:

  • Cuando dos subprocesos no pertenecen al mismo proceso, el proceso de cambio es el mismo que el cambio de contexto del proceso
  • Cuando dos subprocesos pertenecen al mismo proceso, debido a que se comparte la memoria virtual, los recursos como la memoria virtual permanecen sin cambios al cambiar, y solo los datos que no se comparten, como datos privados y registros de subprocesos, deben cambiarse

Por lo tanto, el cambio de contexto de subprocesos es mucho menos costoso que la sobrecarga del proceso.


Implementación de hilos

Hay tres implementaciones principales de hilos:

  • Subprocesos de usuario: los subprocesos implementados en el espacio del usuario no son subprocesos administrados por el núcleo, sino que son administrados por la biblioteca de subprocesos a nivel de aplicación.El núcleo no puede percibir la existencia de subprocesos de usuario.
  • Hilo del kernel: un hilo implementado en el kernel es un hilo administrado por el kernel.
  • Procesos ligeros: en el kernel para admitir subprocesos de usuario

Correspondencia entre subprocesos de usuario y subprocesos del núcleo

En primer lugar, la primera relación es una relación de muchos a uno, es decir, varios subprocesos de usuario corresponden al mismo subproceso del núcleo:

 La segunda es una relación de uno a uno, es decir, un subproceso de usuario corresponde a un subproceso del kernel:

 La tercera es una relación de muchos a muchos , es decir, múltiples subprocesos de usuario corresponden a múltiples subprocesos del kernel:

 ¿Cómo entender el hilo de usuario? ¿Qué ventajas y desventajas existen?

Los subprocesos de usuario se implementan en función de la biblioteca de gestión de subprocesos en modo usuario, y el bloque de control de subprocesos (Bloque de control de subprocesos, TCB ) también se implementa en la biblioteca. El sistema operativo no puede ver este TCB y el kernel no puede percibir el nivel del usuario. subproceso existe , solo puede ver todo el proceso PCB.

Por lo tanto, el sistema operativo no participa directamente en toda la administración y programación de subprocesos de usuarios, pero las funciones de biblioteca de subprocesos a nivel de usuario completan la administración de subprocesos, incluida la creación, finalización, sincronización y programación de subprocesos .

El modelo de subprocesos a nivel de usuario es similar a la relación de muchos a uno mencionada anteriormente , es decir, varios subprocesos de usuario corresponden al mismo subproceso del kernel, como se muestra en la siguiente figura:

 Ventajas de los hilos de usuario:

  • Cada proceso necesita tener su lista de bloque de control de subprocesos (TCB) privada, que se utiliza para rastrear y registrar su información de estado de subprocesos (PC, puntero de pila, registro) sistema operativo técnico;
  • El cambio de subprocesos de usuario también se completa con la función de biblioteca de subprocesos, sin cambiar entre el modo de usuario y el modo kernel, por lo que la velocidad es muy rápida;

Desventajas de los hilos de usuario:

  • Dado que el sistema operativo no participa en la programación de subprocesos, si un subproceso inicia una llamada al sistema y se bloquea, los subprocesos de usuario contenidos en el proceso no se pueden ejecutar y no se puede lograr una verdadera concurrencia.
  • Cuando un subproceso comienza a ejecutarse, a menos que ceda voluntariamente el derecho de usar la CPU, otros subprocesos en el proceso en el que se encuentra no pueden ejecutarse, porque los subprocesos en modo usuario no pueden interrumpir el subproceso que se está ejecutando actualmente, no tiene este privilegio, solo el subproceso operativo. el sistema lo tiene, pero los subprocesos de usuario no son administrados por el sistema operativo
  • La asignación de recursos del núcleo se asigna de acuerdo con el proceso. El proceso donde se encuentra el subproceso a nivel de usuario puede competir por los recursos del sistema, mientras que cada subproceso de usuario solo puede competir por los recursos internos del proceso . Para un proceso, puede haber miles de subprocesos a nivel de usuario, pero no tienen impacto en los recursos del sistema.

¿Cómo entender el hilo del núcleo? ¿Qué ventajas y desventajas existen?

El subproceso del kernel es administrado por el sistema operativo, y el TCB correspondiente al subproceso se coloca naturalmente en el sistema operativo, por lo que la creación, finalización y administración del subproceso son responsabilidad del sistema operativo .

  • Los subprocesos a nivel de kernel pueden competir por recursos en todo el sistema
  • Se establece un bloque de control de subprocesos (TCB) para cada subproceso de soporte del kernel en el espacio del kernel, y el kernel detecta la existencia del subproceso y lo controla de acuerdo con el bloque de control.

El modelo del subproceso del kernel es similar a la relación uno a uno mencionada anteriormente , es decir, un subproceso de usuario corresponde a un subproceso del kernel, como se muestra en la siguiente figura:

Ventajas de los hilos del kernel:

  • En un proceso, si un subproceso del kernel inicia una llamada al sistema y se bloquea, no afectará el funcionamiento de otros subprocesos del kernel.
  • Asignados a subprocesos, los procesos de subprocesos múltiples obtienen más tiempo de ejecución de la CPU

Desventajas de los hilos del kernel:

  • En los sistemas operativos que admiten subprocesos del núcleo, el núcleo mantiene la información de contexto del proceso y del subproceso, como PCB y TCB.
  • La creación, terminación y cambio de subprocesos se llevan a cabo a través de llamadas al sistema, por lo que, para el sistema, la sobrecarga del sistema es relativamente grande.

 ¿Cómo entender el proceso ligero?

Un proceso ligero (Light-weight process, LWP) es un subproceso de usuario compatible con el kernel. Un proceso puede tener uno o más LWP. Cada LWP se asigna uno a uno con un subproceso del kernel, es decir, los LWP son creados por un subproceso del kernel Los subprocesos son compatibles y los LWP son administrados por el kernel y programados como procesos normales .

En la mayoría de los sistemas, un LWP se diferencia de un proceso normal en que solo tiene un contexto de ejecución mínimo y las estadísticas requeridas por el planificador . En términos generales, un proceso representa una instancia del programa y LWP representa el hilo de ejecución del programa, porque un hilo de ejecución no necesita tanta información de estado como un proceso, por lo que LWP no lleva dicha información.

Los subprocesos de usuario también se pueden usar además de LWP, por lo que existen tres tipos de correspondencia entre LWP y los subprocesos de usuario:

  •  1: 1, es decir, un LWP corresponde a un subproceso de usuario
  •  N : 1, es decir, un LWP corresponde a varios subprocesos de usuario
  •  M : N, es decir, múltiples LWP corresponden a múltiples subprocesos de usuario

  Modo 1: 1

Un hilo corresponde a un LWP y luego corresponde a un hilo del núcleo, como se muestra en el proceso 4, que pertenece a este modelo

  • Ventajas: lograr el paralelismo, cuando un LWP está bloqueado, no afectará a otros LWP
  • Desventajas: cada subproceso de usuario genera un subproceso de kernel y la sobrecarga de crear subprocesos es relativamente grande.

 N : 1 modo

Múltiples subprocesos de usuario corresponden a un LWP y luego a un subproceso del núcleo, como se muestra en el proceso 2 de la figura anterior. La administración de subprocesos se realiza en el espacio del usuario. En este modo, los subprocesos de usuario son invisibles para el sistema operativo.

  • Ventajas: no es un problema abrir varios subprocesos de usuario y el cambio de contexto se produce en el espacio del usuario, por lo que la eficiencia de cambio es alta
  • Desventajas: si se bloquea un hilo de usuario, se bloqueará todo el proceso.Además, en una CPU multinúcleo, no hay forma de aprovechar al máximo la CPU.

 Modo M : N

Este modo proporciona dos niveles de control: en primer lugar, varios subprocesos de usuario corresponden a varios LWP, y los LWP corresponden a subprocesos del kernel uno por uno, como se muestra en el proceso 3 de la figura anterior.

  • Ventajas: al combinar las ventajas de los dos primeros, la mayor parte del contexto del subproceso se produce en el espacio del usuario, y varios subprocesos pueden hacer un uso completo de los recursos de la CPU multinúcleo.

modo de combinación

Como en el proceso 5 de la figura anterior, este proceso combina  1:1 modelos y  M:N modelos. Los desarrolladores pueden ajustar la cantidad de subprocesos del kernel según las diferentes características de la aplicación para lograr la mejor solución de paralelismo físico y paralelismo lógico.

Supongo que te gusta

Origin blog.csdn.net/qq_48626761/article/details/132123233
Recomendado
Clasificación