?Qué significa multihilo?
El multihilo es una característica de la CPU (unidad central de proceso) que permite que dos o más hilos de instrucciones se ejecuten independientemente mientras comparten los mismos recursos de proceso. Un hilo es una secuencia autónoma de instrucciones que puede ejecutarse en paralelo con otros hilos que forman parte del mismo proceso raíz.
El multihilo permite realizar múltiples tareas concurrentes dentro de un único proceso. Cuando los científicos de datos están entrenando algoritmos de aprendizaje automático, un enfoque multihilo de la programación puede mejorar la velocidad en comparación con los programas tradicionales de multiprocesamiento paralelo.
Aunque para un sistema operativo (SO) es más rápido cambiar entre hilos para una tarea activa de la CPU que cambiar entre diferentes procesos, el multihilo requiere una programación cuidadosa para evitar conflictos causados por condiciones de carrera y bloqueos.
Para evitar condiciones de carrera y bloqueos, los programadores utilizan bloqueos que impiden que varios subprocesos modifiquen el valor de la misma variable al mismo tiempo.
Definición de multihilo
Las versiones de 32 y 64 bits de Windows utilizan subprocesos múltiples preventivos en los que se comparte el tiempo disponible del procesador. Todos los subprocesos tienen el mismo tiempo y son atendidos en un modelo basado en colas.
Durante el cambio de hilo, el contexto de un hilo preferente se almacena y se recarga en el siguiente hilo de la cola. Esto lleva tan poco tiempo, que los hilos en ejecución parecen ejecutarse en paralelo.
?Cómo funciona el multihilo?
En programación, un hilo mantiene una lista de información relevante para su ejecución, incluyendo el programa de prioridades, los manejadores de excepciones, un conjunto de registros de la CPU y el estado de la pila en el espacio de direcciones de su proceso anfitrión.
Los subprocesos pueden ser útiles en un sistema monoprocesador porque permiten que el subproceso de ejecución principal responda a la entrada del usuario, mientras que los subprocesos de apoyo ejecutan tareas de larga duración en segundo plano que no requieren la intervención del usuario.
Al pensar en cómo se realiza el multihilo, es importante separar los dos conceptos de procesamiento paralelo y concurrente.
El multiprocesamiento paralelo significa que el sistema maneja realmente más de un hilo a la vez. El procesamiento concurrente significa que sólo se manejará un hilo a la vez, pero el sistema creará eficiencias moviéndose rápidamente entre dos o más hilos.
Otra cosa importante que hay que tener en cuenta es que, a efectos prácticos, los sistemas informáticos configurados para usuarios humanos pueden tener sistemas paralelos o concurrentes, con el mismo resultado final: el proceso parece paralelo para el usuario porque el ordenador trabaja muy rápido en términos de microsegundos.
La evolución de los sistemas multinúcleo significa que hay más paralelismo, lo que alivia la necesidad de un procesamiento concurrente eficiente. El desarrollo de microchips y procesadores más rápidos y potentes en este extremo de la expansión de la ley de Moore es importante para este tipo de dise?o de hardware y para la ingeniería en general.
Además, gran parte del procesamiento paralelo o concurrente está disponible según los caprichos del sistema operativo. Así que, en efecto, para el usuario humano, el proceso paralelo o concurrente, o los procesos que se mezclan, se experimentan todos como paralelismo en tiempo real.
Tipos de multihilo
Existen distintos tipos de multihilo según las distintas versiones de los sistemas operativos y los controles relacionados que han evolucionado en la informática: por ejemplo, en el multihilo preventivo, el cambio de contexto lo controla el sistema operativo. Luego está el multihilo cooperativo, en el que el cambio de contexto lo controla el hilo. Esto puede provocar problemas, como bloqueos si un hilo se bloquea esperando a que se libere un recurso.
También se aplican muchos otros tipos de modelos para el multihilo; por ejemplo, los modelos de multihilo de grano grueso, intercalado y simultáneo determinarán cómo se coordinan y procesan los hilos. Otras opciones para el multihilo incluyen los modelos muchos a muchos, muchos a uno y uno a uno.
Algunos modelos utilizarán conceptos como el tiempo igual para intentar repartir la ejecución entre los subprocesos. El tipo de multihilo depende del propio sistema, de su filosofía y de su construcción, y de cómo planificaron los ingenieros la funcionalidad multihilo dentro de él.
En el modelo de sistema activo/pasivo, un hilo permanece atento a un usuario, y otro hilo trabaja en tareas a más largo plazo en segundo plano.
Este modelo es útil para promover un sistema que parezca paralelo desde el punto de vista del usuario, lo que nos lleva a un punto importante en la evaluación de procesos como el microhilado desde ambos extremos: desde la perspectiva del ingeniero y desde la perspectiva del usuario final.
Multihilo vs. Multiprocesamiento
En programación, un flujo de instrucciones se denomina hilo y la instancia del programa informático que se está ejecutando se denomina proceso. Cada proceso tiene su propio espacio de memoria donde almacena los hilos y otros datos que el proceso necesita para ejecutarse.
Mientras que el multihilo permite a un proceso crear más hilos para mejorar la capacidad de respuesta, el multiprocesamiento simplemente a?ade más CPU para aumentar la velocidad.