Conceptos fundamentales sobre procesos, hilos, planificación y sincronización
Un proceso es un programa en ejecución que requiere recursos del sistema como CPU, memoria y dispositivos de E/S. Cada proceso tiene su propio espacio de memoria y contexto de ejecución.
Ejemplo: Un archivo .exe es un programa; cuando se ejecuta, se convierte en un proceso.
Un hilo es la unidad más pequeña de procesamiento que puede ser ejecutada por un sistema operativo. Es una secuencia de instrucciones dentro de un proceso que se puede ejecutar independientemente.
| Característica | Proceso | Hilo |
|---|---|---|
| Definición | Programa en ejecución con su propio espacio de memoria | Parte de un proceso que comparte su espacio de memoria |
| Recursos | Tiene sus propios recursos asignados | Comparte recursos con otros hilos del mismo proceso |
| Creación | Más costosa en tiempo y recursos | Más rápida y con menos sobrecarga |
| Comunicación | Requiere mecanismos complejos (pipes, sockets) | Más rápida al compartir memoria |
Ocurre cuando múltiples hilos acceden a datos compartidos sin sincronización, y el resultado depende del orden de ejecución.
Ejemplo: Dos hilos incrementando un contador compartido sin protección.
Situación donde hilos se bloquean mutuamente esperando recursos que están siendo retenidos por otros hilos.
Condiciones necesarias:
Cuando un hilo no puede acceder a recursos porque otros hilos siempre tienen prioridad.
Escenario donde un hilo productor genera datos y un hilo consumidor los procesa, compartiendo un buffer de tamaño limitado.