Historia y evolución
Evolución de los sistemas operativos
La evolución de los sistemas operativos no es una línea recta de "progreso", sino una respuesta directa a una pregunta económica: ¿Qué es más caro, el tiempo de la máquina o el tiempo del humano?
A continuación, recorremos las cuatro eras que definieron la arquitectura actual, basándonos en la clasificación clásica de Silberschatz.
Era 1: Procesamiento por lotes (Batch Processing)
Contexto: Años 50-60.
- El problema: Las computadoras costaban millones de dólares. El tiempo de CPU era oro. Si un operador humano tardaba 10 segundos en cambiar una cinta magnética, eran 10 segundos de dinero perdido.
- La solución: Eliminar al humano del bucle de ejecución.
Los trabajos se agrupaban en "lotes" (batches). Un pequeño programa residente en memoria, el Monitor Residente (el tatarabuelo del Kernel), cargaba un programa tras otro automáticamente.
El usuario no interactúa con la máquina. Entregas tu código (tarjetas) y vuelves mañana por el resultado.
Aunque ya no usamos tarjetas, el concepto vive en CI/CD Pipelines y sistemas de colas como RabbitMQ o Slurm en supercomputadoras.
Image of batch processing system diagram
Era 2: Multiprogramación (Spooling)
Contexto: Años 60.
- El problema: La CPU es electrónica (nanosegundos), pero los dispositivos de E/S son mecánicos (milisegundos). La CPU pasaba el 90% del tiempo "esperando" a que la cinta o el disco terminaran de leer.
- La solución: No dejar que la CPU descanse.
Si el Trabajo A necesita esperar por una lectura de disco, el SO cambia inmediatamente el contexto y ejecuta el Trabajo B.
Nacimiento de la gestión de memoria: Para que esto funcione, el SO debe mantener varios programas en RAM al mismo tiempo. Aquí nacen los problemas de protección de memoria (que el Trabajo A no borre al Trabajo B).
Era 3: Tiempo compartido (Time-Sharing)
Contexto: Años 70 (El nacimiento de UNIX).
- El problema: Los desarrolladores necesitaban depurar código en tiempo real. El procesamiento por lotes era demasiado lento para el ciclo de desarrollo.
- La solución: Multitarea real.
El sistema cambia entre tareas tan rápido (cada pocos milisegundos) que da la ilusión de que cada usuario tiene la máquina completa para sí mismo.
1. Interactividad
Aparece la terminal (teclado + pantalla). El usuario habla con el SO en tiempo real.
2. File Systems
Nace la necesidad de guardar archivos organizados por usuario y carpetas.
3. Planificación (Scheduling)
El OS debe decidir matemáticamente a quién darle el siguiente "quantum" de tiempo de CPU.
Era 4: Computación personal y distribuida
Contexto: Años 80-90 hasta hoy.
- El problema: El hardware se volvió barato (Ley de Moore). Ahora lo caro es el tiempo del usuario.
- La solución: Optimizar para la conveniencia, no solo para la eficiencia.
Surgieron sistemas como MS-DOS y el Mac OS clásico. Curiosamente, estos sistemas iniciales retrocedieron en tecnología: no tenían protección de memoria ni multitarea real (hasta Windows NT y OS X), porque el hardware de PC era muy básico.
La era moderna (Móvil y Cloud)
Hoy en día, vivimos en una fusión de conceptos:
- Móvil (Android/iOS): Son sistemas Unix (Linux/Darwin) altamente optimizados para ahorrar energía, no solo CPU.
- Cloud & Virtualización: Un servidor físico corre un Hipervisor (un SO para SOs), que corre múltiples máquinas virtuales. Es la multiprogramación llevada al extremo.
Resumen de la evolución
| Era | Objetivo Principal | Innovación Técnica |
|---|---|---|
| Batch | Maximizar uso de CPU | Monitor Residente |
| Multiprogramación | Evitar espera de I/O | Cambio de contexto |
| Time-Sharing | Interactividad humana | Planificación (Scheduling) |
| PC/Moderno | Experiencia de usuario | GUI, Redes, Virtualización |