¿Cuál es la primera programación de trabajo más corta?
El trabajo más corto primero (SJF) es un algoritmo en el que se selecciona el proceso con el menor tiempo de ejecución para la siguiente ejecución. Este método de programación puede ser preventivo o no preventivo. Reduce en gran medida el tiempo medio de espera para otros procesos que esperan su finalización. La forma más corta es primero la forma completa de SJF.
Básicamente, existen dos tipos de métodos SJF:
- SJF no preventivo
- SJF preventivo
En este tutorial del sistema operativo, aprenderá:
Características de programación de SJF
- Se relaciona con cada trabajo como una unidad de tiempo para completar.
- Este método de algoritmo es útil para el procesamiento por lotes, cuando no es fundamental esperar a que finalicen los trabajos.
- Puede mejorar el rendimiento del proceso al garantizar que los trabajos se acorten primero y, por lo tanto, pueden tener un tiempo de respuesta más corto.
- Mejora la producción de trabajos al ofrecer trabajos más cortos, que deben completarse primero, que en su mayoría tienen un tiempo de respuesta más corto.
SJF no preventivo
En la programación no preferente, una vez que se asigna el ciclo de la CPU para su procesamiento, el proceso lo mantiene hasta que alcanza un estado de espera o se termina.
Considere los siguientes cinco procesos, cada uno de los cuales tiene su propio tiempo de ráfaga y tiempo de llegada únicos.
Cola de procesamiento | Tiempo quemado | Hora de llegada |
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Paso 0) En el tiempo = 0, P4 muere y comienza la ejecución.
Paso 1) En el tiempo = 1, llega el proceso P3. Sin embargo, P4 todavía necesita 2 unidades de ejecución. Seguirá ejecutándose.
Paso 2) En el tiempo = 2, llega el proceso P1 y se agrega a la cola de espera. P4 seguirá ejecutándose.
Paso 3) En el tiempo = 3, finalizará el proceso de ejecución de P4. Se compara el tiempo de ráfaga de P3 y P1. El proceso P1 se ejecuta porque su tiempo de ráfaga es menor en comparación con P3.
Paso 4) En el tiempo = 4, llega el proceso P5 y se agrega a la cola de espera. P1 seguirá ejecutándose.
Paso 5) En el tiempo = 5, llega el proceso P2 y se agrega a la cola de espera. P1 seguirá ejecutándose.
Paso 6) En el tiempo = 9, el proceso P1 completará la ejecución. Se compara el tiempo de ráfaga de P3, P5 y P2. El proceso P2 se ejecuta porque el tiempo de ráfaga es el más bajo.
Paso 7) En el tiempo = 10, P2 se está ejecutando y P3 y P5 están en la cola de espera.
Paso 8) En el tiempo = 11, finaliza la ejecución del proceso P2. Se compara el tiempo de ráfaga de P3 y P5. El proceso P5 se ejecuta porque su tiempo de ráfaga es menor.
Paso 9) En el tiempo = 15, finalizará la ejecución del proceso P5.
Paso 10) En el tiempo = 23, finaliza la ejecución del proceso P3.
Paso 11) Calculemos el tiempo medio de espera como ejemplo anterior.
Wait time P4= 0-0=0 P1= 3-2=1 P2= 9-5=4 P5= 11-4=7 P3= 15-1=14
Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
SJF preventivo
En la programación preferente de SJF, los trabajos de la cola están listos a medida que llegan. Un proceso comienza con el tiempo de ejecución de ráfaga más corto. Si se produce un proceso con un tiempo de ráfaga aún más corto, el proceso actual o sustituido se elimina de la ejecución y se asigna un ciclo de CPU a la posición más corta.
Considere los siguientes cinco procesos:
Cola de procesamiento | Tiempo quemado | Hora de llegada |
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Paso 0) En el tiempo = 0, P4 muere y comienza la ejecución.
Cola de procesamiento | Tiempo quemado | Hora de llegada |
P1 | 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Paso 1) En el tiempo = 1, llega el proceso P3. Pero, P4 tiene un tiempo de ráfaga más corto. Seguirá ejecutándose.
Paso 2) En el tiempo = 2, el proceso P1 viene con un tiempo de ráfaga = 6. El tiempo de ráfaga es mayor que el tiempo P4. En consecuencia, P4 continuará su ejecución.
Paso 3) En el tiempo = 3, finaliza la ejecución del proceso P4. Se compara el tiempo de ráfaga de P3 y P1. El proceso P1 se ejecuta porque su tiempo de ráfaga es menor.
Paso 4) En el tiempo = 4, vendrá el proceso de P5. Se compara el tiempo de ráfaga de P3, P5 y P1. El proceso P5 se ejecuta porque su tiempo de ráfaga es el más bajo. El proceso P1 tiene preferencia.
Cola de procesamiento | Tiempo quemado | Hora de llegada |
P1 | Quedan 5 de 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | 4 | 4 |
Paso 5) En el tiempo = 5, vendrá el proceso P2. Se compara el tiempo de ráfaga de P1, P2, P3 y P5. El proceso P2 se ejecuta porque tiene el tiempo de ráfaga más corto. El proceso P5 tiene preferencia.
Cola de procesamiento | Tiempo quemado | Hora de llegada |
P1 | Quedan 5 de 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | Quedan 3 de 4 | 4 |
Paso 6) En el tiempo = 6, P2 se está ejecutando.
Paso 7) En el tiempo = 7, P2 finaliza su ejecución. Se compara el tiempo de ráfaga de P1, P3 y P5. El proceso P5 se ejecuta porque su tiempo de ráfaga es menor.
Cola de procesamiento | Tiempo quemado | Hora de llegada |
P1 | Quedan 5 de 6 | 2 |
P2 | 2 | 5 |
P3 | 8 | 1 |
P4 | 3 | 0 |
P5 | Quedan 3 de 4 | 4 |
Paso 8) En el tiempo = 10, P5 terminará de ejecutarse. Se compara el tiempo de ráfaga de P1 y P3. El proceso P1 se ejecuta porque su tiempo de ráfaga es menor.
Paso 9) En el tiempo = 15, P1 finaliza su ejecución. P3 es el único proceso que queda. Comenzará a ejecutarse.
Paso 10) En el tiempo = 23, P3 finaliza su ejecución.
Paso 11) Calculemos el tiempo medio de espera como ejemplo anterior.
Wait time P4= 0-0=0 P1= (3-2) + 6 =7 P2= 5-5 = 0 P5= 4-4+2 =2 P3= 15-1 = 14
Average Waiting Time = 0+7+0+2+14/5 = 23/5 =4.6
Ventajas de SJF
Aquí están las ventajas / beneficios de usar el método SJF:
- SJF se utiliza a menudo para la programación a largo plazo.
- Reduce el tiempo medio de espera en un algoritmo FIFO (Primero en entrar, primero en salir).
- El método SJF proporciona el tiempo de espera promedio más bajo para un conjunto específico de procesos.
- Es adecuado para trabajos que se ejecutan por lotes, donde los tiempos actuales se conocen de antemano.
- Para el sistema por lotes de programación a largo plazo, se puede obtener una estimación del tiempo de ráfaga a partir de la descripción del trabajo.
- Para la programación a corto plazo, necesitamos predecir el valor del próximo tiempo de ráfaga.
- Probablemente óptimo para el tiempo medio de respuesta.
Desventajas / Desventajas de SJF
Aquí hay algunas desventajas / desventajas de los algoritmos SJF:
- El tiempo de finalización del trabajo debe conocerse antes, pero es difícil de predecir.
- A menudo se utiliza en un sistema por lotes para la programación a largo plazo.
- SJF no se puede aplicar a la programación de CPU a corto plazo. Se debe a que no existe un método específico para predecir la duración de la próxima ráfaga de CPU.
- Este algoritmo puede provocar tiempos de respuesta muy largos o hambre.
- Requiere conocimiento de cuánto durará un proceso o trabajo.
- El hambre da como resultado que no se reduzca el tiempo medio de respuesta.
- Es difícil saber la duración de la próxima solicitud de CPU.
- El pasado debe registrarse, lo que genera más gastos generales en el procesador.
Resumen
- SJF es un algoritmo en el que se selecciona el proceso con el menor tiempo de ejecución para la siguiente ejecución.
- La programación SJF está asociada con cada trabajo como una unidad de tiempo para completar.
- Este método de algoritmo es útil para el procesamiento por lotes, cuando no es fundamental esperar a que finalicen los trabajos.
- Básicamente, existen dos tipos de métodos SJF: 1) SJF no preventivo y 2) SJF preventivo.
- En la programación no preferente, una vez que se asigna el ciclo de la CPU para su procesamiento, el proceso lo mantiene hasta que alcanza un estado de espera o se termina.
- En la programación preferente de SJF, los trabajos de la cola están listos a medida que llegan.
- Mientras comienza un proceso con un tiempo de ráfaga corto, el proceso actual o interrumpido se elimina de su ejecución y la publicación más corta se ejecuta en primer lugar.
- SJF se utiliza a menudo para la programación a largo plazo.
- Reduce el tiempo medio de espera en un algoritmo FIFO (Primero en entrar, primero en salir).
- En la programación SJF, el tiempo de finalización del trabajo debe conocerse antes, pero es difícil de predecir.
- SJF no se puede aplicar a la programación de CPU a corto plazo. Se debe a que no existe un método específico para predecir la duración de la próxima ráfaga de CPU.