next up previous contents
Next: Planificación Up: Implementación en el Intel Previous: Implementación de las Propiedades

Implementación del Shuttle

En la implementación actual cada shuttle está definido por una estructura de tipo shuttle_t. Estas estructuras están almacenadas en Slabs dentro del sistema, aunque su información es legible desde área de usuario disponiendo de los correspondientes derechos de acceso.

En la figura 3.13 vemos como shuttle_t contiene el identificador del shuttle, id, y el estado del procesador. Este último está compuesto principalmente por el TSS utilizado para dicho shuttle (tss), que contiene el estado del procesador; su descriptor (descnb) o índice en una tabla de TSSs, empleada por el hardware en la conmutación de tareas; y el estado del coprocesador matemático (x87).

  figure1551
Figure: Implementación del Shuttle de Off

El tratamiento de excepciones, realizado en el contexto de la tarea interrumpida y la existencia de up-calls, hacen necesarios otros campos que permitan obtener de forma rápida el contenido de los registros de usuario, uregs y de los registros del kernel, kregs. También es necesario almacenar la posición de comienzo de la pila utilizada para el kernel, ksp por motivos de liberación de memoria. Describiremos el tratamiento de excepciones de forma detallada en el apartado 3.4.3, por lo que no diremos nada más al respecto por el momento.

El vector de propiedades utilizado por el shuttle está identificado por el campo pmask.

Por último, qticks y quanta son meros estadísticos disponibles para los servicios de gestión de procesos implementados en área de usuario; hablaremos de ellos en el apartado 3.3.5, dedicada a la planificación del procesador.

De todo lo dicho se concluye que un shuttle contiene dos elementos principalmente:

El resto de la información se debe más a detalles de la implementación efectuada que a necesidades derivadas del diseño del sistema.

El estado del procesador viene representado por una propiedad predefinida por el sistema (PPROCCTX, o contexto del procesador). La función de conmutación de dicha propiedad (x86shtl_sw) la suministra el propio servidor de shuttles y es la encargada de efectuar el cambio de contexto del procesador.

Para cambiar de contexto (ver figura 3.14) se recorre el vector de propiedades, (ignorando las predefinidas por el gestor de Shuttles) y se invoca a la función de conmutación (situada en propCB[prop]) cuando una propiedad cambie de valor. Después de esto, siempre se realiza la parte del cambio de contexto correspondiente a las propiedades predefinidas. En particular, se invoca a x86shtl_sw, que es la función de conmutación que realiza el cambio de contexto de procesador.

  figure1578
Figure 3.14: Algoritmo de cambio de contexto entre Shuttles


next up previous contents
Next: Planificación Up: Implementación en el Intel Previous: Implementación de las Propiedades

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