7  Gestión del Procesador: Fundamentos de Planificación en Sistemas Operativos


La planificación del procesador es una función crítica de los sistemas operativos que se encarga de gestionar cómo y cuándo los procesos reciben tiempo de CPU. Este componente fundamental determina la eficiencia global del sistema y la experiencia de usuario, estableciendo qué proceso se ejecutará en un momento dado y por cuánto tiempo. En este material, exploraremos los niveles de planificación, sus objetivos fundamentales, los criterios utilizados para tomar decisiones de planificación y las medidas que permiten evaluar su rendimiento.

7.1 Conceptos Fundamentales de Planificación

Antes de profundizar en los niveles de planificación, es importante comprender algunos conceptos básicos que constituyen la base de la gestión del procesador.

7.1.1 Planificación Apropiativa vs No Apropiativa

La estrategia de planificación define cómo el sistema operativo maneja la asignación de CPU entre procesos:

  • Planificación apropiativa: Permite que procesos ejecutables sean suspendidos temporalmente para dar paso a otros procesos. El sistema operativo puede “quitar” la CPU a un proceso en ejecución.
  • Planificación no apropiativa: Permite que un proceso ejecute hasta completarse o hasta que voluntariamente libere el procesador, típicamente al realizar una operación de E/S.

7.1.2 Comportamiento de los Procesos

La ejecución de procesos típicamente alterna entre ciclos de uso de CPU y esperas por operaciones de E/S. Esta alternancia de estados crea el espacio para la multiprogramación, permitiendo que mientras un proceso espera por operaciones de E/S, otro pueda estar utilizando la CPU.

7.2 Niveles de Planificación

En un sistema operativo, la planificación del procesador se organiza en tres niveles principales, cada uno con un papel importante en la gestión eficiente de los recursos del sistema.

7.2.1 Planificación de Alto Nivel

También se llama Planificación de Trabajos. Es como el portero del sistema: decide qué tareas pueden entrar al sistema para empezar a competir por recursos como la memoria, el procesador, y otros recursos.

  • Se encarga de admitir o rechazar trabajos que quieren ejecutarse.
  • Decide cuántas tareas se van a ejecutar al mismo tiempo (multiprogramación).
  • Ayuda a mantener el sistema en equilibrio, evitando que se sobrecargue.

7.2.2 Planificación de Nivel Intermedio

Este nivel funciona como un regulador de tráfico dentro del sistema. No decide quién entra (como el de alto nivel) ni quién usa la CPU en cada momento (como el de bajo nivel), pero organiza y ajusta los procesos en marcha según la carga del sistema.

  • Si el sistema está muy cargado, pausa algunos procesos temporalmente para liberar memoria o CPU.
  • Cuando hay más recursos disponibles, reanuda procesos pausados.
  • Ayuda a mantener el buen rendimiento del sistema.
  • Decide qué procesos deben estar en memoria principal y cuáles se pueden guardar temporalmente en el disco (memoria secundaria).

7.2.3 Planificación de Bajo Nivel

También se conoce como el Planificador a Corto Plazo, y es el que elige qué proceso se va a ejecutar en el procesador en cada momento. Es el nivel que más trabaja y que más impacto tiene en la rapidez con la que responde el sistema.

  • Se activa muchas veces por segundo para asignar la CPU a los procesos que están listos para ejecutarse.
  • Lo maneja un componente del sistema llamado Despachador.
  • Está siempre cargado en la memoria principal porque trabaja constantemente.
  • Afecta directamente la rapidez con la que el usuario ve resultados al usar el sistema.

7.3 Objetivos de la Planificación

Las reglas que sigue el sistema operativo para decidir qué proceso se ejecuta y cuándo, tienen como finalidad que el sistema sea justo, eficiente y predecible. A continuación, se describen los objetivos de forma sencilla:

7.3.1 Justicia o Equidad

El sistema debe ser justo con todos los procesos, como si fuera un turno bien organizado:

  • Todos los procesos tienen las mismas oportunidades de ejecutarse, respetando sus prioridades.

  • Ningún proceso se queda esperando para siempre (se evita que uno sea ignorado indefinidamente).

  • Los recursos del sistema se reparten de forma balanceada entre todos los usuarios.

Ejemplo

Si varios usuarios están usando la misma computadora remota, ninguno debería tener que esperar “eternamente” para que su tarea comience.

7.3.2 Maximizar la Capacidad de Ejecución

Se trata de que el sistema trabaje lo más eficientemente posible:

  • Hacer que la mayor cantidad de procesos se completen en menos tiempo.

  • Mantener la CPU ocupada constantemente, sin que esté inactiva innecesariamente.

  • Reducir el tiempo perdido, por ejemplo, por estar esperando instrucciones o por mala planificación.

Ejemplo

En una fábrica: cuanto más productos salen por hora, mejor se está aprovechando la maquinaria (en este caso, la CPU).

7.3.3 Predecibilidad

El sistema no debe comportarse de forma aleatoria. Tiene que ser consistente:

  • Si se hace lo mismo dos veces, se debería obtener resultados similares.
  • Los usuarios deben poder estimar cuánto tiempo va a tomar su tarea.
  • Evitar variaciones extremas en los tiempos de respuesta.
Ejemplo

Si enviar un archivo para impresión toma 10 segundos hoy, no debería tardar 2 minutos mañana sin razón clara.

7.3.4 Equilibrio del Uso de Recursos

Un buen planificador considera todos los recursos del sistema, no solo la CPU:

  • Hay que balancear entre CPU, memoria, discos, red, etc.
  • Se deben evitar cuellos de botella, donde un recurso se satura y frena a los demás.
  • La planificación debe coordinar todos los subsistemas del sistema operativo.