Red de conocimiento informático - Material del sitio web - ¿Qué es el subproceso múltiple?

¿Qué es el subproceso múltiple?

Multithreading (multithreading) se refiere a la tecnología que implementa la ejecución simultánea de múltiples hilos desde software o hardware. Las computadoras con capacidades de subprocesos múltiples tienen soporte de hardware que les permite ejecutar más de un subproceso al mismo tiempo, mejorando así el rendimiento general del procesamiento. Los sistemas con esta capacidad incluyen multiprocesadores simétricos, procesadores multinúcleo y procesadores multiprocesamiento a nivel de chip o multiproceso simultáneo. En un programa, estos fragmentos de programa que se ejecutan de forma independiente se denominan "subprocesos" y el concepto de programación que los utiliza se denomina "subprocesos múltiples".

En programación informática, un concepto básico es controlar múltiples tareas al mismo tiempo. Muchos problemas de programación requieren que el programa detenga lo que está haciendo, solucione algún otro problema y luego regrese al proceso principal. Esto se puede lograr de varias maneras. Al principio, los programadores que dominaban el lenguaje de bajo nivel de la máquina escribieron algunas "rutinas de servicio de interrupción" y la suspensión del proceso principal se logró mediante interrupciones a nivel de hardware. Aunque se trataba de un enfoque útil, el programa resultante era difícil de adaptar, lo que creaba otro tipo de problema costoso. Las interrupciones son necesarias para tareas que se realizan en gran medida en tiempo real. Pero para muchos otros problemas, sólo es necesario dividir el problema en fragmentos de programa que se ejecutan de forma independiente para que todo el programa pueda responder a las solicitudes de los usuarios más rápidamente.

Al principio, los subprocesos eran solo una herramienta para asignar tiempo de procesamiento en un único procesador. Pero si el propio sistema operativo admite varios procesadores, entonces cada subproceso se puede asignar a un procesador diferente y realmente entrar en el estado de "computación paralela". Desde la perspectiva del lenguaje de programación, una de las características más valiosas de las operaciones multiproceso es que al programador no le importa cuántos procesadores se utilizan. El programa está lógicamente dividido en varios subprocesos; si la máquina está equipada con varios procesadores, el programa se ejecutará más rápido sin ningún ajuste especial. Según la discusión anterior, es posible que sienta que el procesamiento de subprocesos es muy simple. Pero debemos prestar atención a una cuestión: ¡los recursos compartidos! Si tiene varios subprocesos ejecutándose simultáneamente e intentan acceder al mismo recurso, se encontrará con un problema. Por ejemplo, dos subprocesos no pueden enviar información a una impresora al mismo tiempo. Para solucionar este problema, los recursos que se pueden compartir (como las impresoras) deben bloquearse durante su uso. Entonces un hilo puede bloquear un recurso y, después de completar su tarea, desbloquear (liberar) el bloqueo para que otros hilos puedan continuar usando el mismo recurso.