Qué proceso debe ir primero
Un algoritmo de planificación es la regla con la que el sistema operativo elige qué proceso usa el procesador. Distintas reglas dan tiempos de espera muy distintos con los mismos procesos.
Saber compararlas con números te permite decir cuál conviene a un servidor y cuál a un portátil.
Imagina cuatro tareas de duración 6, 8, 7 y 3 llegando a la vez. El orden que elijas cambia cuánto espera cada una.
Al final de esta lección
Nota
Puedo comparar el orden y el tiempo de espera de FCFS, SJF y round robin.
Palabras clave
| Palabra | Qué significa |
|---|---|
| FCFS | primero en llegar, primero en ser atendido |
| SJF | primero el trabajo más corto |
| Tiempo de espera | el tiempo que un proceso pasa listo sin el procesador |
| Tiempo de retorno | desde que llega hasta que termina |
| Tiempo de respuesta | desde que llega hasta que empieza a ejecutarse |
| Efecto convoy | los procesos cortos esperan detrás de uno largo |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
FCFS atiende por orden de llegada
En FCFS (first come, first served) el primer proceso que llega es el primero que se ejecuta, y trabaja hasta terminar. Es como la cola de una panadería.
El tiempo de espera de un proceso es lo que aguarda antes de empezar. El de retorno es esa espera más su propio trabajo. Aquí todos llegan en el instante 0, así que la espera es la suma de lo que duran los de delante.
Ejemplo: FCFS con 6, 8, 7 y 3
| Proceso | Duración | Empieza | Termina | Espera | Retorno |
|---|---|---|---|---|---|
| A | 6 | 0 | 6 | 0 | 6 |
| B | 8 | 6 | 14 | 6 | 14 |
| C | 7 | 14 | 21 | 14 | 21 |
| D | 3 | 21 | 24 | 21 | 24 |
| Media | 10,25 | 16,25 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La espera media de FCFS
python3 -c "print(sum([0, 6, 14, 21]) / 4)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
D espera mucho siendo la más corta
La Run suma las cuatro esperas y las divide entre cuatro. Imprime 10.25: es la media de la tabla, con punto decimal porque así lo escribe Python.
D solo dura 3 y espera 21. Ese es el efecto convoy: un trabajo largo delante retrasa a todos los cortos.
SJF pone primero el trabajo más corto
En SJF (shortest job first) se ejecuta antes el proceso que menos dura. Con las mismas tareas el orden pasa a ser D (3), A (6), C (7) y B (8).
Las esperas son 0, 3, 9 y 16. La media baja de 10,25 a 7. SJF da la menor espera media posible. Su problema es que hay que conocer de antemano cuánto va a durar cada proceso.
La espera media de SJF
python3 -c "print((0 + 3 + 9 + 16) / 4)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Round robin reparte la espera entre todos
Con round robin y quantum 4, las cuatro tareas avanzan por turnos. D termina en el instante 15 y no espera a que acaben las demás.
La espera de cada una es su retorno menos su duración: 11, 13, 17 y 12. La media es 13,25, peor que en FCFS. A cambio, todas empiezan pronto: el tiempo de respuesta medio es 6, y en FCFS era 10,25.
Las tres reglas con las mismas tareas
| Regla | Espera media | Respuesta media | Cuándo conviene |
|---|---|---|---|
| FCFS | 10,25 | 10,25 | Trabajos parecidos y sin prisa |
| SJF | 7 | 7 | Duraciones conocidas, trabajos por lotes |
| Round robin, quantum 4 | 13,25 | 6 | Equipos con personas delante |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
La espera media de round robin
python3 -c "print((11 + 13 + 17 + 12) / 4)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Un error frecuente
Advertencia
Mucha gente cree que la regla con menor espera media es la mejor para todo. SJF gana en la media, pero puede dejar sin turno a los procesos largos. En un portátil importa más que todo responda pronto, y por eso se usa algo parecido a round robin.