sequenceDiagram
participant CPU
participant Proceso
participant Dispositivo_E/S
Note right of CPU: CPU en ejecución
CPU ->> Proceso: Ejecuta instrucciones
Proceso ->> Dispositivo_E/S: Solicita operación de E/S
Note right of CPU: CPU inactiva (espera E/S)
Dispositivo_E/S ->> Proceso: Devuelve resultado
Proceso ->> CPU: Continúa ejecución
3 Técnicas de mejora de rendimiento utilizadas en los sistemas operativos
La optimización del rendimiento en sistemas operativos ha sido un objetivo constante desde los primeros días de la computación. Este análisis exhaustivo explora las principales técnicas desarrolladas a lo largo de la historia, desde la monoprogramación hasta los sistemas distribuidos modernos, demostrando cómo cada avance tecnológico y conceptual ha contribuido a maximizar la eficiencia de los recursos computacionales.
3.1 Monoprogramación
La monoprogramación representó el paradigma inicial en la ejecución de procesos, donde pun único programa ocupaba completamente los recursos del sistema durante su ejecución. Este modelo, característico de los primeros sistemas por lotes, operaba bajo un esquema secuencial donde la CPU permanecía inactiva durante las operaciones de entrada/salida
3.2 Offline processing
El Offline Processing es una técnica que permite procesar trabajos en lotes sin intervención del usuario, aprovechando momentos de baja actividad para ejecutar tareas programadas.
En este método, los trabajos se preparan y almacenan para ser ejecutados en momentos de baja actividad. De esta forma, se optimiza el uso de la CPU y otros recursos al programar tareas durante periodos en que el sistema tiene poca demanda.
flowchart LR;
A[Inicio] --> B[Preparación de trabajos]
B --> C[Almacenamiento en cola]
C --> D{¿Periodo de baja actividad?}
D -- Sí --> E[Ejecución de trabajos]
E --> F[Finalización y liberación de recursos]
D -- No --> C
F --> G[Fin]
Actualizaciones de Windows o mantenimiento programado de bases de datos que se ejecutan durante horas nocturnas.
3.3 Tiempo compartido
El tiempo compartido surgió como respuesta a la necesidad de interactividad en entornos multiusuario. John McCarthy propuso el primer sistema experimental en un IBM 704 modificado, introduciendo el concepto de asignación cíclica de tiempos de CPU mediante interrupciones de reloj.

Esta innovación permitió mantener múltiples sesiones activas simultáneamente, creando la ilusión de ejecución paralela.
3.4 Sistemas de tiempo real
El tiempo real en sistemas operativos se refiere a la capacidad de procesar datos y eventos de forma inmediata o dentro de un plazo específico y predecible. Los sistemas de tiempo real están diseñados para aplicaciones donde es crucial que las respuestas se entreguen sin demoras significativas.
Estos sistemas, presentes en aplicaciones industriales, aeroespaciales y médicas, requieren mecanismos especializados para garantizar que las tareas se ejecuten dentro de plazos definidos, evitando consecuencias catastróficas, y se diferencian en:
- Tiempo real duro (hard real-time)
- No tolera ningún retraso; el incumplimiento de un plazo puede tener consecuencias catastróficas.
- Tiempo real suave (soft real-time)
- Permite una degradación controlada en el rendimiento si se exceden algunos plazos (por ejemplo, la fluidez de un video o la latencia en una aplicación interactiva) sin interrumpir el funcionamiento global del sistema.

3.5 Proceso Distribuido
Un proceso distribuido se refiere a un sistema en el que múltiples computadoras trabajan juntas para completar tareas o resolver problemas. Este enfoque distribuye la carga de trabajo entre varias máquinas, mejorando la eficiencia y la capacidad de procesamiento.
Cada computadora o nodo trabaja de forma independiente en una parte del problema, y se coordinan mediante protocolos de red para intercambiar datos y sincronizar tareas. Esto permite aprovechar la capacidad de procesamiento de varias máquinas simultáneamente.

3.6 Multiproceso
El multiproceso es una técnica utilizada en sistemas operativos que permite ejecutar múltiples procesos simultáneamente utilizando más de una unidad central de procesamiento (CPU) o núcleo de CPU.
El multiproceso es una característica que se ha convertido en norma en los sistemas operativos, ya que la mayoría de las computadoras modernas cuentan con procesadores de múltiples núcleos, popularizados a principios de la década de 2000. Desde ese entonces, la integración de múltiples núcleos en un solo chip ha permitido que los sistemas operativos distribuyan de forma nativa la carga de trabajo entre ellos, lo que resulta en mejoras significativas en la eficiencia y el rendimiento en entornos multitarea.
3.7 Otras técnicas: Buffering y spooling
El buffering y el spooling fueron introducidos para optimizar las operaciones de E/S.
3.7.1 Buffering
El buffering utiliza una memoria intermedia (buffer) para almacenar datos temporalmente durante las operaciones de E/S, facilitando que la CPU y los dispositivos de E/S trabajen en paralelo. Mientras un dispositivo de E/S está ocupado procesando un bloque de datos, el buffer retiene otros datos para su procesamiento posterior.
La CPU puede continuar trabajando con los datos almacenados en el buffer sin tener que esperar a que se complete la operación de E/S.
3.7.2 Spooling
El spooling (Simultaneous Peripheral Operations On-Line) es una técnica que permite almacenar temporalmente trabajos de E/S en un área de almacenamiento, generalmente en disco, para procesarlos secuencialmente por el dispositivo correspondiente.
Cuando se envía un trabajo a un dispositivo (por ejemplo, a una impresora), el sistema operativo lo coloca en una cola (spool). El dispositivo procesa los trabajos en el orden de llegada, mientras que el sistema sigue aceptando nuevos trabajos.