فهرست منبع

creo que ya quedo bien el 9

Fabian 10 سال پیش
والد
کامیت
b0e085568e
2فایلهای تغییر یافته به همراه44 افزوده شده و 9 حذف شده
  1. 4 2
      graphsched.py
  2. 40 7
      informe/9-informe.md

+ 4 - 2
graphsched.py

@@ -6,8 +6,10 @@ import re, sys, os
 from PIL import Image, ImageDraw, ImageFont
 
 # Font search paths and acceptable names. Order matters.
-FONT_DIRS = "/usr/share/fonts/truetype/freefont","/usr/share/fonts/truetype", "/usr/lib/fonts/", "/Library/Fonts"
-FONT_NAMES = "FreeMono.ttf", "Andale Mono.ttf", "Arial Black.ttf", "Hei.ttf.ttf", "Courier New.ttf", "DejaVuSans.ttf"
+
+FONT_DIRS = "/usr/share/fonts/truetype/dejavu","/usr/share/fonts/truetype", "/usr/lib/fonts/", "/Library/Fonts"
+
+FONT_NAMES = "DejaVuSansMono.ttf" "FreeMono.ttf", "Andale Mono.ttf", "Arial Black.ttf", "Hei.ttf.ttf", "Courier New.ttf", "DejaVuSans.ttf"
 
 def findfont(names=FONT_NAMES, dirs=FONT_DIRS):
 	"""Return first existing path or None."""

+ 40 - 7
informe/9-informe.md

@@ -1,13 +1,13 @@
 \newpage
 # Ejercicio 9
 
-### Descripción del algoritmo 
+## Descripción del algoritmo 
 
 Este scheduler intenta alcanzar un balance entre throughput (para tareas con uso alto de recursos) y bajo waiting time (para tareas con poco uso de recursos y mucho IO).
 Las tareas priorizadas usan el CPU poco tiempo, por lo que es bueno reducir el waiting time para dar respuesta rápida.
 Las otras tareas requieren más recursos, por lo que no les afecta un waiting time mayor si eso significa obtener mas quantum.
 
-### Implementacion
+## Implementacion
 Para la implementación de este ejercicio utilizando:
 
 `Map<pid, process>`
@@ -33,18 +33,35 @@ Para probar el funcionamiento del scheduler, se procedió a correr 3 lotes de ta
 
 Las tareas consisten en los siguientes 3 casos:
 
-* __CPU Heavy:__ Alto uso de CPU casi sin uso de IO, se simulan tareas con mucho consumo de CPU (que superen el quantum estimado) con pequeñas operaciones de IO.
-* __IO Heavy:__ Tareas con poco consumo de CPU (comparadas a _CPU Heavy_) pero con un alto uso de IO.
-* __Interacción de usuario:__ Consiste en varios procesos con uso de IO seguidos de procesos con alto uso de CPU. Para simular la entrada de un usuario y el procesamiento de programas o scripts del mismo.
+* __Uso elevado de CPU__ Alto uso de CPU casi sin uso de IO, se simulan tareas con mucho consumo de CPU (que superen el quantum estimado) con pequeñas operaciones de IO.
+* __Uso elevado de I/O:__ Tareas con poco consumo de CPU (comparadas al uso elevado de CPU) pero con un alto uso de I/O.
+* __Interacción de usuario:__ Consiste en varios procesos con uso de I/O seguidos de procesos con alto uso de CPU. Para simular la entrada de un usuario y el procesamiento de programas o scripts del mismo.
 
 
 ### Uso elevado de CPU
+Se utilizó el siguiente lote de tareas para simular uso intensivo de CPU.
+
+| Release time | Cantidad | Tipo        | Ticks | Cant. Bloq. | Tiempo Bloq. |
+|--------------|----------|-------------|-------|-------------|--------------|
+| 0            | 3        | TaskCPU     | 50    | -           | -            |
+| 10           | 3        | TaskConsola | 3     | 3           | 8 - 10       |
+| 15           | 5        | TaskCPU     | 4     | -           | -            |
+| 20           | 1        | TaskCPU     | 10    | -           | -            |
 
 ![Ejercicio 9 - CPU Heavy](informe/imagenes/ejercicio9_gantt_casos_1.png)
 En este caso se puede ver claramente la priorización de tareas con IO (3,4,5) sobre las tareas que consumen todo su quantum y son asignadas a una cola de menor prioridad.
 
+### Uso elevado de I/O
+Para este caso se crearon tareas consitentes casi en su totalidad de llamadas bloqueanes con algún uso esporádico de CPU.
+
+| Release time | Cantidad | Tipo        | Ticks | Cant. Bloq. | Tiempo Bloq. |
+|--------------|----------|-------------|-------|-------------|--------------|
+| 0            | 1        | TaskCPU     | 50    | -           | -            |
+| 0            | 5        | TaskBatch   | 10    | 8           | 2            |
+| 5            | 2        | TaskConsola | 4     | 4           | 5 - 10       |
+| 10           | 2        | TaskCPU     | 10    | -           | -            |
+| 10           | 3        | TaskBatch   | 9     | 4           | 2            |
 
-### Uso elevado de IO
 ![Ejercicio 9 - IO Heavy](informe/imagenes/ejercicio9_gantt_casos_2.png)
 En este caso se puede ver que la priorización de procesos "interactivos" consume completamente el CPU (hasta ~160), donde finalmente pueden ejecutar los procesos que estaban en la segunda cola.
 
@@ -52,10 +69,25 @@ En este caso se puede ver que la priorización de procesos "interactivos" consum
 \newpage
 
 ### Interacción de usuario
+Para este caso se creo una mezcla de tareas bloqueantes de consola, seguidas por tareas de CPU que corren "en background".
+
+| Release time | Cantidad | Tipo        | Ticks | Cant. Bloq. | Tiempo Bloq. |
+|--------------|----------|-------------|-------|-------------|--------------|
+| 0            | 1        | TaskCPU     | 50    | -           | -            |
+| 0            | 3        | TaskBatch   | 6     | 3           | 2            |
+| 5            | 2        | TaskConsola | 5     | 5           | 10 - 15      |
+| 15           | 1        | TaskCPU     | 25    | -           | -            |
+| 30           | 2        | TaskConsola | 4     | 4           | 7 - 10       |
+| 30           | 1        | TaskCPU     | 40    | -           | -            |
+| 40           | 1        | TaskConsola | 4     | 4           | 6 - 10       |
+
 ![Ejercicio 9 - Interacción usuario](informe/imagenes/ejercicio9_gantt_casos_3.png)
 
 En este caso podemos ver un buen lote de tareas para el scheduler; las tareas "interactivas" tienen bajo waiting time mientras que las tareas con uso intensivo de CPU tienen mayor waiting time pero también reciben mas quantum.
 
+### Conclusiones
+A continuación se preparó una tabla comparativa con la latencia, waiting time y turnaround promedio para cada lote de pruebas ejecutado anteriormente.
+
 |              | CPU  | IO  | USER |
 |--------------|------|-----|------|
 |M. Latency    | 4.92 | 9.3 | 4.0  |
@@ -66,7 +98,8 @@ En este caso podemos ver un buen lote de tareas para el scheduler; las tareas "i
 En esta tabla se ve que para un lote de tareas "interactivo" los resultados mejoran, como es de esperarse, por el comportamiento del scheduler.
 Para los otros lotes de tareas:
 * CPU: Si las tareas del lote usan principalmente CPU eventualmente todos los procesos terminan en la cola de menor prioridad y con mas quantum, esencialmente se vuelve un round robin.
-* IO: Si las tareas del lote usan principalmente IO, toda estas tareas quedan en la lista de prioridad más alta, donde se pierde gran parte del tiempo haciendo context/cpu switch.
+* IO: Si las tareas del lote usan principalmente IO, toda estas tareas quedan en la lista de prioridad más alta, donde se pierde gran parte del tiempo haciendo context/cpu switch, nuevamente actuando como un Round Robin sin mucha prioridad en particular.
+
 
 # Definiciones