Hilos (threads) y multitarea
1. Qué es un hilo? #
Un hilo (thread) es la unidad más pequeña de ejecución dentro de un proceso. 👉 Mientras que un proceso tiene su propio espacio de memoria y recursos, los hilos comparten la memoria y recursos del proceso padre, pero pueden ejecutar diferentes partes del código de manera concurrente.
Ejemplo:
- En un navegador, un hilo puede encargarse de la interfaz, otro de cargar imágenes y otro de reproducir un vídeo.
2. Diferencia entre proceso e hilo #
| Característica | Proceso | Hilo |
|---|---|---|
| Memoria | Tiene su propia memoria | Comparte la memoria del proceso |
| Peso | "Pesado" → requiere más recursos | "Ligero" → más eficiente |
| Comunicación | Más difícil (IPC) | Más fácil (comparten memoria) |
| Ejemplo | Abrir Word | Revisión ortográfica y auto-guardado en paralelo |
3. Multitarea #
La multitarea es la capacidad del sistema operativo para ejecutar varios procesos o hilos a la vez.
- No significa que todos se ejecuten exactamente al mismo tiempo, sino que el procesador cambia tan rápido entre ellos que da la ilusión de simultaneidad.
👉 Tipos:
-
Multitarea cooperativa
- Cada proceso “cede” voluntariamente el control al SO.
- Ejemplo: MacOS clásico, Windows 3.1.
- Problema: si un proceso no cede, puede bloquear el sistema.
-
Multitarea preventiva
- El SO decide cuánto tiempo tiene cada proceso (planificación por quantum).
- Ejemplo: Windows modernos, Linux, macOS.
4. Multihilo (multithreading) #
Cuando un proceso tiene varios hilos que se ejecutan en paralelo.
- Mejora el rendimiento: aprovecha mejor los procesadores multinúcleo.
- Permite aplicaciones más responsivas: un hilo puede atender al usuario mientras otro procesa datos.
5. Ejemplo práctico #
Un editor de vídeo:
- Hilo 1 → Interfaz gráfica (mostrar botones, menús).
- Hilo 2 → Reproducción de vídeo.
- Hilo 3 → Exportación en segundo plano.
Todo ocurre dentro del mismo proceso, compartiendo recursos.
Resumen del tema
Conceptos clave #
- Concepto de Hilo (Thread): unidad básica de asignación de CPU dentro de un proceso. Comparte el espacio de direcciones (código y datos globales) y recursos abiertos con otros hilos del mismo proceso, pero posee su propio contador de programa (PC), registros y pila (stack).
- Comparativa Proceso vs Hilo: los hilos son procesos ligeros (LWP) con cambios de contexto mucho más rápidos y comunicación directa por memoria compartida.
- Modelos de Multitarea:
- Cooperativa: los procesos ceden voluntariamente la CPU (obsoleta y vulnerable a bloqueos).
- Apropiativa / Preventiva (Preemptive): el planificador del kernel interrumpe los hilos tras agotar su quantum de tiempo.
- Modelos de Mapeo de Hilos: hilos de usuario frente a hilos de kernel (modelos 1:1, N:1, M:N).
Qué debes recordar #
Los hilos permiten ejecución concurrente compartiendo memoria dentro de un proceso, aprovechando procesadores multinúcleo mediante multitarea preventiva.