1. Algoritmo de programación de prioridad :
el algoritmo de programación de prioridad ejecuta los procesos según su prioridad. A cada proceso se le asigna una prioridad y el proceso con la prioridad más alta se ejecuta primero. Las prioridades se pueden definir tanto interna como externamente. El sistema decide las prioridades internas según la cantidad de recursos necesarios, el tiempo necesario, etc., mientras que las prioridades externas se basan en el tiempo en que se necesita el trabajo o la cantidad que se paga por el trabajo realizado o la importancia del proceso. La programación prioritaria puede ser preventiva o no preventiva.
Nota –
- Si dos procesos tienen la misma prioridad, el empate se rompe usando FCFS.
- El tiempo de espera para el proceso de mayor prioridad siempre es cero en el modo preventivo, mientras que puede no serlo en el caso del modo no preventivo.
Inconvenientes:
El gran problema es la inanición o bloqueo indefinido. Puede suceder que en el flujo de procesos, el sistema siga ejecutando los procesos de alta prioridad y los procesos de baja prioridad nunca se ejecuten.
2. El trabajo más corto primero (SJF) :
el algoritmo de programación del trabajo más corto primero (SJF) se basa en el tiempo de ráfaga del proceso. Los procesos se colocan en la cola de listos en función de sus tiempos de ráfaga. En este algoritmo, el proceso con el menor tiempo de ráfaga se procesa primero. Se compara el tiempo de ráfaga de sólo aquellos procesos que están presentes o han llegado hasta ese momento. También es de naturaleza no preventiva. Su versión preventiva se llama algoritmo Shortest Remaining Time First (SRTF) .
La principal ventaja de este algoritmo es que proporciona el tiempo de espera mínimo para un conjunto dado de procesos y, por lo tanto, reduce el tiempo de espera promedio. La desventaja de este algoritmo es que el sistema nunca puede procesar los procesos largos y pueden permanecer en la cola durante mucho tiempo, lo que lleva a la inanición de los procesos.
Nota:
si dos procesos tienen el mismo tiempo de ráfaga, el empate se rompe mediante FCFS, es decir, el proceso que llegó primero se procesa primero.
La diferencia entre el trabajo más corto primero (SJF) y el algoritmo de programación prioritaria es la siguiente:
Trabajo más corto primero (SJF) | programación de prioridades |
---|---|
Shortest Job First (SJF) ejecuta los procesos en función de su tiempo de ráfaga, es decir, en orden ascendente de sus tiempos de ráfaga. | La programación de prioridades ejecuta los procesos en función de sus prioridades, es decir, en orden descendente de sus prioridades. Un proceso con mayor prioridad se ejecuta primero. |
SJF tampoco es preventivo, pero su versión preventiva también se llama algoritmo de tiempo restante más corto primero (SRTF). | La programación prioritaria es tanto de naturaleza preventiva como no preventiva. |
El tiempo de espera promedio para un conjunto dado de procesos es mínimo. | No hay idea del tiempo promedio de espera y el tiempo de respuesta. |
La verdadera dificultad con SJF es saber la duración de la siguiente solicitud o ráfaga de CPU. | Es bastante fácil de implementar y mejor para sistemas operativos en tiempo real. |
Es posible que nunca se ejecute un proceso largo y que el sistema siga ejecutando los procesos cortos. | El problema del bloqueo de un proceso se puede resolver mediante el envejecimiento, lo que significa aumentar gradualmente la prioridad de un proceso después de un intervalo de tiempo fijo en un número fijo. |