sisoputnfrba / foro

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

Detener planificacion para FINALIZAR_PROCESO #3672

Closed uriGrif closed 5 months ago

uriGrif commented 5 months ago

Buenas, quería preguntar si para el requerimiento de finalizar proceso por consola, podríamos pausar la planificación al momento de finalizar un Proceso. No sé si es correcto a nivel teórico pero esto facilitaría mucho las cosas, ya que, mientras buscamos el proceso a quitar entre las diferentes colas, evitariamos que el kernel siga realizando movimientos entre las mismas. Pensamos como hacerlo de otras formas, pero no encontramos ninguna manera de evitar eficientemente las condiciones de carrera entre los planificadores y la funcion "finalizar proceso". Al pausar la planificacion, estariamos "apagando" momentaneamente la concurrencia y podriamos finalizar cualquier proceso mas facilmente. Entendemos que en un caso en el que hayan muchisimos procesos en memoria, al tener que buscar los procesos en todas las colas, la funcion buscar tardaria bastante (ya que usa una busqueda lineal) y resultaria en que la planificacion este pausada por un periodo de tiempo "grande". Es valido usar este enfoque aunque no sea muy eficiente para casos con muchos procesos?

FredeHG commented 5 months ago

Hola buenas!

Si, pueden pausar la planificación, no buscamos finalizar procesos que estén moviéndose.

Solo para extenderme en la respuesta el problema que tienen en este caso puntual es que pasa si un proceso esta moviéndose de una queue a otra y eso es un problema de ✨race condition✨ que se podría resolver con semáforos, es decir, al hacer una transición debas pedir ambas queue's ya que ambas son parte del camino critico y necesitarías sostener la consistencia de que un proceso este en algún estado en todo momento a ojos del sistema

Saludos!

GonTurri commented 5 months ago

Buenas, esto sería hacer un mutex nuevo por cada transición? Cuando lo decís lo del race condition parece fácil pero dejamos esta pregunta porque nos está siendo recontra complicado implementarlo sin que nos explote todo

FredeHG commented 5 months ago

Si, podría ser con un mutex nuevo o ser muy consistente con el orden en el que se piden los mutex de las queue, obvio nombrar la race condition es más fácil que solucionarla

Dado que no es un caso que nos interese probar consideramos que pueden evitarse el quilombo y simplemente parar la planificación

a términos de este TP el tiempo que este parada la planificación va a ser imperceptible