next up previous contents
Next: Quanta vs Interrupciones Up: Gestión de Procesos en Previous: Implementación del Shuttle

Planificación

 

Los servicios de planificación incorporados en Off permiten la realización en área de usuario de diversos algoritmos de planificación (al igual que ocurre en otros sistemas como Aegis [60] y Fluke [71]). A diferencia de lo que ocurre en estos otros sistemas, es posible tratar la red entera como si de un multiprocesador se tratase.

Esquemas novedosos como los utilizados en Scout [85] donde la comunicación dicta la planificación (cómo en sistemas multimedia que requieren de transmisión de vídeo y audio y, por tanto, deben satisfacer ciertas restricciones temporales) son posibles ahora sin necesidad de ser aplicados a la totalidad de las aplicaciones. Téngase en cuenta que los procesadores en Off se limitan a repartir quanta entre las aplicaciones, con lo que es factible que distintas aplicaciones empleen ``planificadores'' distintos mediante el empleo de un sistema de planificación jerárquica (el tex2html_wrap_inline8127kernel reparte quanta, que asigna un planificador de primer nivel entre diversos planificadores de segundo nivel, éstos a su vez reparten los quanta que tienen asignados, etc.) Esto abre nuevos caminos y la posibilidad de experimentar con técnicas de planificación destinadas a la consecución de SSOO distribuidos con soporte para multimedia [119].

En Off, cada procesador tiene asociado un vector de identificadores de shuttle. Dicho vector puede ser (re)instalado en cualquier momento y representa los quanta de procesador del procesador en que está ubicado. Cada uno de los elementos del vector (quantum) es susceptible de asignación ante peticiones procedentes de las aplicaciones. El esquema completo puede verse en la figura 3.15.

  figure4147
Figure: Vectores de ejecución en los procesadores de Off.

En el ejemplo que aparece en la figura 3.15 hay tres procesadores P1, P2, P3 y siete shuttles (1...7). Cada procesador ejecutará cíclicamente los elementos no vacíos del vector asociado runq. Los elementos vacíos pueden asignarse en demanda y, naturalmente, una vez lleno el vector futuras peticiones de asignación darán lugar a un evento de revocación disparado por el sistema (tal y como se dijo en el capítulo anterior).

Como puede apreciarse, no hay inconveniente en situar un mismo shuttle (en la figura 3.15, el shuttle 3) en el vector de ejecución de varios procesadores. Ahora bien, dado que un shuttle representa el estado de un procesador (aunque virtualizado con extensiones), no es razonable que ejecute simultáneamente en más de un procesador. Para evitarlo, cada shuttle tiene un flag que se activa cuando un procesador lo carga para ejecución y se desactiva cuando el shuttle abandona dicho procesador. Los shuttles que poseen dicho flag activado se ignoran a la hora de su consideración para ejecución. De este modo es factible incluir dicho shuttle en más de un procesador y si, por error, se requiriese su ejecución simultánea en distintos procesadores, ésta puede evitarse.

Este modelo de planificación --el reparto de intervalos de tiempo de procesador-- es un modelo simple que permite la implementación en área de usuario del esquema de planificación escogido. Como prueba basta considerar que el exokernel Aegis (que tiene una planificación semejante, para un sistema centralizado) soporta los esquemas de planificación empleados tradicionalmente (y otros experimentales). Dado que el modelo de planificación que hemos presentado es similar al de Aegis salvo por la distribución del sistema, cabe pensar que también soporta dichos esquemas de planificación.

Otra característica del modelo de planificación es que se incentiva la preplanificación. Ésto es, la instalación en la cola de ejecución (por parte del planificador que ejecuta sobre el tex2html_wrap_inline8127kernel) de más de un shuttle. Si no sucede ningún suceso imprevisto por el planificador es factible efectuar varios cambios de contexto (agotar varias ranuras de procesador) sin que sea preciso emplear llamadas entre el tex2html_wrap_inline8127kernel y el usuario. De no emplear preplanificación la sobrecarga introducida por las llamadas entre tex2html_wrap_inline8127kernel y planificador sería intolerable en cuyo caso sería necesaria la inclusión del planificador dentro del tex2html_wrap_inline8127kernel.

A modo de ejemplo, indicamos cómo pueden implementarse algunos esquemas de planificación bien conocidos:


next up previous contents
Next: Quanta vs Interrupciones Up: Gestión de Procesos en Previous: Implementación del Shuttle

Francisco J. Ballesteros
Fri Dec 19 17:18:03 MET 1997