La poltica ms simple de planificacin es la FCFS. A medida que un proceso pasa al estado listo, este es agregado a la cola de listos. Cuando el proceso que actualmente est ejecutando cesa su ejecucin entonces el proceso ms viejo en la cola es seleccionado para correr. La implementacin de esta poltica es a travs de colas FIFO (First-In, First-Out). Cuando el CPU est libre, ste es asignado al proceso que est en la cabeza de la cola. FCFS es un algoritmo nonpreemptive, pues una vez que el CPU es asignado a un proceso, este lo mantiene hasta que espontneamente lo suelta, ya sea porque el proceso finaliz o por algn requerimiento de E/S. El tiempo de espera bajo esta poltica tiende a ser alto. Adems , tiende a favorecer aquellos procesos que requieren ms tiempo de CPU (CPU-bound). Consideren el caso donde tenemos una coleccin de procesos. Uno de ellos utiliza ms CPU que los otros, y el resto de los procesos requieren ms trabajo de E/S (I/O-bound). Cuando el proceso CPU-bound ejecuta, los otros procesos esperan. Algunos de estos estarn en las colas de los dispositivos de E/S pero eventualmente en algn instante pasarn a la cola de procesos listos. En este momento, muchos de los dispositivos de E/S estarn ociosos. Cuando el proceso en ejecucin deje el estado Running, los procesos I/O-bound pasarn a ejecutar y rpidamente volvern a bloquearse en espera de E/S. Si el proceso CPU-bound se encuentra bloqueado, entonces el procesador estar ocioso. Por lo tanto, FCFS puede ocasionar un uso indeficiente tanto del procesador como de los dispositivos de E/S. Tc+ts tf-tll tc-tll Proceso Tiempo de llegada Tiempo de Servicio Tiempo de Comienzo Tiempo de Finalizacin Turnaround Tiempo de Espera A 0 1 0 1 1 0 B 1 100 1 101 100 0 C 2 1 101 102 100 101-2=99 D 3 100 102 202 199 102-3=99 Promedio 100 49.50
Proceso Tiempo de llegada Tiempo de Servicio Tiempo de Comienzo Tiempo de Finalizacin Turnaround Tiempo de Espera B 0 100 0 100 100 0 D 1 100 100 200 199 100-1=99 A 2 1 200 201 201-2=199 200-2=198 C 3 1 201 202 202-3=199 201-3=198 Promedio 232 123.50
El tiempo promedio de espera bajo una poltica FCFS generalmente no es mnimo y puede variar sustancialmente si hay mucha diferencia entre las duraciones de ciclo de los procesos.
En el segundo ejemplo, se presenta un efecto convoy donde los procesos esperan a que un proceso grande deje el CPU
Shortest-Job-First (SJF) Este algoritmo selecciona al proceso con el prximo tiempo de ejecucin ms corto. Un proceso corto saltar a la cabeza de la cola. La ejecucin de un proceso consiste en ciclos de ejecucin de CPU y ciclos de espera por E/S. El algoritmo selecciona aquel proceso cuyo prximo ciclo de ejecucin de CPU sea menor. El problema est en conocer dichos valores, pero podemos predecirlos usando la informacin de los ciclos anteriores ejecutados.
SJF Proceso Tiempo de llegada Tiempo de Servicio Tiempo de Comienzo Tiempo de Finalizacin Turnaround Tiempo de Espera A 0 8 0 8 8 0 B 1 4 8 12 12-1=11 8-1=7 C 2 9 17 26 26-2=24 17-2=15 D 3 5 12 17 17-3=14 12-3=9 Promedio 14.25 10.33
FCFS Proceso Tiempo de llegada Tiempo de Servicio Tiempo de Comienzo Tiempo de Finalizacin Turnaround Tiempo de Espera A 0 8 0 8 8 0 B 1 4 8 12 12-1=11 8-1=7 C 2 9 12 21 21-2=19 12-2=10 D 3 5 21 26 26-3=23 21-3=18 Promedio 20.33 11.66
El SJF es probablemente optimal pues da el mnimo tiempo promedio de espera. El problema est en conocer la duracin del prximo requerimiento de CPU para cada proceso. Esta duracin puede predecirse suponiendo que el prximo ciclo puede ser similar a los anteriores.
Este algoritmo puede ser preemptive o no. Cuando un nuevo proceso llega a la cola de procesos listos mientras otro se est ejecutando, el nuevo proceso puede tener el ciclo de duracin de CPU ms corto que lo que falta por ejecutar del proceso actual. En el caso de un esquema preemptive, el CPU ser asignado al proceso que acaba de llegar a la cola. Este algoritmo se conoce como Shortest Remaining Time First (SRTF).
Prioridad En muchos sistemas, los procesos tienen prioridades asignadas, y el planificador escoger aquel proceso con mayor prioridad. Cuando un proceso debe ser seleccionado, el planificador por prioridades seleccionar aquel proceso que tenga mayor prioridad. Si hay ms de un proceso entonces se deber seguir alguna poltica de seleccin. Un problema que presenta un esquema de planificacin por prioridades puro es que los procesos con la prioridad ms baja pueden sufrir de inanicin o bloqueo indefinido. Un proceso que est listo para correr pero espera porque siempre hay procesos con prioridad ms alta. Para evitar este problema, se puede ir incrementando gradualmente la prioridad de los procesos (envejecimiento). SJF es un caso especial de planificacin por Prioridad, donde la prioridad es el inverso del valor estimado del prximo ciclo de CPU ( a menor ciclo, mayor prioridad).
Proceso Tiempo de llegada Prioridad Tiempo de Servicio Tiempo de Comienzo Tiempo de Finalizacin Turnaround Tiempo de Espera A 0 2 8 0 8 8 0 B 1 1 4 22 26 26-1=25 22-1=21 C 2 4 9 8 17 17-2=15 8-2= 6 D 3 2 5 17 22 22-3=19 17-3=14 Promedio 16.75 10.25
Este algoritmo puede ser preemptive y nonpreemptive. En el caso de preemptive, cuando un proceso llega a la cola de procesos listos, su prioridad es comparada con la prioridad del proceso que est corriendo. Si la prioridad del nuevo proceso es mayor, entonces se atiende al nuevo proceso.
Round Robin Una manera rpida de reducir la penalizacin que los procesos cortos sufren con FCFS es usar expropiacin basada en un reloj. Una interrupcin de reloj es generada a intervalos peridicos. Cuando ocurre la interrupcin, el proceso en ejecucin es colocado en la cola de procesos listos y el prximo trabajo es seleccionado basado en el esquema FCFS. A cada proceso se le da un trozo de tiempo. La principal decisin de diseo que surge con Round Robin es el tamao del trozo o quantum. Si el quantum es muy corto, entonces los procesos se movern a travs del sistema rpidamente. Por otro lado, hay un cierto overhead o desperdicio de tiempo envuelto con el manejo de la interrupcin de reloj y las funciones de planificacin y despacho. Por lo tanto quanta muy pequeos deberan evitarse. Una alternativa es usar un quantum de tiempo que sea un poco ms grande que el tiempo promedio requerido para una interaccin tpica. Round Robin es particularmente efectivo para sistemas generales de tiempo compartido. Se implementa con una cola FIFO de procesos. Nuevos procesos son agregados al final de la cola, y toma el proceso que se encuentra en la cabeza de la cola. Actualiza el timer para que interrumpa despus del quantum de tiempo. El desempeo de este algoritmo depender del tamao del quantum. Si el quantum es infinito entonces degenera en FCFS. Si el quantum es muy pequeo entonces Round Robin es llamado comparticin de CPU y en teora pareciera que cada proce so tiene su propio procesador corriendo a 1/n la velocidad del procesador real. Bajo este esquema es importante considerar el efecto del cambio de contexto.
Round Robin (RR q=3) Proceso Tiempo de llegada Tiempo de Servicio Tiempo de Comienzo Tiempo de Finalizacin Turnaround Tiempo de Espera A 0 8 0, 12, 21 3, 15, 23 23 15 B 1 4 3, 15 6, 16 16-1=15 11 C 2 9 6, 16, 23 9, 19, 26 26-2=24 15 D 3 5 9, 19 12,21 21-3=18 11 Promedio 20 13