Definición de Proceso
Programa vs. Proceso
Un programa es un conjunto pasivo de instrucciones almacenadas en disco, mientras que un proceso es un programa en ejecución activa que utiliza recursos del sistema como CPU, memoria y dispositivos de E/S.
Entidad Activa
Un proceso es una entidad activa con su propio contexto de ejecución, contador de programa, registros de CPU y espacio de direcciones en memoria.
Ciclo de Vida de un Proceso
Nuevo
Proceso creado
Listo
Espera asignación de CPU
Ejecutando
Se ejecuta en la CPU
Esperando
A la espera de un evento
Terminado
Finalizó su ejecución
Estructura de un Proceso (PCB)
Process Control Block
El PCB almacena toda la información necesaria para gestionar un proceso:
Identificador (PID)
Número único que identifica al proceso
Estado actual
Nuevo, Listo, Ejecutando, Esperando, Terminado
Contador de programa
Dirección de la siguiente instrucción a ejecutar
Registros de CPU
Estado de todos los registros del procesador
Información de planificación
Prioridad, quantum, tiempo de CPU usado
Recursos de E/S
Archivos abiertos, pipes, colas de comunicación
Tipos de Procesos y Jerarquía
Dependencia
Origen
Interacción
Jerarquía
Planificación de Procesos
Objetivos principales: Garantizar equidad, eficiencia, minimizar tiempo de respuesta y maximizar la utilización de la CPU.
| Algoritmo | Descripción breve | Ventaja | Desventaja |
|---|---|---|---|
| FCFS | Orden de llegada (First Come, First Served) | Simple de implementar | Efecto convoy en procesos largos |
| SJF | Prioriza el trabajo más corto (Shortest Job First) | Minimiza tiempo de espera promedio | Posible inanición de procesos largos |
| Round Robin | Quantum fijo de tiempo por proceso | Equidad y tiempo de respuesta predecible | Rendimiento depende del tamaño del quantum |
| Prioridades | Asignación según nivel de prioridad | Control sobre procesos urgentes | Inanición de procesos de baja prioridad |
Sincronización e Interbloqueo
Sincronización
Asegura el acceso ordenado a recursos compartidos mediante:
- Semáforos: Contadores para controlar acceso
- Mutex: Exclusión mutua binaria
- Monitores: Estructuras de alto nivel
Condiciones de Interbloqueo
Prevención y Recuperación
- Algoritmo del banquero
- Detección y reinicio de procesos
- Evitar condiciones de Coffman
Hilos (Threads)
Los hilos son la unidad más pequeña de ejecución dentro de un proceso. Comparten el mismo espacio de direcciones pero tienen su propio stack y registros.
Modelos de Hilos
- Usuario: Gestionados por bibliotecas
- Kernel: Gestionados por el SO
- Híbrido: Combinación de ambos
Ventajas
- Menor sobrecarga de creación
- Paralelismo real en sistemas SMP
- Comunicación rápida (memoria compartida)
- Mejor respuesta en aplicaciones interactivas
Problemas
- Condiciones de carrera (race conditions)
- Interbloqueos (deadlocks)
- Inanición (starvation)
- Complejidad en la sincronización
Tendencias Actuales y Tecnologías Emergentes
Planificadores Multinivel
Sistemas modernos como Linux CFS y Windows Scheduler utilizan colas multinivel con retroalimentación dinámica para equilibrar interactividad y throughput.
Sistemas en Tiempo Real
Algoritmos Rate Monotonic (RMS) y Earliest Deadline First (EDF) garantizan plazos críticos en aplicaciones embebidas y de misión crítica.
Contenerización
Docker y Kubernetes aíslan procesos en contenedores, gestionando recursos con cgroups y namespaces para mayor eficiencia.
Observabilidad
Herramientas como htop, perf y sistemas de telemetría (Prometheus) permiten medir utilización, latencias y cuellos de botella.
Procesos Asíncronos
Arquitecturas basadas en eventos (Node.js, Golang goroutines) optimizan la concurrencia sin hilos pesados del sistema.
Seguridad y Sandboxing
Tecnologías como SELinux, AppArmor y sandboxing de navegadores aíslan procesos para minimizar riesgos de seguridad.