1. Objetivo del proyecto
El objetivo es construir un banco de pruebas (benchmark) que ejecute todos los algoritmos estudiados sobre la misma carga de trabajo y compare los resultados. Esto permite responder preguntas como:
- ¿Qué algoritmo tiene el mejor tiempo de espera promedio para esta carga?
- ¿Qué algoritmo tiene el mejor tiempo de respuesta?
- ¿Cómo afecta el quantum a Round Robin?
- ¿Cuándo es mejor usar prioridades?
El banco de pruebas es una herramienta de aprendizaje: permite experimentar con los algoritmos y ver sus diferencias en acción.
2. Arquitectura del banco de pruebas
El banco de pruebas tiene estas partes:
- Generador de cargas: produce cargas de trabajo reproducibles (igual que en los simuladores anteriores).
- Algoritmos: FCFS, SJF, SRTF, prioridades, Round Robin, MLFQ. Cada uno es una función con la misma firma.
- Métricas: tiempo de respuesta, espera y retorno promedio para cada algoritmo.
- Vista: tabla comparativa y Gantt para cada algoritmo.
- Controlador: genera la carga, ejecuta todos los algoritmos, muestra los resultados.
3. Los algoritmos a comparar
El banco de pruebas compara estos algoritmos:
| Algoritmo | Descripción | Parámetros |
|---|---|---|
| FCFS | Primero en llegar, primero en ser atendido. | Ninguno. |
| SJF | El trabajo más corto primero (no apropiativo). | Ninguno. |
| SRTF | SJF con apropiación. | Ninguno. |
| Prioridades | Por prioridad (no apropiativo). | Prioridades. |
| Round Robin | Turnos de igual duración. | Quantum. |
| MLFQ | Colas multinivel con retroalimentación. | Quantums, refuerzo. |
4. Las métricas a comparar
Para cada algoritmo, se calculan:
- Tiempo de respuesta promedio.
- Tiempo de espera promedio.
- Tiempo de retorno promedio.
- Número de cambios de contexto.
La tabla comparativa muestra estas métricas para todos los algoritmos, ordenados de mejor a peor.
5. Implementación
La implementación reutiliza las funciones de los temas anteriores. El controlador ejecuta todos los algoritmos sobre la misma carga:
function benchmark(carga) {
var resultados = {};
resultados.fcfs = fcfs(carga);
resultados.sjf = sjf(carga);
resultados.srtf = srtf(carga);
resultados.prioridades = prioridades(carga);
resultados.rr = roundRobin(carga, quantum);
resultados.mlfq = mlfq(carga);
return resultados;
}
function comparar(resultados) {
var tabla = [];
for (var alg in resultados) {
var p = promedios(resultados[alg]);
tabla.push({ algoritmo: alg, respuesta: p.respuesta,
espera: p.espera, retorno: p.retorno });
}
tabla.sort(function (a, b) { return a.espera - b.espera; });
return tabla;
}
6. Interpretación de resultados
Los resultados típicos para una carga con procesos de duraciones variadas son:
- SJF/SRTF: mejor tiempo de espera y retorno promedio.
- Round Robin: mejor tiempo de respuesta.
- FCFS: peor tiempo de espera y respuesta, pero más simple.
- Prioridades: depende de la asignación.
- MLFQ: buen compromiso entre respuesta y espera.
La interpretación depende de qué métrica es más importante para el caso de uso.
7. Simulador interactivo
Este simulador ejecuta todos los algoritmos sobre la misma carga y muestra la tabla comparativa:
Simulador · banco de pruebas
| Algoritmo | Respuesta prom. | Espera prom. | Retorno prom. |
|---|
8. Resumen
- El banco de pruebas ejecuta todos los algoritmos sobre la misma carga.
- Compara tiempo de respuesta, espera y retorno promedio.
- SJF/SRTF minimizan la espera; Round Robin minimiza la respuesta.
- FCFS es el más simple pero el peor en métricas.
- MLFQ ofrece un buen compromiso.
- La elección depende de qué métrica es más importante.
9. Preguntas de repaso
Intenta responder cada una antes de abrir la respuesta.
1. ¿Qué es un banco de pruebas?
Un simulador que ejecuta varios algoritmos sobre la misma carga y compara los resultados.
2. ¿Por qué la carga debe ser la misma?
Para que la comparación sea válida: la diferencia se debe solo al algoritmo.
3. ¿Qué algoritmo minimiza el tiempo de espera?
SJF (o SRTF con llegadas distintas).
4. ¿Qué algoritmo minimiza el tiempo de respuesta?
Round Robin.
5. ¿Qué algoritmo es el más simple?
FCFS.
6. ¿Qué algoritmo ofrece el mejor compromiso?
MLFQ.
7. ¿Qué métricas se comparan?
Tiempo de respuesta, espera y retorno promedio.
8. ¿Por qué es útil un banco de pruebas?
Para experimentar con los algoritmos y ver sus diferencias en acción.
9. ¿Qué parámetro afecta a Round Robin en el banco?
El quantum.
10. ¿Qué bloque del curso cierra este proyecto?
El bloque 11 (integración y cierre).
Para practicar
- Implementa el banco de pruebas completo con todos los algoritmos.
- Añade un gráfico de barras comparativo.
- Experimenta con diferentes cargas de trabajo y observa qué algoritmo es mejor en cada caso.
- Añade el costo del cambio de contexto a Round Robin y MLFQ.
- Implementa la exportación a CSV de la tabla comparativa.
- Compara los resultados con las predicciones teóricas.