Saltar al contenido

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

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.

ProcesoPrioridadTiempo quemadoHora de llegada
P1140
P2230
P3176
P43411
P52212

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.

ProcesoPrioridadTiempo quemadoHora de llegada
P1140
P221 de cada 3 pendientes0
P3176
P43411
P52212

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.

ProcesoPrioridadTiempo quemadoHora de llegada
P1140
P221 de cada 3 pendientes0
P312 de 7 pendientes6
P43411
P52212

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.

ProcesoPrioridadTiempo quemadoHora de llegada
P1140
P221 de cada 3 pendientes0
P3176
P43411
P52212

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:

Las desventajas de la programación prioritaria

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

Resumen:

Deja una respuesta

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