next up previous contents
Next: Amoeba Up: Sistemas basados en kernel Previous: Chorus

Spring

 

Otro sistema distribuido basado en tex2html_wrap_inline8127kernel es Spring [84]. Este sistema introduce nuevas técnicas basadas en el modelo de Orientación a Objetos (OO) de tal modo que los servicios del SO están compuestos por un conjunto de objetos que cooperan para implementarlos y es factible modificar los mecanismos empleados en la interacción entre dichos objetos [75]. Anteriormente, Choices [27] ya empleó la OO como base para alcanzar un SO flexible y reconfigurable.

Spring introduce innovaciones como el modelo de subcontrato [84] que permiten adaptar en cierta medida la intercomunicación entre los distintos objetos que constituyen el sistema (por ejemplo, hacer caching o replicación de forma transparente). A grandes rasgos, el modelo de subcontrato consiste en delegar la invocación de métodos remotos a un objeto que implementa el ``subcontrato'' que tiene el cliente con el servidor. Modificando éste se puede alterar la interconexión entre el cliente y el servidor.

En cuanto a los servicios suministrados por el sistema, Spring incorpora Shuttles, Threads, Espacios de Direcciones y Doors como abstracciones fundamentales del sistema, imponiéndose abstracciones pesadas a las aplicaciones. Discutimos éstas abstracciones a continuación.

El sistema de memoria virtual de Spring [96], que implementa los espacios de direcciones, ejecuta ``fuera'' del tex2html_wrap_inline8127kernel. No obstante, ejecuta con todos los privilegios del núcleo y además impone su abstracción de Espacio de Direcciones a las aplicaciones. A efectos de adaptabilidad en el sistema, la gestión de memoria puede considerarse dentro del núcleo salvo por la existencia de paginadores externos como ocurría en Mach.

El sistema de gestión de procesos, que emplea Shuttles (similares a los de Off, salvo por el hecho de que no poseen propiedades y no es posible extenderlos), oculta éstos a las aplicaciones. Éstas perciben Threads como abstracción básica, y estos threads están multiplexados por el núcleo sobre los shuttles existentes [84]. No es preciso decir pues que tampoco es posible reemplazar o adaptar el comportamiento y/o la implementación de estas abstracciones en Spring.

Finalmente, el mecanismo básico de IPC en Spring (las doors) es una adaptación del modelo de gates de MULTICS. Un Shuttle puede emplear una door para efectuar una transferencia protegida de control cambiando (posiblemente) su domino de protección. Esta abstracción está contenida en el núcleo, y se emplean descriptoresgif (también contenidos y gestionados por el núcleo) para exportarla a las aplicaciones. La implicación obvia es que el núcleo debe intervenir en todos aquellos casos en que una aplicación obtiene (o pierde) derecho a invocar una door. Como consecuencia, la implementación de la transferencia de datos entre un cliente y un servidor está predeterminada en gran medida por el núcleo (dado que éste debe intervenir y cuidar las transferencias que involucran transferencias de derechos de invocación de doors. La ventaja de emplear descriptores y hacer que la transferencia de éstos la realice el núcleo es que resulta muy simple emplear mecanismos de cuenta de referencias para liberar recursos que ya no se utilizan.

En pocas palabras, como hemos visto en los párrafos anteriores, Spring es un sistema distribuido que no puede considerarse como un sistema adaptable en realidad, aunque sea elegante y extremadamente flexible.


next up previous contents
Next: Amoeba Up: Sistemas basados en kernel Previous: Chorus

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