Tipos de sistemas multiprogramados: evolución, características y aplicaciones


La multiprogramación surge como respuesta a una limitación fundamental de los primeros ordenadores: la CPU permanecía inactiva durante largos periodos mientras los programas esperaban operaciones de entrada/salida (E/S), que eran muy lentas comparadas con la velocidad del procesador.

La solución fue permitir que varios programas residieran en memoria a la vez, de modo que cuando uno quedaba bloqueado por E/S, la CPU pudiera ejecutar otro. Así nació la idea de los sistemas multiprogramados, que constituyen la base de los sistemas operativos modernos.

A lo largo del tiempo, se han desarrollado diferentes tipos de sistemas multiprogramados, cada uno adaptado a necesidades concretas, con diferencias tanto en hardware como en software.


1. Sistemas por lotes multiprogramados

Concepto

Los sistemas por lotes fueron una de las primeras formas de multiprogramación. En ellos, los programas se agrupaban en “lotes” (batches) que se cargaban en memoria y se ejecutaban de forma secuencial, sin interacción directa del usuario.

Con la multiprogramación, un sistema por lotes podía mantener varios trabajos en memoria al mismo tiempo. Cuando un trabajo quedaba bloqueado por E/S, el sistema operativo planificaba la ejecución de otro, aumentando el aprovechamiento de la CPU.

Características de hardware necesarias

  • Memoria suficiente para almacenar varios programas a la vez.
  • Mecanismos de interrupción por E/S para permitir a la CPU atender a otros procesos mientras un dispositivo trabajaba.
  • Discos para almacenar y gestionar las colas de trabajos.

Funciones del sistema operativo

  • Planificación de trabajos: decidir qué trabajo se ejecuta en la CPU.
  • Gestión de colas: almacenar programas pendientes de ejecución.
  • Spooling: almacenar en disco datos de entrada/salida para no bloquear la CPU con periféricos lentos.

Uso principal

  • Procesamiento de grandes volúmenes de datos sin necesidad de interacción en tiempo real.
  • Aplicaciones científicas, financieras o administrativas en mainframes de mediados del siglo XX.

2. Sistemas de tiempo compartido (time-sharing)

Concepto

La evolución natural de la multiprogramación fue el tiempo compartido, cuyo objetivo era que varios usuarios pudieran interactuar con un sistema a la vez, dando la ilusión de que cada uno tenía un ordenador propio.

El procesador se divide en rebanadas de tiempo (quanta) asignadas a cada usuario/proceso. Cuando el quantum termina, el planificador interrumpe al proceso en curso y da paso a otro.

Características de hardware necesarias

  • Unidad de temporización (timer): para generar interrupciones periódicas que marcan los cambios de proceso.
  • Consolas o terminales múltiples: para permitir acceso simultáneo de usuarios.
  • Suficiente memoria para mantener varios procesos interactivos.

Funciones del sistema operativo

  • Planificación expulsiva: algoritmos como Round Robin aseguran que todos los procesos obtienen CPU de manera justa.
  • Protección de memoria: evitar que un proceso interfiera en otro.
  • Interactividad: respuesta rápida (tiempos de respuesta < 1 segundo para parecer inmediatos).

Uso principal

  • Sistemas multiusuario en universidades, laboratorios y empresas (años 70-80).
  • Base de sistemas modernos como UNIX y derivados, donde múltiples usuarios interactúan simultáneamente.

3. Sistemas combinados (batch + tiempo compartido)

Concepto

Muchos entornos necesitaron combinar la eficiencia del batch con la interactividad del tiempo compartido. Así nacieron sistemas híbridos que ejecutaban trabajos por lotes en segundo plano mientras atendían a usuarios interactivos.

Características de hardware necesarias

  • Mainframes o minicomputadoras potentes, con memoria suficiente para mantener lotes y procesos interactivos.
  • Soporte para E/S múltiple en paralelo.

Funciones del sistema operativo

  • Doble planificación: una cola de procesos interactivos (con prioridad en la CPU) y otra de procesos batch (ejecutados en tiempos ociosos).
  • Gestión avanzada de recursos: equilibrar carga para que los usuarios no perciban retrasos y los trabajos batch se ejecuten en segundo plano.

Uso principal

  • Centros de cómputo académico y empresarial en los 70 y 80.
  • Mainframes actuales que todavía combinan procesamiento batch (finanzas, informes nocturnos) con servicios interactivos.

4. Sistemas paralelos (multiprocesador)

Concepto

Un paso más allá de la multiprogramación en una sola CPU es la ejecución paralela en múltiples procesadores. Aquí, no solo se multiprograman procesos en una CPU, sino que se distribuyen entre varias CPUs trabajando de forma coordinada.

Características de hardware necesarias

  • Multiprocesadores: dos o más CPUs que comparten memoria (arquitectura SMP).
  • Interconexión de alta velocidad: buses o redes internas que permitan comunicación eficiente.

Funciones del sistema operativo

  • Planificación multiprocesador: asignar procesos a CPUs equilibrando la carga.
  • Sincronización: evitar condiciones de carrera mediante semáforos, monitores o primitivas atómicas.
  • Gestión de memoria compartida: coherencia en cachés y protección entre procesos.

Uso principal

  • Sistemas de alto rendimiento, servidores de bases de datos, aplicaciones científicas.
  • Actualmente omnipresentes, ya que incluso los PCs domésticos tienen procesadores multinúcleo.

5. Otros tipos de sistemas multiprogramados

a) Sistemas en tiempo real

  • Procesos multiprogramados, pero con restricciones temporales estrictas.
  • Hardware con temporizadores de precisión y SO con planificadores de tiempo real (prioridades fijas, EDF, RMS).
  • Usos: control industrial, robótica, aeronáutica.

b) Sistemas distribuidos

  • La multiprogramación se extiende a varios computadores conectados en red.
  • Cada nodo multiprograma procesos locales, pero existe coordinación entre ellos para ofrecer un servicio unificado.
  • Usos: computación en la nube, sistemas de archivos distribuidos, clústeres HPC.

Comparación entre los tipos de sistemas multiprogramados

TipoInteracción usuarioPlanificaciónHardware claveUsos principales
Batch multiprogramadoNoNo expulsivaCPU única + discosProcesamiento de datos por lotes
Tiempo compartidoSí (multiusuario)ExpulsivaCPU + timer + terminalesSistemas multiusuario, UNIX
CombinadosSí + batchDoble colaMainframe + multiterminalCentros de cómputo académicos/empresariales
Paralelos (multiprocesador)Balance multiprocesadorCPUs múltiples + memoria compartidaHPC, servidores, PCs modernos multinúcleo
Tiempo realLimitadaPrioridadesCPU + temporizadores precisosIndustria, control, aeronáutica
DistribuidosCoordinación distribuidaVarios nodos conectadosCloud computing, clústeres, servicios web

Resumen

La multiprogramación fue la técnica que permitió aprovechar al máximo la CPU en los primeros sistemas de cómputo, pero ha evolucionado en múltiples direcciones: desde el procesamiento batch hasta el tiempo compartido, los sistemas paralelos y los entornos distribuidos.

Cada tipo requiere hardware especializado (desde simples timers hasta arquitecturas multiprocesador) y soporte en el sistema operativo (planificadores adecuados, gestión de memoria avanzada, sincronización).

Hoy en día, la mayoría de los sistemas operativos combinan varias de estas ideas: ejecutan procesos interactivos en tiempo compartido, trabajos batch en segundo plano, distribuyen carga en múltiples núcleos y pueden extenderse a clústeres distribuidos en la nube.