¿Qué son los Thread?

12.09.2022

Los hilos, threads o subprocesos no forman parte física del procesador, no al menos en lo que se refiere a más cantidad de núcleos o algo por el estilo.

Podemos definir un hilo de procesamiento como el flujo de control de datos de un programa. Es un medio que permite administrar las tareas de un procesador y de sus diferentes núcleos de una forma más eficiente. Gracias a los hilos, las unidades mínimas de asignación, que son las tareas o procesos de un programa, pueden dividirse en trozos para así optimizar los tiempos de espera de cada instrucción en la cola del proceso. Estos trozos se llaman subprocesos o threads.


Dicho de otra forma, cada hilo de procesamiento contiene un trozo de la tarea a realizar, algo más simple de realizar que si introducimos la tarea completa en el núcleo físico. De esta forma la CPU es capaz de procesar varias tareas al mismo tiempo y de forma simultánea, de hecho, podrá hacer tantas tareas como hilos tenga, y normalmente son una o dos por cada núcleo. En los procesadores que tienen por ejemplo 6 núcleos y 12 hilos serán capaces de dividir los procesos en 12 tareas distintas en lugar de solamente 6.

Esta forma de trabajar hace que los recursos del sistema sean administrados de forma más equitativa y eficiente. Ya sabes...el divide y vencerás de toda la vida. Estos procesadores se denominan multi-hilo. Por ahora, lo que debemos tener claro es que un procesador con 12 hilos, no va a tener 12 núcleos, los núcleos son algo de origen físico y los hilos algo de origen lógico.

Eso seguramente haya quedado algo abstracto y difícil de entender, así que vamos a ver cómo se traduce si hablamos de la arquitectura de un programa en nuestro ordenador.

Los programas, procesos e hilos

Todos sabemos qué es un programa, es un código que se almacena en nuestro ordenador y que está destinado a llevar a cabo alguna tarea concreta. Una aplicación es un programa, un driver también lo es e incluso el sistema operativo es un programa capaz de ejecutar otros programas en su interior. Todos ellos están almacenados en forma binaria, ya que el procesador solo entiende de unos y ceros, corriente / no corriente.

Los procesos del programa


Para ejecutar un programa, este se carga en memoria, la memoria RAM. Este programa es cargado mediante procesos, los cuales llevan su código binario asociado y los recursos que necesita para operar, que serán asignados de forma "inteligente" por el sistema operativo.

Los recursos básicos que necesita un proceso son, un contador de programa, y una pila de registros.

  • Contador de programa (CP): se llama puntero de instrucciones, y realiza el seguimiento de la secuencia de instrucciones que se vayan procesando.
  • Registros: es un almacén ubicado en el procesador en donde se puede guardar una instrucción, una dirección de almacenamiento o cualquier otro dato.
  • Pila: es la estructura de datos que almacena la información relativa a las instancias que un programa tiene activas en el ordenador.

Entonces cada programa está dividido en procesos, y está almacenado en un lugar determinado en memoria. Además, cada proceso se ejecuta de forma independiente, y esto es muy importante de entender porque así es como el procesador y el sistema son capaces de ejecutar varias tareas al mismo tiempo, lo que denominamos sistema multitarea. Este sistema de procesamiento es el culpable de que podamos seguir trabajando en nuestro PC, aunque un programa se haya quedado bloqueado.

Los hilos de un proceso


Aquí es donde hacen acto de presencia los hilos de procesamiento, denominados subprocesos en los sistemas operativos. Un hilo es la unidad de ejecución de un proceso. Podemos dividir el proceso en subprocesos, y cada uno de ellos será un hilo de ejecución.

Si un programa no es multi-hilo, los procesos dentro de él solamente tendrán un hilo, así que solamente se podrán procesar de una sola vez. Por el contrario, si tenemos procesos multi-hilo, estos podrán dividirse en varios trozos, y cada uno de esos hilos comparte los recursos asignados al proceso. Por eso dijimos que la ejecución en múltiples hilos es más eficiente.

Además, cada hilo cuenta con su propia pila de registros por lo que podrán procesarse dos o más de ellos al mismo tiempo, al contrario que un solo proceso, que tendrá que ejecutarse todo de una sola vez. Los subprocesos son tareas más sencillas que permiten ejecutar un proceso de forma dividida. Y esta es básicamente la función final de los hilos de procesamiento. Cuantos más hilos, mayor división de procesos, y mayor volumen de cálculos simultáneos y entonces, mayor eficiencia.

Todavía no hemos terminado, aún tenemos la pregunta pendiente de ¿Qué ocurre entonces con un núcleo con doble hilo? Ya dijimos que cada núcleo es capaz de ejecuta una sola instrucción a la vez. La CPU cuenta con un complejo algoritmo que divide de la forma más eficiente posible los tiempos de ejecución, así asigna a cada tarea un determinado intervalo de ejecución. El cambio entre tareas es tan rápido, que dará la sensación de que el nucleo ejecuta tareas de forma paralela.


REFERECIAS

https://www.profesionalreview.com/2019/04/03/que-son-los-hilos-de-un-procesador/

¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar