EJ 1 - 2do Parcial 2019

EJ 1 - 2do Parcial 2019

de Bruno Agustin Garcia Baldassari -
Número de respuestas: 2

Buenas, mirando la solución de este ejercicio de parcial, no logramos entender porque, desde el t=30, cuando se ejecuta el proceso hijo, lo hace por 15ms. Según entendemos el proceso debería ejecutar por 10ms (5 por el if, y 5 por la asignación).

La única justificación que se nos ocurre es que el if tome 10ms, considerando que en assembler sería una comparación y luego el salto correspondiente. Esto es consecuente con lo que hace el padre que ejecuta 20ms, nosotros entendimos que eran 15ms.

Nos gustaría que nos confirmen esto, porque en otro ejercicio (problema 3 - SP 2020) se hace algo parecido pero en este caso el if no parece llevar 10ms de ejecución.

Adjunto fotos de los dos problemas y las soluciones planteadas.

2do parcial 2019



SP 2020

En respuesta a Bruno Agustin Garcia Baldassari

Re: EJ 1 - 2do Parcial 2019

de Manuel Freire -
Buenas,

Este es un error muy común en los ejercicios de planificación. Una línea de código no necesariamente se mapea a una instrucción única (aka 5ms). En este caso la línea pid = fork () cuenta con dos operaciones. Si bien el "costo" de hacer el fork solo se "paga" en el padre la asignación es una instrucción posterior y la ejecutan los dos. Lo mismo sucede en casos como A = A+1 que toman 10ms porque primero se debe hacer la suma (A+1) que toma 5ms y luego asignarla a la variable A que toma otros 5 ms.

Saludos!
En respuesta a Manuel Freire

Re: EJ 1 - 2do Parcial 2019

de Bruno Agustin Garcia Baldassari -
Manuel, gracias por la respuesta.
Es verdad no estaba considerando el hecho de que fork() y la asignación son dos operaciones distintas.
Ahora veo que en el caso de el super parcial aclara en la letra que esto en particular solo lleva 5ms. Habrá que estar más atento para la próxima. Saludos.