Un hilo, thread, o proceso ligero, comparte la imagen de memoria y otra información con otros hilos de un Proceso. Si un proceso tiene varios hilos, tiene más de un flujo de ejecución.

En un Sistema Operativo multihilos, la unidad básica de uso del CPU es el hilo. Cada hilo tiene su propio contador de programa, registros, pila, y estado. El resto de información del proceso es compartida entre los hilos.

Procesos hijos de un procesoHilos de un mismo proceso
Manejados por el SOManejados por el proceso
Memoria privadaMemoria compartida
Más pesadosMás livianos
Más lentos de crearMás rápidos de crear
IndependientesRelacionados con otros hilos
Pueden crear procesos hijosNo existen “hilos hijos”

La Planificación de Procesos para los hilos puede ser:

  1. Por prioridades.
  2. Variación dinámica del quantum: para sistemas interactivos.
  3. Forzada: el proceso decide.
  4. Por afinidad: un hilo busca ejecutarse siempre en el mismo procesador.

Hilos a Nivel de Usuario

El proceso gestiona los hilos con una librería de hilos, sin que el SO se entere.

Los cambios de contexto son rápidos porque no requieren Llamadas al Sistema, pero las aplicaciones multihilo no pueden usar paralelismo, porque una syscall del proceso bloquea a todos sus hilos.

Hilos a Nivel de Kernel

El SO soporta los hilos y crea un thread de kernel por cada thread de usuario.

El kernel puede planificar múltiples hilos en simultáneo, incluso las propias funciones del SO, pero el paso de control de un hilo a otro requiere un cambio de modo.