UTNianos

Versión completa: Consulta planificación SJF
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas!

Tengo una consulta respecto a la planificación SJF.
En el ejercicio 3 de la guía, nos dan esta tabla (los valores en rojo son los estimados):

[attachment=9874]

Según tengo entendido, estos valores estimados, son los que se utilizan para planificar el orden de ejecución (por lo tanto, en este caso, comienzo ejecutando el proceso B, cuyo estimado es 1,5 y real 10, luego el C y por último el B). Ahora bien, hasta acá todo perfecto, pero cuando los procesos vuelven de I/O, al planificar la segunda ráfaga, ¿no debería tener en cuenta los nuevos valores estimados (A: 3,25, B: 5,75 y C: 2,25) y ejecutar en este orden C - A - B? Pregunto esto porque no estoy segura de haberlo entendido bien, y en el resuelto está hecho diferente (tal vez sea porque tiene un error en el valor de I/O del proceso B, pero no logro darme cuenta).

Muchas gracias!!
¡Aloha!

La idea de SJF es que cada vez que tengas que planificar tengas en cuenta los valores estimados (porque son los únicos que conocés hasta el momento), pero cuando ejecuta el proceso tenés que esperar el tiempo real. O sea, en el caso ese que nombrás, planificás pensando que tarda 1.5, pero cuando le toque ejecutar esa ráfaga en realidad tenés que esperarlo los 10 que realmente tarda.

Por la pregunta puntual esa, la idea es que vos vas a estar todo el tiempo comparando una ráfaga de cada proceso, porque justamente es eso lo que planificás: la próxima ráfaga de cada uno. Dependiendo el ejercicio, es muy factible que haya un momento en el que en tu planificación compitan un proceso que quiere ejecutar su primer ráfaga con otro que quiere ejecutar su segunda ráfaga. En ese caso, tendrías que comparar el estimado de la primer ráfaga de uno contra el estimado de la segunda ráfaga del otro.

¿Me explico?


El concepto de "la primer ráfaga" o "la segunda ráfaga" es algo súper ficticio. A nadie le importa si es la primera o decimoquinta ráfaga de un proceso: lo importante es que quiere ejecutar una ráfaga más, y entonces tenés que comparar cuánto va a tardar en completar esa ráfaga versus la próxima ráfaga de cada uno del resto de los procesos que están listos para ejecutar.
Genial, mil gracias!

Ahora, si fuese con desalojo, si por ejemplo un proceso termina de ejecutar y va a I/O, al regresar, lo que tengo que comparar siempre es el estimado no? O sea, por ejemplo, el proceso A tiene estimado 2 y real 5, el B tiene estimado 4 y real 6. Supongamos que el A fue a I/O, y al momento de regresar está ejecutando B. Debería expulsar al B?

Gracias de nuevo!
Siempre comparás estimados, porque es la única información que tenés.

Cuando es con desalojo, creo que la diferencia está en que cuando llega un nuevo proceso a READY volvés a planificar. Y en ese caso no recuerdo ( adriano !) si "partirías" la ráfaga que está corriendo en dos (porque ya ejecutaste un poco, entonces quizá podrías re-estimar cuánto te falta de esa ráfaga) o si seguirías comparando el valor anterior de estimación que tenías, por irreal que sea.

Se me ocurre que sería la segunda, pero la verdad es que no estoy seguro.
En ese caso comparas "lo que le falta". Si ejecuto 10 y estimaste 12, para vos le falta 2 (quizas no sea asi, es una estimacion)
adriano, y en este caso en que estimó 1 y dura 10, si vuelve a planificar cuando ya ejecutó 5, ¿planifica con la estimación de -4?



Gracias =)
Si, es re normal que pase eso. Si la estimación fue menor a la rafaga real, pasa todo el tiempo. Lo importante con las estimaciones es que despues de pasado X tiempo vos podes identificar que ciertos procesos tienen rafagas de maaaas o meeeenos tanto, otros de maaaas o meeeenos tanto otro y asi.
Muchísimas gracias a los dos!
Hola de nuevo,

Revivo este tema porque haciendo los ejercicios de la guía, el 12 c pide utilizar SJF con desalojo, pero en este caso no se estiman las ráfagas. Entonces mi pregunta es: el proceso se desaloja al momento que otro se ubica en la cola de Ready (ya sea por ser un proceso nuevo o por regresar de I/O) y se compara lo que lleva ejecutando el primero (a ser desalojado) vs la próxima ráfaga del que está en la cola de Ready, no?
Adjunto la imagen de cómo lo hice, muchas gracias!
(17-02-2015 11:27)takuma1985 escribió: [ -> ]Hola de nuevo,

Revivo este tema porque haciendo los ejercicios de la guía, el 12 c pide utilizar SJF con desalojo, pero en este caso no se estiman las ráfagas. Entonces mi pregunta es: el proceso se desaloja al momento que otro se ubica en la cola de Ready (ya sea por ser un proceso nuevo o por regresar de I/O) y se compara lo que lleva ejecutando el primero (a ser desalojado) vs la próxima ráfaga del que está en la cola de Ready, no?
Adjunto la imagen de cómo lo hice, muchas gracias!

Creo que en el instante 9 que la CPU queda ociosa podría ejecutar el proceso B un instante y luego ser desalojado cuando vuelve el proceso A a la cola de Ready

Despues todo lo demás creo que está bien. Igual corrijan lo que dije, que recien estoy arrancando a preparar el final. Todavia estoy oxidado ja
URLs de referencia