Red de conocimiento del abogados - Respuesta jurídica de la empresa - Un artículo le ayudará a comprender los subprocesos de Python

Un artículo le ayudará a comprender los subprocesos de Python

Subprocesos de Python

El proceso tiene muchas ventajas. Proporciona programación multicanal y puede mejorar la utilización de la CPU de la computadora. Dado que los procesos son tan buenos, ¿por qué necesitamos subprocesos? De hecho, si miras de cerca, encontrarás que el proceso todavía tiene muchos defectos.

Se refleja principalmente en los siguientes aspectos:

Un proceso solo puede realizar una tarea a la vez. Si desea realizar dos tareas o varias tareas al mismo tiempo, debe comenzar. múltiples procesos para completar múltiples tareas.

Si el proceso se bloquea durante la ejecución, como esperar la entrada, todo el proceso se bloqueará. Incluso si parte del trabajo en el proceso no depende de los datos de entrada, no se ejecutará.

Cada proceso tiene su propio espacio independiente, por lo que la creación y destrucción de múltiples procesos lleva más tiempo y consume más recursos del sistema que los subprocesos múltiples.

El proceso es la unidad más pequeña de asignación de recursos y el subproceso es la unidad más pequeña de programación de CPU. Hay al menos un subproceso en cada proceso.

La diferencia entre subprocesos y procesos

se puede resumir en los siguientes cuatro puntos:

1) Espacio de direcciones: Cada proceso es independiente de la memoria. espacio, es decir, los datos de un proceso no son visibles en otro proceso. Sin embargo, los datos se comparten entre subprocesos en el mismo proceso.

2) Comunicación: dado que cada proceso tiene su propio espacio de memoria independiente, la comunicación entre procesos requiere IPC y los datos dentro del proceso son compartidos por varios subprocesos. Se puede acceder a todos los subprocesos, por lo que en orden. Para garantizar la coherencia de los datos, es necesario utilizar bloqueos.

3) Programación y cambio: el cambio de contexto de hilo es mucho más rápido que el cambio de contexto de proceso.

4) En un sistema operativo multiproceso, un proceso no es una entidad ejecutable. Su función principal es solicitar un espacio de memoria del sistema operativo y luego abrir subprocesos en el espacio de memoria para realizarlo. tareas, lo que equivale a un contenedor, el hilo en el contenedor es el cuerpo de ejecución real. Un proceso puede contener varios subprocesos, pero un subproceso no puede contener procesos. Debido a que el proceso es la unidad más pequeña para la asignación de recursos del sistema, los subprocesos no pueden solicitar su propio espacio del sistema operativo, pero un subproceso puede contener varios subprocesos.

Recomendaciones relacionadas: "Videotutorial de Python"

Características de los subprocesos:

En un sistema operativo multiproceso, un proceso generalmente incluye varios subprocesos, cada subproceso es la unidad básica de utilización de la CPU y es una entidad que consume una sobrecarga mínima. Los hilos tienen las siguientes propiedades.

1) Entidades ligeras

Las entidades en el hilo básicamente no poseen recursos del sistema, solo tienen algunos recursos indispensables que pueden garantizar un funcionamiento independiente.

Las entidades de subprocesos incluyen programas, datos y TCB. Thread es un concepto dinámico y sus características dinámicas se describen mediante Thread Control Block (TCB).

2) Unidad básica de programación y despacho independiente.

En un sistema operativo multiproceso, un subproceso es la unidad básica que puede ejecutarse de forma independiente y, por lo tanto, también es la unidad básica de programación y envío independientes. Debido a que los subprocesos son muy "ligeros", el cambio de subprocesos es muy rápido y tiene poca sobrecarga (en el mismo proceso).

3) *** Compartir recursos del proceso.

Cada subproceso en el mismo proceso puede compartir los recursos que posee el proceso. Esto se refleja primero en: todos los subprocesos tienen el mismo ID de proceso, lo que significa que el subproceso puede acceder a todos los recursos de memoria del proceso. ; además, también puede acceder a archivos abiertos, temporizadores, mecanismos de semáforo, etc. propiedad del proceso. Dado que los subprocesos en el mismo proceso comparten memoria y archivos, los subprocesos no necesitan llamar al kernel para comunicarse entre sí.

4) Ejecución concurrente

Se pueden ejecutar varios subprocesos en un proceso al mismo tiempo, e incluso todos los subprocesos de un proceso se pueden ejecutar al mismo tiempo, de manera similar, también se pueden ejecutar diferentes subprocesos en el proceso; al mismo tiempo, utilizar y ejercer plenamente la capacidad del procesador y los dispositivos periféricos para trabajar en paralelo.

La implementación de threads se puede dividir en dos categorías:

User-Level Thread y Kernel-Level Thread, este último también se llama kernel support Threads o procesos livianos. En los sistemas operativos multiproceso, los métodos de implementación de cada sistema son diferentes. En algunos sistemas, se implementan subprocesos a nivel de usuario y en algunos sistemas, se implementan subprocesos a nivel de kernel. ?

La diferencia entre subprocesos de usuario y subprocesos del kernel:

1. Los subprocesos de soporte del kernel son perceptibles para el kernel del sistema operativo, mientras que los subprocesos a nivel de usuario son imperceptibles para el kernel del sistema operativo.

2. La creación, cancelación y programación de subprocesos a nivel de usuario no requieren el soporte del kernel del sistema operativo y se manejan a nivel de lenguaje (como Java); Los subprocesos compatibles con el kernel requieren soporte que proporciona el kernel del sistema operativo y es en gran medida lo mismo que la creación, destrucción y programación de procesos.

3. Cuando un subproceso de nivel de usuario ejecuta una instrucción de llamada al sistema, el proceso al que pertenece se interrumpirá. Sin embargo, cuando un subproceso de soporte del kernel ejecuta una instrucción de llamada al sistema, solo provocará el subproceso. ser interrumpido.

4. En un sistema con solo subprocesos a nivel de usuario, la programación de la CPU todavía se basa en el proceso. El programa de usuario controla varios subprocesos en un proceso en ejecución para que se ejecuten en rotación si hay soporte para el kernel. En un sistema de subprocesos, la programación de la CPU se basa en subprocesos y el programador de subprocesos del sistema operativo es responsable de la programación de subprocesos.

5. La entidad de programa de subprocesos a nivel de usuario es un programa que se ejecuta en modo de usuario, mientras que la entidad de programa de subprocesos compatibles con el kernel es un programa que se puede ejecutar en cualquier estado.

Ventajas y desventajas de los subprocesos del kernel:

Ventajas: Cuando hay varios procesadores, se pueden ejecutar varios subprocesos de un proceso simultáneamente.

Desventajas: Programación por kernel.

Ventajas y desventajas de los hilos de usuario:

Ventajas:

La programación de hilos no requiere la participación directa del kernel y es fácil de controlar.

Puede implementarse en sistemas operativos que no admitan subprocesos.

El costo de la gestión de subprocesos, como la creación y destrucción de subprocesos y los costos de cambio de subprocesos, es mucho menor que el de los subprocesos del kernel.

Permite que cada proceso personalice su propio algoritmo de programación y la gestión de subprocesos es más flexible.

Los subprocesos pueden utilizar más espacio de tabla y de pila que los subprocesos a nivel de kernel.

Solo se puede ejecutar un hilo en el mismo proceso al mismo tiempo. Si un hilo se bloquea mediante una llamada al sistema, se suspenderá todo el proceso. Además, la falla de la página también causará el mismo problema.

Desventajas:

La programación de recursos se basa en procesos en múltiples procesadores, los subprocesos en el mismo proceso solo pueden compartirse y multiplexarse ​​en el mismo procesador.