Algoritmo de programación de prioridades: preventivo, no preventivo EJEMPLO

¿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

Programación prioritaria dividida 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 tipo de método de programación, la CPU se ha asignado a un proceso específico. El proceso que mantiene ocupada la CPU liberará la CPU ya sea cambiando de contexto o finalizando. Es el único método que se puede utilizar para varias plataformas de hardware. Esto se debe a que no necesita hardware especial (por ejemplo, un temporizador) como la programación preventiva.

Características de la programación prioritaria

  • Un algoritmo de CPU que programa procesos según la prioridad.
  • Se usó 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 programación, si llega un proceso más nuevo, que tiene una prioridad más alta que el proceso actualmente en ejecución, entonces se adelanta el proceso actualmente en ejecución.

Ejemplo de programación prioritaria

Considere los siguientes cinco procesos P1 a 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 tiempo = 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 4.

Programación prioritaria

Paso 1) En el momento = 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 momento 3 no llega ningún proceso nuevo por lo que puedes continuar con P1. El proceso P2 aún 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 momento = 6, llega P3. P3 tiene mayor prioridad (1) en comparación con P2 que tiene prioridad (2). Se adelanta a P2 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 tiempo 7, no llega ningún proceso nuevo, por lo que continuamos con P3. P2 está en la cola de espera.

Programación prioritaria

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

Programación prioritaria

Paso 9) En el momento = 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 momento = 12, llega P5. P3 tiene mayor prioridad, por lo que continúa la ejecución.

Programación prioritaria

Paso 13) En el momento = 13, P3 completa la ejecución. Tenemos P2,P4,P5 en cola de listos. P2 y P5 tienen la misma prioridad. La hora de llegada de P2 es anterior a P5. Entonces P2 comienza la 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 momento =14, el proceso P2 ha finalizado su ejecución. P4 y P5 están en estado de espera. P5 tiene la máxima prioridad e inicia la ejecución.

Programación prioritaria

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

Programación prioritaria

Paso 16) En el momento = 16, P5 finaliza su ejecución. P4 es el único proceso que queda. Comienza la ejecución.

Programación prioritaria

Paso 17) En el momento = 20, P5 ha completado la 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 = o - o = o
P2 =4 - o + 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

A continuación, se detallan los beneficios/ventajas de utilizar el método de programación prioritaria:

  • Método de programación fácil de usar
  • Los procesos se ejecutan según la prioridad, por lo que la prioridad alta no necesita esperar mucho, lo que ahorra tiempo.
  • Este método proporciona un buen mecanismo donde se puede 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

A continuación se presentan las desventajas y desventajas de la programación prioritaria.

  • 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.

Resum

  • La programación prioritaria es un método de programación de procesos que se basa en la prioridad. En este algoritmo, el programador selecciona las tareas para trabajar según la prioridad.
  • En la programación preventiva de prioridades, la mayoría de las tareas se asignan con sus prioridades.
  • En el método de programación prioritario no preventivo, la CPU se ha asignado a un proceso específico.
  • Los procesos se ejecutan según la prioridad, por lo que la prioridad alta no necesita esperar mucho, lo que ahorra tiempo.
  • 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.