Algoritmo de Planificación Por Colas de Retroalimentación De Múltiples Niveles.

 

  ¿Para qué sirve esta Simulación?

¿Hasta dónde puedo llegar?

¿Qué nos muestra la Simulación?

¿Cómo la hago funcionar?

  El Banco de Pruebas.

Comenzar a trabajar.

 

 

 


¿Para qué sirve esta Simulación?

 

La siguiente herramienta presenta una simulación creada con el objetivo de hacer entender al usuario el algoritmo de planificación por Colas de Retroalimentación de Múltiples Niveles.

Pretendemos que el usuario de esta herramienta, comprenda la base de funcionamiento del algoritmo anterior. Aconsejamos el uso de esta herramienta conjuntamente con la explicación teórica del Algoritmo de planificación de procesos por Colas de Retroalimentación de Múltiples Niveles .

 


¿Hasta dónde puedo llegar?

En la simulación del algoritmo, aparecerán una serie de procesos hasta llegar a un número de cuatro.
Los procesos pueden aparecer en la simulación siempre cuando el tiempo este pasando por esta, es decir, cuando un proceso esta consumiendo CPU y cuando el sistema operativo esta detenido (consecuencia de que todos los procesos existentes estén Dormidos.
Todos los procesos creados competirán por el procesador según el algoritmo Planificación Por Colas de Retroalimentación de Múltiples Niveles.

La simulación implementa el algoritmo con cuatro colas de prioridad ascendente, es decir, la primera tiene más prioridad que la segunda y esta que la tercera, ...
En la cola de primer nivel (nivel 1) los procesos podrán consumir hasta un Quantum, en la de segundo nivel consumirán dos, en la de tercer nivel 4 y en la de cuarto nivel funcionaran según el algoritmo FIFO.

Los procesos al crearse, siempre aparecerán en la cola con máximo nivel de prioridad, (la cola de nivel 1) e irán disminuyendo su el comportamiento que presenten.
Los procesos cortos o interactivos permanecerán en los niveles inferiores mientras que los procesos que requieran mucho tiempo permanecerán en las colas de menor prioridad.

Los procesos que se encuentren en un mismo nivel (salvo los del ultimo) competirán por el procesador con un algoritmo ROUND ROBIN. Los procesos del ultimo nivel (menor prioridad) competirán según el algoritmo FIFO.

Los Procesos, para concluir su ejecución, tendrán que consumir un número de unidades de tiempo con el que parten desde el momento en el que se crean.

Irán pasando desde una de las colas de procesos listos hasta la figura que representa el núcleo del sistema operativo y una vez allí podrán consumir todas las unidades de tiempo de posibles según la cola (1 Quantum, 2 Quantums, 4 Quantum o el tiempo que necesiten para su ejecución) o bien dormirse como consecuencia de una operación de entrada/salida o un bloqueo,

Los procesos que consuman todas las unidades de tiempo posibles de la cola en la que se encuentran, si no acaban su ejecución, entrarán en la cola de nivel superior. Este cambio de cola supone un decremento de su prioridad.

Los procesos que se duermen lo harán durante una serie de unidades de tiempo, dato que mostraran mientras dure este estado. Una vez que pasen por la simulación las unidades de tiempo por las que se durmieron, se despertarán y pasaran de nuevo a formar parte de una de las colas, concretamente la de nivel inferior a la que se encontraban cuando entraron en el procesador (si era la de nivel 1, se despertaran en la misma).

Los procesos irán pasando por los distintos estados de su ciclo de vida reflejando en cada estado unas características externas que los identificaran. En la ilustración 1 podemos apreciar una instantánea del aspecto de la simulación en el que se pueden apreciar procesos en los cuatro estados posibles.

 


¿Qué nos muestra la Simulación?

El aspecto de la herramienta lo podemos observar en la ilustración 1, en ella se distinguen tres tipos de figuras principales en las que se van a ir situando los procesos:

 

Los procesos, dependiendo del estado en que se encuentren, se situaran en una de estas seis estructuras. Una casilla de una de las seis estructuras estará ocupada por un proceso cuando no aparezca en su color original.
Según el estado, necesitaremos saber del proceso una determinada información.
Como se ve en la Ilustración1, cada proceso se pone de un color distinto y muestra unos datos representativos del estado actual.

Ilustración 1 Distintos estados de los procesos

 

.- El proceso 2 se encuentra en el estado TERMINADO.
Los procesos terminados tienen color "arena". Aparece indicando su numero de proceso y su estado. Ya no nos hace falta tener otra información sobre el.

 .- El proceso 1 se encuentra en el estado DORMIDO.
Los procesos dormidos tienen color "cyan". Aparece indicando su numero de proceso, las unidades de tiempo que le restan para terminar (76 unidades de tiempo), las unidades de tiempo que le restan para volver a la cola de procesos listos (0 unidades de tiempo, en este caso, se va a despertar ya) y su estado.

 .- El proceso 0 se encuentra en el estado EN EJECUCION. Los procesos en ejecución tienen color "azul oscuro". Aparece indicando su número de proceso, las unidades de tiempo que le restan para terminar (42 unidades de tiempo en este caso) y su estado.

.- El proceso 3 se encuentra en el estado LISTO. Esta en la cola de nivel 3, en esta cola como máximo podrá ejecutarse durante tres Quantum.
Los procesos listos tienen color "verde". Aparece indicando su numero de proceso, las unidades de tiempo que le restan para terminar (76 unidades de tiempo en este caso) y su estado.

 

 


¿Cómo la hago funcionar? 

La segunda parte de la interfaz gráfica, es la destinada a la interacción con el usuario, la que se encargara de obtener los parámetros según los cuales se ejecutara la simulación. Esta zona se sitúa en la parte inferior de la pantalla mostrada de forma global en la Ilustración 1

 El botón Reiniciar, en el estado inicial de la herramienta se llama Empezar, sirve para arrancar la simulación con los datos que tengan los demás paramentos. Cuando se pulsa, su leyenda cambia, pasará de Empezar a Reiniciar.
Esto permitirá que cuando la simulación comenzada haya terminado (todos los procesos consuman su tiempo), podamos volver a ejecutarla, modificando, si así lo deseamos el resto de parámetros.

El siguiente parámetro que podemos pasar a la simulación es el de "Prob. I/O:". Indica la probabilidad de que el proceso realice una operación de entrada salida, lo que provocaría que el proceso se durmiese. Esta representado en tanto por cien.
Por defecto tiene un 25%. Puede tomar valores desde 1 a 98. Y esto porque va en combinación del siguiente dato. La probabilidad total de que un proceso se duerma, es la suma de la probabilidad de que realice una operación de Entrada Salida y la de que surja un Bloqueo, con lo que un valor que haga que las dos sumen mas de 99 hará que este se modifique a otro más próximo.
Mediante él, podemos hacer que los procesos sean más o menos interactivos.

El siguiente parámetro es el de "Prob. Bloqueo". Este indica la probabilidad de que el proceso que se está ejecutando tenga una operación por la cual se bloquee.
El rango de valores que soporta es de 1 a 98, dependiendo del valor que tenga la entrada "Prob. I/O". Debido a lo explicado anteriormente.

Después viene el parámetro "Quantum", Este parámetro indica el tamaño del quantum en unidades de tiempo.
Puede tomar valores de 1 a 99. La introducción de un valor incorrecto provocara que este dato tome un valor por defecto.

En la segunda fila de controles nos encontramos con "T. CPU". Este dato indica las necesidades máximas que van a tener los procesos de unidades de tiempo. Al crearse los procesos, estos tendrán unas necesidades de CPU que irán de 1 a la cantidad introducida en este apartado.
Mediante él, podemos hacer que los procesos sean más o menos largos. La introducción de un valor incorrecto provocará que este dato tome un valor por defecto.

El parámetro "T. Max. Dormido", indica el máximo número unidades de tiempo que un proceso va a permanecer dormido. Cuando un proceso realice una operación de Entrada o Salida, o se bloquee, permanecerá dormido un número de ciclos que estará entre 1 y la cantidad aquí introducida.
Puede tomar valores de 1 a 999. La introducción de un valor incorrecto provocara que este dato tome un valor por defecto.

El último dato que se le puede pasar a la simulación es el de "P Llegada PCS". Indica la probabilidad de llegada, en tanto por ciento, de nuevos procesos al algoritmo. La introducción de un valor incorrecto provocara que este dato tome un valor por defecto.

 


El Banco de Pruebas

 

En esta simulación, debido a la amplia gama de controles de que dispone, vamos a poder experimentar con bastantes combinaciones.

Quizá, el parámetro más versátil del que dispone esta simulación, sea el poder controlar el tamaño del quantum. Mediante él, y en combinación con las probabilidades de operaciones de Entrada/Salida y de Bloqueo podemos hacer que los procesos retrasen se más unos a otros, estén mucho tiempo en la CPU, ..

Si ponemos un tamaño de Quantum bajo, y una probabilidad de que los procesos se duerman (Prob. Bloqueo más Prob I/O) baja, los procesos irán pasando en turno rotatorio por el procesador lentamente. Con estas precondiciones, los procesos irán disminuyendo su prioridad e irán pasando a formar parte de las colas de nivel superior.

Si por el contrario ponemos un quantum alto, los procesos no llegarán muy arriba en las colas de procesos listos.

Que los procesos lleguen más arriba o no, también depende directamente del tiempo máximo de CPU. Para tiempos de CPU altos, los procesos podrán llegar más arriba. Si el tiempo de CPU es bajo, será más fácil que concluya su tiempo asignado sin haber llegado muy arriba. Todo esto también esta en relación directa con el tamaño del quantum que se haya establecido para la ejecución.

Podemos realizar diversas pruebas con el tiempo que los procesos van a permanecer dormidos. Si este lo hacemos muy alto, cuando un proceso se duerma, se estará en la cola de dormidos mucho rato. Así, si la probabilidad de que se duerma es baja (esta probabilidad se obtiene como suma de probabilidades de bloqueo y de entrada/salida) el proceso que se duerma asistirá a la ejecución continua de los demás procesos sin llegar él a tomar parte del procesador. El proceso que se duerma, tendrá un gran retraso en la consecución de su objetivo.

Si por el contrario, el tiempo que los procesos permanecen dormidos lo hacemos bajo, estos abandonarán rápidamente el estado dormido y no sufrirán muchos retrasos en la consecución de su objetivo.

 

Manejando las probabilidades de Entrada/Salida y las de Bloqueo, vamos a controlar la interactividad de los procesos. Si hacemos que la probabilidad total de bloqueo (suma de las dos anteriores) sea alta, los procesos serán muy interactivos, realizarán muchas operaciones que les lleven a un bloqueo, con los que estarán casi cada vez que lleguen al procesador durmiéndose y no acabarán su quantum.

Si por el contrario, esta probabilidad es baja, los procesos irán consumiendo todo su quantum con lo que no tardarán mucho tiempo en concluir su trabajo. Los procesos irán subiendo por las colas, lo que les disminuirá su propiedad, pero en el momento en el que reciban el procesador se apoderaran de él durante bastante tiempo.

 

Manejando el tiempo de CPU, vamos a poder hacer que los procesos sean cortos, y por lo tanto, su vida en la simulación sea también corta. O bien, si hacemos que este tiempo sea alto (700 - 900), los procesos permanecerán mucho tiempo en la simulación, entonces, con que se duerman en alguna ocasión, estarán bastante tiempo haciendo recorridos por la simulación.

 

Con respecto al parámetro de probabilidad de llegada, vamos a poder controlar la velocidad de aparición de los procesos en la simulación. El dar valores muy altos, hace que los cuatro procesos se creen casi a la vez. Si el valor es por el contrario, muy pequeño, los procesos pueden tardar un rato en aparecer, con lo que la simulación estaría funcionando bastante rato solo con uno o dos procesos, ...

 


Comenzar a trabajar.

Desde aquí ya sí puedes empezar a trabajar con la herramienta.