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

Tabla de contenido:

Anonim

¿Qué es la programación prioritaria?

La programación de prioridades 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.

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.

En este tutorial del sistema operativo, aprenderá:

  • ¿Qué es la programación prioritaria?
  • Tipos de programación de prioridades
  • Características de la programación prioritaria
  • Ejemplo de programación de prioridades
  • Ventajas de la programación prioritaria
  • Desventajas de la programación prioritaria

Tipos de programación de prioridades

La programación prioritaria se divide en dos tipos principales:

Programación preventiva

En la programación preventiva, las tareas se asignan principalmente 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 la CPU ocupada liberará la CPU ya sea cambiando de contexto o terminando. Es el único método que se puede utilizar para varias plataformas de hardware. Eso es porque 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 los procesos en función de la prioridad.
  • Se utiliza en sistemas operativos para realizar procesos por lotes.
  • Si dos trabajos que tienen la misma prioridad están LISTOS, funciona según el principio PRIMERO LLEGADO, PRIMERO SERVICIO.
  • En la programación de prioridades, se asigna un número a cada proceso que indica su nivel de prioridad.
  • Baje 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, 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.

Paso 1) En el tiempo = 1, no llega 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 finalizado su ejecución. P2 inicia la ejecución.

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

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

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 el momento 7, no llega ningún proceso nuevo, por lo que continuamos con P3. P2 está en la cola de espera.

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

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

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

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 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 mayor prioridad, por lo que continúa la ejecución.

Paso 13) En el tiempo = 13, P3 completa la ejecución. Tenemos P2, P4, P5 en lista de espera. P2 y P5 tienen la misma prioridad. La hora de llegada de P2 es antes de P5. Entonces P2 comienza la ejecución.

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

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

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

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

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 próxima ráfaga

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

Ventajas de la programación prioritaria

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

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

Desventajas de la programación prioritaria

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

  • Si el sistema finalmente falla, todos los procesos de baja prioridad se pierden.
  • Si los procesos de alta prioridad requieren mucho tiempo de CPU, 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 otro proceso se está ejecutando actualmente.
  • Si un nuevo proceso de mayor prioridad sigue entrando en la cola de espera, es posible que el proceso que está en estado de espera deba esperar durante un período de tiempo prolongado.

Resumen:

  • La programación de prioridades 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 prioritaria preventiva, las tareas se asignan principalmente con sus prioridades.
  • En el método de programación prioritaria no preferente, la CPU se ha asignado a un proceso específico.
  • Los procesos se ejecutan en función de la prioridad, por lo que la alta prioridad no necesita esperar mucho, lo que ahorra tiempo.
  • Si los procesos de alta prioridad requieren mucho tiempo de CPU, los procesos de menor prioridad pueden morir de hambre y se pospondrán por un tiempo indefinido.