En sistemas operativos, un hilo o hebra (del inglés thread), proceso ligero o subproceso es una secuencia de tareas encadenadas muy pequeña que puede ser ejecutada por un sistema operativo.
Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.
Por otra parte, muchos hilos generalmente comparten otros recursos de forma directa.
Los principales estados de los hilos son: Ejecución, Listo y Bloqueado.
Todos los hilos comparten el mismo espacio de direcciones y otros recursos como pueden ser archivos abiertos.
En tal caso el programador necesita ser cuidadoso para evitar condiciones de carrera (problema que sucede cuando diferentes hilos o procesos alteran datos que otros también están usando), y otros comportamientos no intuitivos.
Fue eliminada en los Celeron al descubrirse que podía ser desbloqueado y posteriormente reintroducido en el Pentium 4, bajo el nombre de HyperThreading.
Los elementos asíncronos de un programa se pueden implementar como hilos.
El núcleo continua planificando el proceso como una unidad y asignándole un único estado (Listo, bloqueado, etc.).
Linux utiliza un método muy particular en el que no hace diferencia entre procesos e hilos.
Para Linux, si varios procesos creados con la llamada al sistema "clone" comparten el mismo espacio de direcciones virtuales, el sistema operativo los trata como hilos, y lógicamente son manejados por el núcleo.
Los múltiples ULT de una sola aplicación se asocian con varios KLT.
El programador puede ajustar el número de KLT para cada aplicación y máquina para obtener el mejor resultado global.
En un método combinado , los múltiples hilos de una aplicación se pueden ejecutar en paralelo en múltiples procesadores y las llamadas al sistema bloqueadoras no necesitan bloquear todo el proceso.