Closed ArielSurco closed 1 month ago
Buenas! Cómo va?
El planteo que haces de como estas pensando Colas Multi Nivel esta correcto, algo importante del TP es que no hay una única solución a los problemas.
En la resolución que planteas lo único que me preocupa es como manejan si por ejemplo estan ejecutando un hilo de una queue de prioridad 3 y aparece justo uno de prioridad 0, 1 o 2, ya que si llega un hilo de esas prioridades el próximo a ejecutar sería el nuevo y no otro de la cola de prioridad 3.
Saludos.-
En la resolución que planteas lo único que me preocupa es como manejan si por ejemplo estan ejecutando un hilo de una queue de prioridad 3 y aparece justo uno de prioridad 0, 1 o 2, ya que si llega un hilo de esas prioridades el próximo a ejecutar sería el nuevo y no otro de la cola de prioridad 3.
Para resolver eso, la responsabilidad recae en la función obtener_lista_mayor_prioridad
que:
Y como esta función se llama cada vez que se quiere saber cuál es el siguiente hilo a ejecutar (solo en prioridades y CMN) siempre estaría actualizada con cualquier cambio que se haga en READY (bloqueando con mutex la lectura para evitar condiciones de carrera)
Excelente! Como estan asegurandose de que si cae algun hilo nuevo a READY en una prioridad mayor lo atienden, esta bien como lo etan planteando.
Saludos.-
Excelente, muchas gracias!!
🛠️ Lenguaje
C
🖋️ Descripción
Buenas! Tengo una duda respecto a la "correcta" implementación de Colas Multinivel con Round Robin.
Estaría bien plantear el algoritmo de CMN como un algoritmo de prioridades que además setea un temporizador (tiempo=Quantum) para enviar la interrupción a la CPU? En la sección de soluciones posibles adjunto cómo estaba planteando la implementación, para más contexto
Mi interpretación de RR es que funciona como un FIFO que agrega el temporizador (para desalojar por Quantum) para que un proceso no monopolice la CPU, y sumando a esto que se combina con CMN con algoritmo de Prioridades (entre colas) resulta en que primero tienen que finalizar todos los procesos de la cola de mayor prioridad para pasar a la siguiente, donde al utilizarse RR se desempatan por FIFO los que tengan la misma prioridad. Cosa que, teniendo en cuenta que no hay desalojo entre colas, si le quitara la interrupción por quantum el funcionamiento lo veo muy similar al algoritmo de prioridades.
📔 Citas del enunciado/videos
💭 Soluciones posibles
En mi planificador a corto plazo llamo a una función
obtener_siguiente_a_exec
que es quien se encarga de seleccionar la función que utiliza el algoritmo definido en la configuración.En la función correspondiente al algoritmo por prioridades hago algo tal que:
Y en la función que corresponde al algoritmo de CMN queda algo similar a esto:
Por lo que técnicamente estoy implementando listas y no colas, y aunque lo modificara para que
obtener_lista_mayor_prioridad
retorne colas, el algoritmo de prioridades estaría implementando más de una cola (intermedias/auxiliares) y no solo una como se menciona en la primera respuesta del issue #4289📝 Normas del foro