Primer parcial mayo 2023 - Problema 2 - parte a)

Primer parcial mayo 2023 - Problema 2 - parte a)

de Nicolas Aguilera Leal -
Número de respuestas: 4

Buenas,

Me quedan algunas dudas respecto al diagrama de planificación de la solución.

En el diagrama de planificación de la solución, en el período de 25ms a 30ms (el que tiene "30" arriba) cambia el hilo que está siendo ejecutado al P1H2. Por qué? Por lo que entiendo, P1H1 tiene un tiempo de cómputo total de 25ms, y para ese momento P1H1 ya ejecutó 15ms de esos 25ms. En el instante t=25ms el planificador SJF recalcula las prioridades y obtiene que el tiempo de ejecución restante para cada hilo es: P1H1 = 10ms, P1H2 = 15ms, P1H2 = 15ms. Debería elegir ejecutar P1H1 ya que es el trabajo más corto. 

Qué estoy haciendo mal?

En respuesta a Nicolas Aguilera Leal

Re: Primer parcial mayo 2023 - Problema 2 - parte a)

de Leonardo Alberro Zimmermann -
Hola,
es por definición de SJF. Lo que cuenta es la próxima ráfaga, no el tiempo total. Por lo tanto en el tiempo que indicás P1H2 tiene 5ms
Saludos
En respuesta a Leonardo Alberro Zimmermann

Re: Primer parcial mayo 2023 - Problema 2 - parte a)

de Nicolas Aguilera Leal -
Ahora entiendo. Gracias!

Me surgen otras dudas a raíz de esto:

"La próxima ráfaga" de cada hilo se calcula sin tener en cuenta que se puede bloquear por los otros hilos? Por ejemplo, en la solución propuesta los largos de "la próxima ráfaga" en t=25ms para P1H2 es 5ms porque va a ejecutar "Ejecuta 5ms" y luego "Bloquea 10ms", mientras que para P1H1 es 10ms, porque va a ejecutar "create_thread(proc1)" seguido de "print(pid)". Sin embargo, cuando P1H2 se bloquee P1H1 también va a estar bloqueado, porque el modelo de hilos es Mx1, y eso cambiaría el largo de la ráfaga de P1H1. No tengo que tener esto en cuenta para calcular los CPU Burst de cada hilo en este caso?

Por qué cuando se bloquea un hilo, el estado de los otros hilos es "Listo" y no "Bloqueado"?

Por qué en t=5ms el proceso P2 no está en la cola de listos? Según la letra la ejecución de "fork()" dura 5ms. Al final de esta llamada, no debería quedar P2 en la cola de listos? Yo pensé que si, y me cambia el tiempo de espera de P2 a 15ms en vez de 10ms como dice la solución.
En respuesta a Nicolas Aguilera Leal

Re: Primer parcial mayo 2023 - Problema 2 - parte a)

de Leonardo Alberro Zimmermann -
Cuando hay planificación a nivel de hilos y el modelo es Mx1, para calcular la siguiente ráfaga del proceso tenés que "simular" lo que pasa a nivel de hilos para saber cuál va a ser el tiempo de ejecución hasta el próximo bloqueo. Esto lo podes hacer porque  si bien el SO solo ve un solo hilo de ejecución, vos en el ejercicio tenés visión de todo.

Cuando se bloquea un hilo, se bloquea todo el proceso pero a nivel de usuario el otro hilo está listo.

En la solución veo que P2 aparece en la cola de listos a los 5ms.
Saludos

En respuesta a Leonardo Alberro Zimmermann

Re: Primer parcial mayo 2023 - Problema 2 - parte a)

de Nicolas Aguilera Leal -
Entiendo cómo calcular la siguiente ráfaga del proceso. Mi duda era sobre cómo calcular la siguiente ráfaga del hilo, ya que en este caso el planificador SJF es a nivel de hilos de usuario. Para hacer este cálculo para el hilo 1 por ejemplo, miro solamente el código del hilo 1? Asumo que si, porque siguiendo este criterio llego al diagrama de la solución.

Sobre el diagrama de la solución: P2 aparece "Listo" en la columna con t=10ms. Esta columna representa el estado del proceso en t=10ms, verdad? La columna anterior representa el estado del proceso en t=5ms? Porque en esa columna P2 tiene un guión, como si no existiera aún.
Quizá estoy interpretando mal el diagrama.