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.

¿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.
Paso 1) En el instante t = 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 puedes continuar con P1. P2 está en la cola de espera.
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.
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 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 |
Paso 7) En el tiempo 7, no llega ningún proceso nuevo, así 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 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 su ejecución.
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 |
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.
Paso 15) En el tiempo = 15, P5 continúa la ejecución.
Paso 16) En el tiempo = 16, P5 ha terminado su ejecución. P4 es el único proceso restante. Comienza su ejecución.
Paso 17) En el tiempo = 20, P4 ha completado su 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 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.


















