Sistemas de tiempo compartido y multiprogramación
Los sistemas operativos evolucionaron para aprovechar mejor los recursos de un ordenador. Dos conceptos clave en esta evolución son la multiprogramación y el tiempo compartido.
1. Multiprogramación #
- Permite que varios programas estén cargados en memoria al mismo tiempo.
- El SO elige cuál usar según la disponibilidad de CPU o dispositivos.
- Cuando un proceso queda bloqueado (ej. esperando leer datos del disco), el SO aprovecha ese tiempo para ejecutar otro.
👉 Ventaja: mejora el uso del procesador → menos tiempo ocioso. 👉 Ejemplo: mientras compilas un programa, puedes escuchar música porque otro proceso está usando la tarjeta de sonido.
2. Tiempo compartido (time-sharing) #
- Extiende la multiprogramación para permitir que varios usuarios trabajen a la vez en el mismo ordenador.
- La CPU se divide en intervalos de tiempo (quantum).
- Cada usuario cree que tiene el ordenador “solo para él”, aunque en realidad comparten recursos.
👉 Ventaja: interacción en tiempo real. 👉 Ejemplo: en los años 70-80, muchas universidades tenían un mainframe central y decenas de terminales conectados.
3. Diferencia clave #
- Multiprogramación: el objetivo es aprovechar la CPU al máximo.
- Tiempo compartido: el objetivo es dar a cada usuario la sensación de tener un ordenador dedicado.
4. Características comunes #
- Varios programas en memoria.
- Uso eficiente de CPU y recursos.
- Planificación de procesos para decidir quién usa la CPU.
- Necesitan protección de memoria para que los procesos no interfieran.
5. Ejemplo actual #
-
En tu ordenador moderno (Windows, Linux, macOS):
- Multiprogramación: tienes Chrome, Word y Spotify abiertos.
- Tiempo compartido: tu sistema reparte CPU entre ellos tan rápido que parece que funcionan al mismo tiempo.
Resumen del tema
Conceptos clave #
- Multiprogramación: presencia simultánea de múltiples programas en memoria RAM para maximizar el uso de la CPU conmutando cuando un proceso espera por operaciones de E/S.
- Sistemas de Tiempo Compartido (Time-Sharing): división temporal de la CPU en ranuras de tiempo (quantum) mediante algoritmos de planificación preventiva (Round Robin) para dar servicio interactivo a múltiples usuarios/procesos simultáneos.
- Diferencia Funcional: la multiprogramación maximiza el rendimiento y minimiza el tiempo ocioso del procesador (throughput); el tiempo compartido minimiza el tiempo de respuesta (response time) interactivo.
- Requisitos Críticos: protección de memoria entre procesos y cambios de contexto eficientes controlados por interrupciones de reloj (timer interrupts).
Qué debes recordar #
La multiprogramación maximiza la utilización de la CPU conmutando procesos ante esperas de E/S, mientras que el tiempo compartido reparte la CPU en quantums para permitir interactividad concurrente.