|
|
@@ -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 | - | - |
|
|
|
|
|
|

|
|
|
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
|
|
|

|
|
|
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 |
|
|
|
+
|
|
|

|
|
|
|
|
|
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
|
|
|
|