Planificación y prioridades

La planificación y prioridades constituyen el núcleo estratégico del sistema operativo para decidir el orden de ejecución de los procesos. Mientras que la gestión general de la CPU establece los algoritmos de reparto, el sistema de prioridades introduce una jerarquía que determina qué tareas son más urgentes o relevantes para mantener la estabilidad del sistema y la fluidez de la experiencia del usuario.

Para un técnico informático, dominar este aspecto es fundamental para ajustar el rendimiento del sistema, resolver conflictos de recursos en entornos de alta carga y comprender cómo el núcleo evita que los procesos críticos queden bloqueados por tareas secundarias.

Estrategias de Asignación de Prioridades

Para ordenar la cola de procesos listos, los sistemas operativos pueden emplear dos enfoques principales en la gestión de prioridades:

Modelo de Prioridad Descripción y Funcionamiento Ventajas e Inconvenientes
Prioridad Estática El sistema operativo o el usuario asignan un nivel de prioridad fijo a un proceso en el momento de su creación, el cual no cambia a lo largo de su vida útil. Ventaja: Predecible y fácil de implementar.
Inconveniente: Riesgo de inanición (starvation) si los procesos de baja prioridad nunca se ejecutan.
Prioridad Dinámica El núcleo ajusta de forma automática la prioridad de los procesos en tiempo real según su comportamiento (ej. premiando a los que esperan mucho tiempo o penalizando a los que consumen demasiada CPU). Ventaja: Evita la inanición y optimiza la interactividad.
Inconveniente: Mayor complejidad de cálculo para el núcleo del sistema.

Problemas Críticos en la Planificación con Prioridades

El uso de esquemas basados en prioridades introduce desafíos técnicos muy específicos que los sistemas operativos modernos deben resolver de manera estricta:

  • Inanición (Starvation): Un fenómeno en el cual un proceso con prioridad baja permanece de forma indefinida en la cola de listos sin recibir tiempo de CPU porque el sistema se inunda continuamente con procesos de alta prioridad. Se soluciona mediante el envejecimiento (aging), incrementando progresivamente la prioridad de los procesos olvidados con el paso del tiempo.
  • Inversión de Prioridad (Priority Inversion): Un fallo crítico donde un proceso de alta prioridad queda bloqueado porque necesita un recurso compartido retenido por un proceso de baja prioridad, el cual no puede avanzar porque el planificador prioriza tareas de nivel intermedio.
  • Colas Multinivel con Realimentación (Multilevel Feedback Queue): Un mecanismo avanzado donde los procesos pueden moverse entre diferentes colas de prioridad según su comportamiento (por ejemplo, si un proceso agota su quantum de CPU se le baja de nivel; si se bloquea esperando E/S, se le sube para mejorar su respuesta interactiva).

Analogía: Imagina las urgencias de un gran hospital. Los pacientes se clasifican por un sistema estricto de triaje de prioridades. Un paciente con una parada cardiorrespiratoria tiene máxima prioridad y entra de inmediato al quirófano (proceso prioritario). Sin embargo, para evitar que un paciente con una dolencia menor (prioridad baja) se quede esperando eternamente en la sala de espera durante días sin ser atendido (inanición), el hospital aplica un sistema de control de tiempo acumulado que eleva su prioridad de forma progresiva con las horas.

Actividad práctica

Objetivo:

Observar y modificar de manera segura los niveles de prioridad de los procesos en ejecución utilizando las herramientas del sistema operativo.

Tareas:

  1. Abre el Administrador de tareas en Windows (pestaña Detalles) o ejecuta top en la terminal de Linux.
  2. Localiza un proceso secundario de prueba y observa su clase de prioridad actual (por ejemplo, Normal, Baja o Alta en Windows; o el valor PR / NI en Linux).
  3. Modifica la prioridad del proceso de prueba a un nivel inferior para comprobar cómo el sistema reduce su acceso a la CPU.
  4. Investiga qué comando de la terminal de Linux (como nice o renice) permite lanzar o modificar la prioridad de un proceso mediante su valor de "niceness".

Preguntas de reflexión:

  1. ¿Por qué un sistema basado exclusivamente en prioridades estáticas puede provocar el fenómeno de inanición (starvation) en los procesos menos importantes?
  2. ¿Qué es la técnica del "envejecimiento" (aging) y cómo ayuda a resolver el problema de la inanición en la planificación de la CPU?
  3. ¿Cómo interfiere la inversión de prioridad en los sistemas de tiempo real y qué soluciones aplica el núcleo para corregirla?
  4. ¿Qué ventaja operativa aportan las colas multinivel con realimentación frente a los algoritmos de planificación de prioridad estática simple?
  5. ¿De qué manera el valor de "niceness" en los sistemas UNIX permite equilibrar el respeto por los procesos del usuario frente a las tareas críticas del sistema?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Por qué un sistema basado exclusivamente en prioridades estáticas puede provocar el fenómeno de inanición (starvation) en los procesos menos importantes?

Porque si el sistema recibe un flujo constante de procesos con una prioridad superior, la CPU asignará siempre sus ciclos a estos últimos, relegando de manera permanente a los procesos de prioridad baja, los cuales pueden quedar atrapados en la cola de listos de forma indefinida sin llegar a ejecutarse nunca.


2. ¿Qué es la técnica del "envejecimiento" (aging) y cómo ayuda a resolver el problema de la inanición en la planificación de la CPU?

El envejecimiento consiste en incrementar de forma gradual y automática la prioridad de un proceso a medida que pasa más tiempo esperando en la cola de listos. De este modo, aunque un proceso comience con una prioridad muy baja, su prioridad irá aumentando con el tiempo hasta superar a los procesos más recientes, garantizando que tarde o temprano sea ejecutado.


3. ¿Cómo interfiere la inversión de prioridad en los sistemas de tiempo real y qué soluciones aplica el núcleo para corregirla?

Interfiere alterando la jerarquía lógica, ya que un proceso crítico se queda bloqueado esperando un recurso retenido por un proceso de baja prioridad que no puede avanzar porque el planificador prefiere tareas intermedias. El núcleo lo soluciona mediante la herencia de prioridad (donde el proceso de baja prioridad hereda temporalmente la alta prioridad del proceso bloqueado para liberar el recurso con rapidez).


4. ¿Qué ventaja operativa aportan las colas multinivel con realimentación frente a los algoritmos de planificación de prioridad estática simple?

Aportan una gran adaptabilidad dinámica. En lugar de fijar una prioridad estática, el sistema clasifica los procesos en diferentes colas y observa su comportamiento: si un proceso consume demasiada CPU se le relega a colas inferiores, y si interactúa mucho mediante E/S se le asciende, optimizando tanto la interactividad como el rendimiento general sin intervención del usuario.


5. ¿De qué manera el valor de "niceness" en los sistemas UNIX permite equilibrar el respeto por los procesos del usuario frente a las tareas críticas del sistema?

El valor de "niceness" (amabilidad) permite al usuario ajustar la prioridad con la que un proceso compite por la CPU. Un valor de niceness alto indica que el proceso es "amable" y cede gustosamente ciclos de procesador a los demás, evitando que tareas pesadas en segundo plano (como compilaciones o copias de seguridad) congelen la interactividad del escritorio o perjudiquen al resto del sistema.