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

¿Qué es la programación prioritaria?

Programación prioritaria es un método para programar procesos en función de la prioridad. En este algoritmo, el planificador selecciona las tareas que se ejecutarán según la prioridad.

Los procesos de mayor prioridad deben completarse primero, pero los trabajos con prioridades iguales se realizan sobre la base de un robin preciso o FCFS. La prioridad depende de los requisitos de memoria, los requisitos de tiempo, etc.

En este tutorial sobre el sistema operativo, aprenderá:

Tipos de programación de prioridades

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

Programación preventiva

En la programación preventiva, sus prioridades se asignan principalmente a las tareas. 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 un tiempo y se reanuda cuando se completa la tarea de alta prioridad.

Programación no preventiva

En este tipo de método de programación, la CPU se asignó a un proceso específico. El proceso que mantiene la CPU ocupada liberará la CPU cambiando o terminando el contexto. Es el único método que se puede utilizar para diferentes plataformas de hardware. Eso es porque no requiere hardware especial (un temporizador, por ejemplo) como la programación preventiva.

Características de la programación prioritaria

  • Algoritmo de CPU que programa procesos basados ​​en prioridades.
  • Se utiliza en sistemas operativos para realizar procesos por lotes.
  • Si dos trabajos con la misma prioridad son verdaderos, funciona sobre la base de PRIMER LLEGADO, PRIMER SERVICIO.
  • En la programación de prioridades, a cada proceso se le asigna un número que indica su nivel de prioridad.
  • Cuanto menor sea el número, mayor es 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 que se está ejecutando actualmente, se reemplaza el proceso que se está ejecutando actualmente.

Ejemplo de programación de prioridades

Considere seguir 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, ocurren los procesos P1 y P2. P1 tiene una prioridad más alta que P2. La ejecución comienza con el proceso P1, que tiene un tiempo de ráfaga de 4.

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

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

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

Paso 4) En el momento 4, P1 ha completado su ejecución. P2 comienza a ejecutarse.

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

Paso 6) En el tiempo = 6, llega P3. P3 tiene una prioridad más alta (1) en comparación con P2 que tiene una prioridad (2). P2 se apropia y P3 comienza a ejecutarse.

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

Paso 7) En tiempo 7, no aparece ningún proceso nuevo, por lo que continuamos con P3. P2 está en la cola de espera.

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

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

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

Paso 11) En el tiempo = 11, P4 viene con prioridad 4. P3 tiene una prioridad más alta, por lo que continúa su ejecución.

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

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

Paso 13) En el tiempo = 13, se ejecuta P3. Tenemos P2, P4, P5 en la cola listos. P2 y P5 tienen la misma prioridad. La hora de llegada de P2 es antes de P5. Entonces P2 comienza a ejecutarse.

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

Paso 14) En el tiempo = 14, el proceso P2 está completo para su ejecución. P4 y P5 están en estado de espera. P5 tiene la máxima prioridad y comienza a ejecutarse.

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

Paso 16) En el tiempo = 16, P5 está completo para su ejecución. P4 es el único proceso que queda. Empieza a ejecutarse.

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

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

Tiempo de espera = hora de inicio – hora de llegada + tiempo de espera para la próxima explosión

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

Beneficios de la programación prioritaria

Estas son las ventajas / ventajas de utilizar un método de programación de prioridades:

  • Método de programación fácil de usar
  • Los procesos se completan de forma prioritaria, por lo que no es necesario esperar una prioridad alta, lo que ahorra tiempo
  • Este método proporciona un buen mecanismo mediante el cual se puede definir con precisión la importancia relativa de cada proceso.
  • Adecuado para aplicaciones con requisitos cambiantes de tiempo y recursos.

Las desventajas de la programación prioritaria

Aquí están las desventajas / desventajas de la programación de prioridades

  • Si el sistema finalmente falla, se perderán todos los procesos de baja prioridad.
  • Si los procesos de alta prioridad ocupan mucho tiempo de la CPU, los procesos de menor prioridad pueden morir de hambre y posponerse indefinidamente.
  • Este algoritmo de programación puede dejar un proceso de baja prioridad esperando indefinidamente.
  • Un proceso se bloqueará cuando esté listo para ejecutarse, pero tendrá que esperar a la CPU porque hay algún otro proceso en curso.
  • Si un nuevo proceso de alta prioridad sigue apareciendo en la cola, es posible que el proceso de espera tenga que esperar mucho tiempo.

Resumen:

  • La programación de prioridades es un método para programar procesos basados ​​en prioridades. En este algoritmo, el planificador selecciona las tareas que se ejecutarán según la prioridad.
  • En la programación de prioridad preventiva, sus prioridades se asignan principalmente a las tareas.
  • En el modo de programación Prioritario No Comercial, la CPU se asignó a un proceso específico.
  • Los procesos se completan de forma prioritaria, por lo que no es necesario esperar una prioridad alta, lo que ahorra tiempo
  • Si los procesos de alta prioridad ocupan mucho tiempo de la CPU, los procesos de menor prioridad pueden morir de hambre y posponerse indefinidamente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Salir de la versión móvil