Algoritmo de planificación de prioridades: con desalojo y sin desalojo.

⚡ Resumen inteligente

La planificación por prioridades es un método de planificación de la CPU que selecciona procesos según su prioridad, ejecutando primero las tareas de mayor prioridad. Puede ser preventiva o no preventiva, y los procesos con igual prioridad se gestionan según el principio de primero en llegar, primero en ser atendido o mediante el método round-robin.

  • 🎯 Definición: Los procesos se programan por orden de prioridad, ejecutándose antes las tareas de mayor prioridad que las de menor prioridad.
  • 🔢 Número de prioridad: Un número más bajo suele significar una mayor prioridad.
  • ⏸️ Con derecho preferente: La llegada de un evento de mayor prioridad puede interrumpir un proceso de menor prioridad que se esté ejecutando actualmente.
  • ▶ ️ No preventivo: El proceso en ejecución mantiene la CPU ocupada hasta que finaliza o cambia de contexto.
  • Ventaja: Los procesos importantes se ejecutan rápidamente, ajustando su importancia relativa al tiempo de CPU.
  • ⚠️ Retirarse: Los procesos de baja prioridad pueden quedarse sin respuesta y esperar indefinidamente.

Algoritmo de programación de prioridades

¿Qué es la programación prioritaria?

Programación prioritaria Es un método de programación de procesos que se basa en prioridades. En este algoritmo, el programador selecciona las tareas para trabajar según la prioridad.

Los procesos con mayor prioridad deben llevarse a cabo en primer lugar, mientras que los trabajos con igual prioridad se llevan a cabo por turnos o FCFS. La prioridad depende de los requisitos de memoria, los requisitos de tiempo, etc.

Tipos de programación prioritaria

La planificación de prioridades se divide en dos tipos principales:

Programación preventiva

En la programación preventiva, la mayoría de las tareas se asignan con sus prioridades. A veces es importante ejecutar una tarea con mayor prioridad antes que otra tarea de menor prioridad, incluso si la tarea de menor prioridad todavía se está ejecutando. La tarea de menor prioridad se mantiene durante algún tiempo y se reanuda cuando la tarea de mayor prioridad finaliza su ejecución.

Programación no preventiva

En este método de planificación, la CPU se asigna a un proceso específico. El proceso que mantiene ocupada la CPU la libera cambiando de contexto o finalizando. Es el único método compatible con diversas plataformas de hardware, ya que no requiere hardware especial (como un temporizador), a diferencia de la planificación con desalojo.

Características de la programación prioritaria

  • Un algoritmo de CPU que programa procesos según la prioridad.
  • Se usa en OperaSistemas de montaje para realizar procesos por lotes.
  • Si dos trabajos que tienen la misma prioridad están LISTOS, funciona en un PRIMERO VEN, PRIMERO SERVIDO base.
  • En la programación de prioridades, se asigna un número a cada proceso que indica su nivel de prioridad.
  • Cuanto menor sea el número, mayor será la prioridad.
  • En este tipo de algoritmo de planificación, si llega un proceso más reciente que tiene una prioridad mayor que el proceso que se está ejecutando actualmente, este último es interrumpido.

Ejemplo de programación prioritaria

Consideremos los siguientes cinco procesos, del P1 al P5. Cada proceso tiene su prioridad, tiempo de ráfaga y tiempo de llegada únicos.

Proceso Prioridad Tiempo quemado Hora de llegada
P1 1 4 0
P2 2 3 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Paso 0) En el instante t = 0, llegan los procesos P1 y P2. P1 tiene mayor prioridad que P2. La ejecución comienza con el proceso P1, que tiene un tiempo de ráfaga de 4.

Programación prioritaria

Paso 1) En el instante t = 1, no llega ningún proceso nuevo. La ejecución continúa con P1.

Programación prioritaria

Paso 2) En el momento 2 no llega ningún proceso nuevo, por lo que puedes continuar con P1. P2 está en la cola de espera.

Programación prioritaria

Paso 3) En el tiempo 3, no llega ningún proceso nuevo, por lo que puede continuar con P1. El proceso P2 todavía está en la cola de espera.

Programación prioritaria

Paso 4) En el momento 4, P1 ha finalizado su ejecución. P2 inicia la ejecución.

Programación prioritaria

Paso 5) En el tiempo = 5, no llega ningún proceso nuevo, por lo que continuamos con P2.

Programación prioritaria

Paso 6) En el tiempo = 6, llega P3. P3 tiene mayor prioridad (1) que P2, que tiene prioridad (2). P2 es interrumpido y P3 comienza su ejecución.

Proceso Prioridad Tiempo quemado Hora de llegada
P1 1 4 0
P2 2 1 de 3 pendientes 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Programación prioritaria

Paso 7) En el tiempo 7, no llega ningún proceso nuevo, así que continuamos con P3. P2 está en la cola de espera.

Programación prioritaria

Paso 8) En el tiempo = 8, no llega ningún proceso nuevo, por lo que podemos continuar con P3.

Programación prioritaria

Paso 9) En el tiempo = 9, no llega ningún proceso nuevo, por lo que podemos continuar con P3.

Programación prioritaria

Paso 10) En el intervalo de tiempo 10, no llega ningún proceso nuevo, por lo que continuamos con P3.

Programación prioritaria

Paso 11) En el tiempo = 11, P4 llega con prioridad 4. P3 tiene mayor prioridad, por lo que continúa su ejecución.

Proceso Prioridad Tiempo quemado Hora de llegada
P1 1 4 0
P2 2 1 de 3 pendientes 0
P3 1 2 de 7 pendientes 6
P4 3 4 11
P5 2 2 12

Programación prioritaria

Paso 12) En el tiempo = 12, llega P5. P3 tiene mayor prioridad, por lo que continúa su ejecución.

Programación prioritaria

Paso 13) En el instante t = 13, P3 finaliza su ejecución. Tenemos P2, P4 y P5 en la cola de procesos listos. P2 y P5 tienen la misma prioridad. El tiempo de llegada de P2 es anterior al de P5, por lo que P2 comienza su ejecución.

Proceso Prioridad Tiempo quemado Hora de llegada
P1 1 4 0
P2 2 1 de 3 pendientes 0
P3 1 7 6
P4 3 4 11
P5 2 2 12

Programación prioritaria

Paso 14) En el instante t = 14, el proceso P2 ha finalizado su ejecución. P4 y P5 se encuentran en estado de espera. P5 tiene la máxima prioridad y comienza su ejecución.

Programación prioritaria

Paso 15) En el tiempo = 15, P5 continúa la ejecución.

Programación prioritaria

Paso 16) En el tiempo = 16, P5 ha terminado su ejecución. P4 es el único proceso restante. Comienza su ejecución.

Programación prioritaria

Paso 17) En el tiempo = 20, P4 ha completado su ejecución y no queda ningún proceso.

Programación prioritaria

Paso 18) Calculemos el tiempo de espera promedio para el ejemplo anterior.

Tiempo de espera = hora de inicio – hora de llegada + tiempo de espera para la siguiente ráfaga

P1 = 0 - 0 = 0
P2 = 4 - 0 + 7 = 11
P3 = 6 - 6 = 0
P4 = 16 - 11 = 5
Average Waiting time = (0 + 11 + 0 + 5 + 2)/5 = 18/5 = 3.6

Ventajas de la programación prioritaria

Estas son las ventajas/beneficios de utilizar el método de programación por prioridades:

  • Método de programación fácil de usar.
  • Los procesos se ejecutan según su prioridad, por lo que los de alta prioridad no tienen que esperar mucho tiempo, lo que ahorra tiempo.
  • Este método proporciona un buen mecanismo que permite definir con precisión la importancia relativa de cada proceso.
  • Adecuado para aplicaciones con requisitos fluctuantes de tiempo y recursos.

Desventajas de la programación prioritaria

Estas son las desventajas/inconvenientes de la programación por prioridad:

  • Si el sistema finalmente falla, todos los procesos de baja prioridad se pierden.
  • Si los procesos de alta prioridad consumen mucho tiempo de CPU, entonces los procesos de menor prioridad pueden morir de hambre y se pospondrán por un tiempo indefinido.
  • Este algoritmo de programación puede dejar algunos procesos de baja prioridad esperando indefinidamente.
  • Un proceso se bloqueará cuando esté listo para ejecutarse, pero tendrá que esperar a la CPU porque actualmente se está ejecutando otro proceso.
  • Si un nuevo proceso de mayor prioridad sigue llegando a la cola de listos, es posible que el proceso que está en estado de espera deba esperar durante un período prolongado.

Preguntas Frecuentes

El bloqueo de procesos se produce cuando los procesos de baja prioridad esperan indefinidamente porque siguen llegando procesos de mayor prioridad. El envejecimiento lo soluciona aumentando gradualmente la prioridad de los procesos que han esperado mucho tiempo, de modo que, finalmente, todos los procesos se ejecutan.

En la mayoría de los sistemas operativos, un número de prioridad menor indica una prioridad mayor. Por ejemplo, un proceso con prioridad 1 se ejecuta antes que un proceso con prioridad 3. Sin embargo, algunos sistemas invierten este orden, por lo que siempre conviene comprobar la convención utilizada.

La prioridad se puede asignar internamente utilizando factores como las necesidades de memoria, los requisitos de tiempo y la carga de trabajo de la CPU, o externamente por el usuario o el administrador en función de la importancia, el coste o los plazos de entrega. Puede ser estática (fija) o dinámica (cambia en tiempo de ejecución).

La IA puede asignar y ajustar dinámicamente las prioridades de los procesos aprendiendo los patrones de carga de trabajo y los plazos de entrega. Esto ayuda a que las tareas importantes finalicen a tiempo, reduciendo el riesgo de inactividad y mejorando el rendimiento general y la capacidad de respuesta en sistemas complejos y cambiantes.

Sí. La IA puede supervisar los tiempos de espera y aumentar automáticamente la prioridad de los procesos con mayor demora, funcionando como un envejecimiento inteligente. Al predecir la congestión, equilibra mejor la equidad y el rendimiento que las reglas fijas, evitando así que los trabajos de baja prioridad se retrasen indefinidamente.

Resumir este post con: