Hilos de peso ligero, mediano y pesado

En la programación de computadoras, un hilo es una instancia de una secuencia de código que opera como una unidad, típicamente en nombre de un solo usuario, transacción o mensaje. Los subprocesos a veces se describen en términos de su peso, es decir, cuánta información contextual debe guardarse para un subproceso determinado para que el sistema pueda hacer referencia a él durante la vida del subproceso.

Por ejemplo, el contexto de un proceso UNIX incluye el registro de hardware, la pila del kernel, la pila a nivel de usuario, etc. El tiempo necesario para cambiar tanto contexto, en miles de microsegundos, se considera grande, por lo que se dice que un proceso UNIX es un hilo pesado.

En algunos núcleos de sistemas operativos modernos, como Mach, pueden existir varios subprocesos en un solo espacio de direcciones, lo que disminuye la cantidad de contexto que debe guardarse con cada uno y reduce el tiempo de conmutación a cientos de microsegundos. Estos subprocesos a nivel de kernel se consideran subprocesos de peso medio.

Cuando todas las operaciones de contexto y subproceso se exponen a nivel de usuario, cada aplicación necesita solo la cantidad mínima de contexto guardada con ella, de modo que el cambio de contexto se puede reducir a decenas de microsegundos. Por lo tanto, los subprocesos a nivel de usuario se consideran subprocesos ligeros.