Los hilos
Un hilo (thread) es la unidad mínima de ejecución dentro de un proceso Los hilos (threads) también sirven para ejecutar tareas a la vez, pero funcionan de manera diferente a los núcleos.
Un núcleo es una unidad física de procesamiento dentro del procesador, mientras que un hilo es una unidad de trabajo que puede ser ejecutada por un núcleo.
Diferencias clave entre núcleos e hilos:
- Núcleos: Son físicos. Si tienes un procesador de 4 núcleos, significa que puede ejecutar hasta 4 tareas a la vez de manera independiente.
- Hilos: Son lógicos. Un núcleo puede manejar más de un hilo si la CPU tiene Hyper-Threading (Intel) o SMT (AMD). Por ejemplo, un procesador de 4 núcleos con Hyper-Threading puede manejar 8 hilos, lo que mejora la multitarea.
¿Para qué sirven los hilos?
- Permiten que una tarea se divida en subprocesos más pequeños, mejorando la eficiencia en ciertos programas.
- Mejoran el rendimiento en aplicaciones optimizadas para múltiples hilos, como edición de video, videojuegos, y simulaciones.
- En procesadores con Hyper-Threading o SMT, ayudan a aprovechar mejor los recursos del núcleo cuando hay tiempos de espera en las instrucciones.
Sin embargo, los hilos no son lo mismo que tener más núcleos físicos. Si un núcleo tiene 2 hilos, esos hilos aún comparten los recursos del mismo núcleo, por lo que no es tan eficiente como tener un núcleo adicional.
La TCB y su relacion con la PCB
¿Qué es la TCB (Thread Control Block)?
La TCB (Thread Control Block) es una estructura de datos del sistema operativo que almacena toda la información necesaria para administrar y ejecutar un hilo (thread). Es análoga a la PCB (Process Control Block) de los procesos, pero específica de cada hilo.
Relación entre PCB y TCB
- La PCB es para procesos, y contiene información global como:
- Espacio de direcciones (memoria)
- Archivos abiertos
- Identificador de proceso (PID)
- Estado del proceso
- Información de scheduling del proceso
- La TCB es para hilos, y cada hilo tiene su propia TCB.
- Un proceso puede tener múltiples hilos, y por lo tanto, múltiples TCBs.
- La PCB no contiene directamente las TCBs, pero puede tener una referencia o lista de TCBs asociadas a sus hilos.
¿Cada hilo tiene su TCB?
Sí, cada hilo (ya sea del kernel o del espacio de usuario, dependiendo del modelo de hilos) tiene su propia TCB, con información específica del hilo.