0% encontró este documento útil (0 votos)
543 vistas3 páginas

Algoritmo SJF

El algoritmo de planificación SJF (Shortest Job First) asigna el proceso con la ráfaga más corta de CPU a la CPU cuando está disponible. Esto minimiza el tiempo de espera medio de los procesos. Sin embargo, es difícil de implementar porque requiere conocer la duración exacta de la próxima ráfaga de CPU de cada proceso. Aunque no es factible para entornos interactivos, SJF es un algoritmo óptimo para minimizar el tiempo de finalización promedio en entornos por lotes donde se pueden estimar las duraciones de los

Cargado por

Ely Vazquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
543 vistas3 páginas

Algoritmo SJF

El algoritmo de planificación SJF (Shortest Job First) asigna el proceso con la ráfaga más corta de CPU a la CPU cuando está disponible. Esto minimiza el tiempo de espera medio de los procesos. Sin embargo, es difícil de implementar porque requiere conocer la duración exacta de la próxima ráfaga de CPU de cada proceso. Aunque no es factible para entornos interactivos, SJF es un algoritmo óptimo para minimizar el tiempo de finalización promedio en entornos por lotes donde se pueden estimar las duraciones de los

Cargado por

Ely Vazquez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

SJF:

„ Entra en la CPU el proceso con la ráfaga de CPU más corta.

„ Minimiza el tiempo de espera medio.

„ Riesgo de inanición de los procesos de larga duración.

„ No es implementable. Se pueden estimar las duraciones de los procesos, según su


historia reciente.

„ Versión expulsiva (SRTF): el proceso en CPU es desalojado

si llega a la cola un proceso con duración más corta.

El algoritmo de primero el trabajo mas corto (SJF, shortest job frist) que asocia a cada
proceso la longitud de la siguiente ráfaga de CPU de ese proceso. Cuando la CPU queda
disponible, asigna al proceso cuya siguiente ráfaga de cpu sea mas corta. Si hay dos
procesos cuyas siguientes ráfagas de cpu tiene la misma duración, se emplea planificación
FCFS (first come, first served) para romper el empate. El problema esta en conocer dichos
valores, pero podemos predecirlos usando la información de los ciclos anteriores
ejecutados.

Se puede comprobar que el algoritmo SJF es optimo, ya que ofrece el mínimo tiempo
promedio de espera para un conjunto de procesos dado. La comprobación muestra que
poniendo un proceso breve antes de uno largo se reduce el tiempo de espera del proceso
corto más de lo que aumenta el tiempo de espera del proceso largo, por lo tanto se
reduce el tiempo de espera promedio.

La ventaja de este algoritmo es su fácil implementación, sin embargo no es valido para


entornos interactivos ya que un proceso de mucho cálculo de CPU hace aumentar el
tiempo de espera de los demás procesos. Para implementar el algoritmo solo se necesita
mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un
proceso pasa del bloqueado al listo se sitúa el ultimo de la cola.
Planificación por Prioridad al más corto (SJF, Short Job First).

Al igual que en el algoritmo FIFO las ráfagas se ejecutan sin interrupción,


por tanto, sólo es útil para entornos batch. Su característica es que cuando
se activa el planificador, éste elige la ráfaga de menor duración. Es decir,
introduce una noción de prioridad entre ráfagas. Hay que recordar que en
los entornos batch se pueden hacer estimaciones del tiempo de ejecución
de los procesos.

  La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que


minimiza el tiempo de finalización promedio, como puede verse en el
siguiente ejemplo:

Ej: Supongamos que en un momento dado existen tres ráfagas listos R1, R2
y R3, sus tiempos de ejecución respectivos son 24, 3 y 3 ms. El proceso al
que pertenece la ráfaga R1 es la que lleva más tiempo ejecutable, seguido
del proceso al que pertenece R2 y del de R3. Veamos el tiempo medio de
finalización (F) de las ráfagas aplicando FIFO y SJF:

  FIFO F = (24 + 27 + 30) / 3 = 27 ms.

  SJF F = (3 + 6 + 30) / 3 = 13 ms.

Se puede demostrar que este algoritmo es el óptimo. Para ello,


consideremos el caso de cuatro ráfagas, con tiempos de ejecución de a, b,
c y d. La primera ráfaga termina en el tiempo a, la segunda termina en el
tiempo a+b, etc. El tiempo promedio de finalización es (4a+3b+2c+d)/4. Es
evidente quea contribuye más al promedio que los demás tiempos, por lo
que debe ser la ráfaga más corta, b la siguiente, y así sucesivamente. El
mismo razonamiento se aplica a un número arbitrario de ráfagas.

No obstante, este algoritmo sólo es óptimo cuando se tienen


simultáneamente todas las ráfagas. Como contraejemplo, considérense
cinco ráfagas desde A hasta E, con tiempo se ejecución de 2, 4, 1, 1 y 1
respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3. Primero se
dispone de A y B, puesto que las demás ráfagas no han llegado aún. Con el
algoritmo SJF las ejecutaríamos en orden A, B, C, D, y E con un tiempo de
finalización promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E
y A se tiene un promedio de finalización de 4.4
Se puede demostrar que el algoritmo SJF es óptimo, en cuanto a que da el tiempo
de espera promedio mínimo para un conjunto dado de procesos. Si atendemos a
un proceso corto antes que a uno largo, el tiempo de espera del proceso corto
disminuirá más de lo que aumenta el tiempo de espera del proceso largo. En
consecuencia, el tiempo de espera promedio disminuye. Lo realmente difícil del
algoritmo SJF es conocer la duración de la siguiente solicitud de CPU. Para la
planificación a largo plazo en un sistema por lotes, podemos usar como duración el
límite de tiempo de proceso que el usuario especifica cuando presenta el trabajo.
Esto motiva a los usuarios para estimar con precisión el límite de tiempo en sus
procesos, ya que un valor más bajo podría significar una respuesta más rápida.

También podría gustarte