Gestión del procesador

La gestión del procesador (también conocida como administración de la CPU) es una de las funciones más críticas y complejas de cualquier sistema operativo multitarea. Dado que un procesador (o núcleo) solo puede ejecutar una instrucción a la vez por ciclo, el sistema operativo debe implementar algoritmos y mecanismos precisos para repartir el tiempo de cálculo entre decenas o cientos de procesos e hilos que compiten simultáneamente por el recurso.

Para un técnico informático, entender este funcionamiento es esencial para diagnosticar problemas de rendimiento, cuellos de botella, latencias elevadas o bloqueos del sistema causados por una mala planificación de la CPU.

Conceptos Fundamentales en la Gestión de la CPU

Para administrar el procesador de forma eficiente, el sistema operativo se apoya en una serie de conceptos estructurales:

  • Proceso vs. Hilo (Thread): Un proceso es un programa en ejecución que cuenta con su propio espacio de memoria aislado. Un hilo es la unidad básica de ejecución más pequeña dentro de un proceso; múltiples hilos pueden compartir los recursos y la memoria de un mismo proceso para trabajar en paralelo.
  • Bloque de Control de Proceso (PCB - Process Control Block): Una estructura de datos que almacena toda la información crítica sobre un proceso (su estado actual, el contador de programa, los registros de la CPU, los permisos y los punteros de memoria).
  • Cambio de Contexto (Context Switch): El proceso mediante el cual el sistema operativo detiene un proceso en ejecución, guarda su estado en el PCB y carga el estado de otro proceso nuevo para que la CPU comience a ejecutarlo.

Planificación del Procesador (CPU Scheduling)

El planificador es el módulo del sistema operativo encargado de decidir qué proceso de la cola de listos pasa a ser ejecutado por la CPU y durante cuánto tiempo. Existen dos enfoques principales:

Tipo de Planificación Descripción y Funcionamiento Características Principales
Planificación Apropiativa
(Preemptive)
El sistema operativo puede interrumpir a la fuerza un proceso en ejecución para ceder la CPU a otro de mayor prioridad o cuyo turno haya expirado. Es el modelo estándar en los sistemas operativos modernos (Windows, Linux, macOS). Garantiza una gran fluidez e interactividad.
Planificación No Apropiativa
(Non-Preemptive / Cooperative)
Una vez que un proceso obtiene la CPU, la retiene de forma exclusiva hasta que finaliza su ejecución o decide voluntariamente cederla (realizando una E/S). Utilizada en sistemas antiguos o en RTOS muy específicos. Si un proceso entra en bucle infinito, la máquina se bloquea por completo.

Algoritmos Clásicos de Planificación

Para repartir el tiempo de CPU, los sistemas operativos emplean diferentes algoritmos matemáticos:

  • FIFO / FCFS (First-Come, First-Served): Los procesos se atienden estricta y cronológicamente según van llegando. Sufre del "efecto convoy" (procesos cortos se retrasan esperando a uno largo).
  • SJFN / SJF (Shortest Job First): Se ejecuta primero el proceso que requiera menos tiempo de CPU. Optimiza el tiempo medio de espera, pero es imposible conocer con certeza el tiempo exacto que tardará un proceso de antemano.
  • Round Robin (RR): Es el algoritmo más extendido en sistemas de tiempo compartido. A cada proceso se le asigna una pequeña fracción de tiempo equitativa llamada Quantum. Si no termina en ese tiempo, es desplazado al final de la cola.
  • Por Prioridades (Priority Scheduling): A cada proceso se le asigna un nivel de importancia; la CPU se otorga siempre al proceso activo que posea la prioridad más alta.

Analogía: Imagina la ventanilla única de atención al ciudadano en un ayuntamiento. La persona que atiende es el procesador (CPU) y los ciudadanos que hacen cola son los procesos. Si se aplicara un sistema rígido de orden de llegada sin límite de tiempo (FIFO), una sola persona que necesite realizar 50 trámites complejos bloquearía la cola entera durante horas. En cambio, con un sistema moderno por turnos y fracciones de tiempo (Round Robin), el funcionario atiende a cada ciudadano durante 3 minutos exactos; si no termina, pasa al final de la cola permitiendo que los demás avancen de forma fluida y equitativa.

Actividad práctica

Objetivo:

Analizar el estado de los procesos y el comportamiento de la CPU mediante herramientas de monitorización del sistema.

Tareas:

  1. Abre el Administrador de tareas en Windows (pestaña Detalles) o ejecuta htop o ps -eo pid,ppid,%cpu,%mem,cmd en la terminal de Linux.
  2. Localiza procesos que estén consumiendo un porcentaje elevado de CPU y observa su estado (si están ejecutándose, suspendidos o esperando E/S).
  3. Comprueba el número total de hilos (threads) activos en el sistema en comparación con el número total de procesos.
  4. Modifica la prioridad (en entornos de prueba seguros) de un proceso secundario para comprobar cómo el sistema operativo redistribuye los recursos del procesador.

Preguntas de reflexión:

  1. ¿Por qué el algoritmo Round Robin con un Quantum excesivamente grande se comportaría prácticamente igual que un sistema FIFO tradicional?
  2. ¿Qué diferencia crítica existe entre un proceso limitado por la CPU (CPU-bound) y un proceso limitado por E/S (I/O-bound) a la hora de planificar su tiempo de ejecución?
  3. ¿Por qué un número excesivamente pequeño en el Quantum de tiempo puede provocar una penalización grave del rendimiento global de la máquina debido al cambio de contexto?
  4. ¿Qué es la inversión de prioridad (priority inversion) en los sistemas operativos y qué problemas graves puede causar en entornos críticos?
  5. ¿De qué manera los sistemas operativos modernos diferencian la planificación de hilos en arquitecturas con núcleos de rendimiento (Performance) y núcleos de alta eficiencia (Efficiency)?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Por qué el algoritmo Round Robin con un Quantum excesivamente grande se comportaría prácticamente igual que un sistema FIFO tradicional?

Porque si el intervalo de tiempo (Quantum) asignado a cada proceso es tan grande que supera la duración total de la mayoría de los trabajos, los procesos terminarán su ejecución en su primer turno sin ser interrumpidos. Al no producirse expulsiones por expiración de tiempo, el comportamiento operativo se asemeja al de una cola estrictamente secuencial (First-Come, First-Served).


2. ¿Qué diferencia crítica existe entre un proceso limitado por la CPU (CPU-bound) y un proceso limitado por E/S (I/O-bound) a la hora de planificar su tiempo de ejecución?

Un proceso CPU-bound realiza cálculos intensivos continuos y aprovecha al máximo cada ciclo de procesador que se le asigna. En cambio, un proceso I/O-bound pasa la mayor parte del tiempo esperando a que un periférico responda (como leer un disco o recibir datos de red). Los planificadores modernos otorgan prioridad a los procesos I/O-bound para mantener alta la interactividad de la interfaz, ya que devuelven el control de la CPU rápidamente.


3. ¿Por qué un número excesivamente pequeño en el Quantum de tiempo puede provocar una penalización grave del rendimiento global de la máquina debido al cambio de contexto?

Si el Quantum es demasiado corto (ej. unos pocos microsegundos), el procesador pasará más tiempo realizando cambios de contexto (guardando registros, limpiando cachés y cargando nuevos estados de procesos) que ejecutando código útil de las aplicaciones. Este fenómeno de sobrecarga se conoce como thrashing de CPU.


4. ¿Qué es la inversión de prioridad (priority inversion) en los sistemas operativos y qué problemas graves puede causar en entornos críticos?

Ocurre cuando un proceso de alta prioridad queda bloqueado porque necesita un recurso (como un semáforo o mutex) que actualmente tiene retenido un proceso de baja prioridad, el cual a su vez no puede ejecutarse porque el planificador prefiere a procesos de prioridad intermedia. Esto subvierte el orden lógico de importancia y puede causar bloqueos temporales graves o fallos en sistemas de tiempo real.


5. ¿De qué manera los sistemas operativos modernos diferencian la planificación de hilos en arquitecturas con núcleos de rendimiento (Performance) y núcleos de alta eficiencia (Efficiency)?

Los planificadores actuales (como el Thread Director de arquitecturas híbridas) analizan en tiempo real la naturaleza de las cargas de trabajo. Derivan los hilos pesados de cálculo intensivo hacia los núcleos de rendimiento (P-cores) para maximizar la velocidad, y envían los procesos en segundo plano o tareas ligeras de E/S hacia los núcleos de eficiencia (E-cores) para optimizar el consumo energético.