← Blog

Threads (Hilos) — Referencia de Conceptos

Conceptos sobre hilos (threads) en sistemas operativos: modelo multihilo, ventajas, casos de uso en procesadores de texto, hojas de cálculo y servidores web.

Tesis

Un hilo (thread) es una unidad de ejecución dentro del mismo espacio de direcciones de un proceso. Los sistemas tradicionales dan a cada proceso un solo hilo de control; los modernos permiten múltiples hilos dentro de un proceso compartiendo memoria y datos. Es la abstracción que permite superponer E/S, cómputo y salida dentro de una misma aplicación.

Desglose del modelo multihilo

Diferencia clave con procesos

Los hilos comparten el mismo espacio de direcciones; los procesos tienen espacios separados. Esto los hace ideales para tareas cooperativas que acceden a los mismos datos, y los hace más ligeros: crear un hilo es de 10 a 100 veces más rápido que crear un proceso.

Cuándo aportan rendimiento

Los hilos brillan cuando hay cómputo intensivo combinado con operaciones de E/S (I/O). En sistemas con múltiples CPUs pueden ejecutarse en paralelo real; si todos los hilos son intensivos en CPU, no hay mejora de rendimiento.

Casos de uso

Procesador de texto: un hilo maneja la interacción con el usuario, otro reformatea el texto en segundo plano (el usuario sigue trabajando, sin retrasos percibidos), y un tercero hace respaldos automáticos en disco. Si fuera monohilo, teclado y ratón se ignorarían durante el respaldo. Tres procesos no funcionarían: no compartirían la memoria y no podrían trabajar sobre el mismo documento.

Hojas de cálculo: un hilo acepta cambios del usuario mientras otro recalcula las celdas y un tercero hace copias de seguridad periódicas.

Servidores web: un hilo despachador (dispatcher thread) recibe solicitudes y las asigna a hilos trabajadores, que verifican la caché (páginas de acceso frecuente en memoria, como la home) o leen del disco. Un servidor monohilo queda inactivo esperando el disco y procesa muchas menos solicitudes por segundo.

Modelo de procesamiento de datos

Un proceso que maneja grandes volúmenes de datos se estructura con un hilo de entrada (lee datos y los coloca en un búfer de entrada), un hilo de procesamiento (toma del búfer, procesa, envía al de salida) y un hilo de salida (escribe los resultados en disco). Los hilos permiten superponer entrada, procesamiento y salida simultáneamente.

Condición de funcionamiento

Para que el modelo funcione correctamente, las llamadas al sistema deben bloquear solo el hilo que las ejecuta, no todo el proceso.

Q&A de referencia

Modelo general

  • ¿Cuántos hilos de control tiene un proceso en SO tradicionales? Uno solo.
  • ¿Qué es un hilo dentro de un proceso? Una unidad de ejecución dentro del mismo espacio de direcciones.
  • ¿Por qué es útil tener múltiples hilos? Permite dividir actividades concurrentes que pueden bloquearse, simplificando el modelo de programación.
  • ¿Qué diferencia a los hilos de los procesos en espacio de direcciones? Los hilos comparten el mismo espacio; los procesos no.
  • ¿Por qué los hilos son más ligeros? Son más rápidos de crear y destruir.
  • ¿Cuánto más rápido? De 10 a 100 veces.
  • ¿En qué tareas dan mejor rendimiento? Combinando cómputo intensivo y operaciones de E/S.
  • ¿En qué sistemas se ejecutan en paralelo real? En sistemas con múltiples CPUs.
  • ¿Qué ventaja tiene el modelo multihilo frente a interrupciones? Es más simple de programar.
  • ¿Qué comparten los hilos que los hace ideales para tareas cooperativas? El mismo espacio de direcciones y los datos.
  • ¿Qué pasa si todos los hilos son intensivos en CPU? No hay mejora de rendimiento.
  • ¿Qué condición debe cumplirse para que el modelo funcione? Que las llamadas al sistema bloqueen solo el hilo que las ejecuta, no todo el proceso.

Procesador de texto

  • ¿Para qué se usan hilos? Para dividir tareas: interacción con el usuario, reformatación del texto y respaldo en disco.
  • ¿Qué ventaja da un hilo dedicado a reformatear en segundo plano? El usuario sigue trabajando mientras se procesa el documento.
  • ¿Qué problema evita? Retrasos percibidos al esperar la reformatación.
  • ¿Qué hace el tercer hilo? Guarda automáticamente el archivo en disco.
  • ¿Qué pasaría si fuera monohilo y se hiciera un respaldo? Teclado y ratón serían ignorados durante el respaldo.
  • ¿Por qué no tres procesos? No compartirían memoria y no podrían trabajar sobre el mismo documento.
  • ¿Por qué dividir un libro en muchos archivos es problemático? Dificulta cambios globales rápidos; mantener un documento largo como un solo archivo permite búsquedas y sustituciones globales.

Hoja de cálculo

  • ¿Qué ventaja da un hilo en segundo plano? Recalcula las celdas mientras el hilo interactivo sigue aceptando cambios.
  • ¿Qué hace el tercer hilo? Copias de seguridad periódicas en disco.

Servidor web

  • ¿Para qué sirve la caché? Almacena páginas accedidas frecuentemente en memoria y evita acceder al disco.
  • ¿Qué páginas se guardan? Las muy solicitadas, como la home.
  • ¿Qué hilo recibe las solicitudes? El hilo despachador (dispatcher thread).
  • ¿Qué hace al recibir una solicitud? Selecciona un hilo trabajador inactivo y le asigna la solicitud.
  • ¿Qué transición realiza el despachador? Pasa al trabajador de bloqueado a listo.
  • ¿Qué hace un trabajador al despertar? Verifica si la página está en caché; si no, la lee del disco y la retorna.
  • ¿Cuál es la estructura del despachador? Un bucle infinito que recibe solicitudes y las delega a trabajadores.
  • ¿Cuál es la estructura del trabajador? Un bucle infinito que procesa solicitudes, busca en caché o accede al disco.
  • ¿Qué pasa con un servidor monohilo? Queda inactivo esperando el disco y no atiende nuevas solicitudes.
  • ¿Cuál es el impacto? Procesa muchas menos solicitudes por segundo.

Procesamiento de datos

  • ¿Cómo se estructura un proceso que maneja grandes volúmenes de datos? Con un hilo de entrada, uno de procesamiento y uno de salida.
  • ¿Qué hace el de entrada? Lee los datos y los coloca en un búfer de entrada.
  • ¿Qué hace el de procesamiento? Toma del búfer de entrada, procesa y envía al de salida.
  • ¿Qué hace el de salida? Escribe los resultados procesados en el disco.