Agustín Cangiani 10 роки тому
батько
коміт
06c3f0d6ea
2 змінених файлів з 39 додано та 4 видалено
  1. 4 4
      Makefile
  2. 35 0
      informe/7-informe.md

+ 4 - 4
Makefile

@@ -63,10 +63,10 @@ ejercicio5: all makedir
 	./simusched ejer2.tsk 1 $(CONTEXT_SWITCH) $(CORE_SWITCH) SchedRR 1 10 | ./graphsched.py > informe/imagenes/ejercicio5_1core_10q.png
 
 ejercicio7: all makedir
-	./simusched ejer7-sjf.tsk 1 $(CONTEXT_SWITCH) $(CORE_SWITCH) SchedSJF 1 15 10 5 | ./graphsched.py > informe/imagenes/ejercicio7_SJF_1core.png
-	./simusched ejer7-sjf.tsk 2 $(CONTEXT_SWITCH) $(CORE_SWITCH) SchedSJF 2 15 10 5 | ./graphsched.py > informe/imagenes/ejercicio7_SJF_2core.png
-	./simusched ejer7-rsjf.tsk 1 $(CONTEXT_SWITCH) $(CORE_SWITCH) SchedRSJF 1 $(QUANTUM) 20 4 5 | ./graphsched.py > informe/imagenes/ejercicio7_RSJF_1core.png
-	./simusched ejer7-rsjf.tsk 2 $(CONTEXT_SWITCH) $(CORE_SWITCH) SchedRSJF 2 $(QUANTUM) $(QUANTUM) 20 4 5 | ./graphsched.py > informe/imagenes/ejercicio7_RSJF_2core.png
+	./simusched ejer7-sjf.tsk 1 2 4 SchedSJF 1 15 10 5 | ./graphsched.py > informe/imagenes/ejercicio7_SJF_1core.png
+	./simusched ejer7-sjf.tsk 2 2 4 SchedSJF 2 15 10 5 | ./graphsched.py > informe/imagenes/ejercicio7_SJF_2core.png
+	./simusched ejer7-rsjf.tsk 1 2 4 SchedRSJF 1 4 20 4 5 | ./graphsched.py > informe/imagenes/ejercicio7_RSJF_1core.png
+	./simusched ejer7-rsjf.tsk 2 2 4 SchedRSJF 2 4 4 20 4 5 | ./graphsched.py > informe/imagenes/ejercicio7_RSJF_2core.png
 
 ejercicio9: all makedir
 	./simusched ejer2.tsk 1 $(CONTEXT_SWITCH) $(CORE_SWITCH) SchedMFQ 10 05 | ./graphsched.py > informe/imagenes/ejercicio9_1core.png

+ 35 - 0
informe/7-informe.md

@@ -10,11 +10,46 @@ ejecutará la tarea con menor cantidad de procesamiento pendiente.
 
 ## Implementación
 
+Para los dos tipos de schedulers empezamos usando `Map` de __C++__ ya 
+usado en ejercicios anteriores para la carga inicial de los **Procesos** 
+un struct que nos permite almacenar el process id, la duración de la tarea 
+y en el caso de *RSJF* un contador de quantums consumidos. 
+
+Luego cuando al momento de cargar un **Proceso** lo obtenemos 
+del `Map` y lo encolamos en una `priority_queue` de **Procesos**, dicha cola
+nos asegura obtener siempre la tarea cargada que necesite menos tiempo de cpu.
+
+Finalmente los cpus de *SJF* siempre obtendrán la tarea lista de menor duración de la 
+cola y la ejecutará hasta terminar. Por otro lado los cores *RSJF* ejecutaran la tarea
+lista por la cantidad de quantums asignados y una vez terminado el quantum reencolaran 
+la tarea con la duración restante en la cola de prioridad para luego volver a obtener
+la siguiente tarea con menor duración o quedar idle.
 
 ## Pruebas
 
+Para hacer unas pruebas sencillas generamos dos lotes de tareas, los cuales tienen
+un *context switch* de 2 ciclos y un *core switch* y *quantum* de 4 ciclos obteniendo
+los siguientes resultados.
+
+A. Scheduler SJF con 1 y 2 cores, lote y resultados:
+
+| Task | Tipo        | Release time | n  |
+|------|-------------|--------------|----|
+| 0    | TaskCPU     | 0            | 15 |
+| 1    | TaskCPU     | 5            | 10 |
+| 2    | TaskCPU     | 10           | 5  | 
+
 ![Ejercicio 7 - SJF - 1 Core](informe/imagenes/ejercicio7_SJF_1core.png)
 ![Ejercicio 7 - SJF - 2 Core](informe/imagenes/ejercicio7_SJF_2core.png)
+
+B. Scheduler RSJF(reentrante) con 1 y 2 cores, lote y resultados:
+
+| Task | Tipo        | Release time | n  |
+|------|-------------|--------------|----|
+| 0    | TaskCPU     | 0            | 20 |
+| 1    | TaskCPU     | 5            | 4  |
+| 2    | TaskCPU     | 10           | 5  | 
+
 ![Ejercicio 7 - RSJF - 1 Core](informe/imagenes/ejercicio7_RSJF_1core.png)
 ![Ejercicio 7-  RSJF - 2 Core](informe/imagenes/ejercicio7_RSJF_2core.png)