sisoputnfrba / foro

Foro de consultas para el trabajo práctico
149 stars 7 forks source link

Duda sobre quantum y clock Go #4329

Open Martlar1502 opened 1 week ago

Martlar1502 commented 1 week ago

🖋️ Descripción

Buenas tardes,

Teniamos una duda sobre como poder implentar el quantum para usar RR en la CPU, como se podría hacer? Deberíamos de crear un clock en el kernel? Como podríamos medir cuanto quantum se consume en cada instruccion ejecutada por la CPU?

Desde ya gracias, Saludos

📔 Citas del documento de pruebas

👍 Comportamiento esperado

No response

👎 Comportamiento obtenido

No response

📝 Normas del foro

Martlar1502 commented 1 week ago

Me olvide de alcarar, es lenguaje GO

Martlar1502 commented 6 days ago

Buenas como estan?

Pudieron ver el issue?

Desde ya gracias, Saludo

GadStam commented 5 days ago

Hola! El manejo del quantum lo realiza el kernel. En cuanto se cumpla el quantum, el kernel deberá avisarle a la CPU para que desaloje al hilo que se estaba ejecutando. Recuerden que el Q esta dado por la configuración y es un tiempo, como esto "quantum": 2750. Esto significa que desde que comenzó a ejecutarse tiene 2750 milisegs hasta ser desalojado por fin de quantum. Espero que haya quedado mas claro, Saludos!

nahuemazzeo commented 4 days ago

Hola @Martlar1502. Profundizo un poco el comentario de @GadStam

Cuando ustedes envian desde Kernel un hilo a CPU deben "contar" cuando termina el "quantum" para avisarle al CPU que debe desalojar el hilo que enviaron previamente. Para esto, inicialmente yo les recomendaria crear un hilo/thread/rutina que una vez enviado el hilo al CPU que haga el "Contar Quantum" y una vez que ese contar termine solicitarle al CPU que desaloje el hilo.

Ahora, algunas cosas que tenemos que tener en cuenta:

  1. Cuando el contador termine puede que el hilo ya haya sido desalojado previamente
  2. Cuando el contador termine puede que haya otro hilo en ejecucion
  3. Cuando el contador termine puede que este el mismo proceso en ejecucion pero que no sea el quantum que se origino al enviar el proceso a Exec (osea, el proceso se envio a exec, salio de exec y volvio a exec antes que el primer quantum termine)

Para esto les recomiendo que cuando crean el hilo/thread/rutina le envien a la misma un "identificador" que permita identificar univocamente el pasaje a exec cosa que al terminar el quantum puedan validar si dicho "identificador" es el mismo o no.

Saludos.

iago64 commented 10 hours ago

@Martlar1502 te sirvieron las respuestas? Necesitas que aclaremos algo mas?