Вы находитесь на странице: 1из 28

Pattern Oriented Software Architecture

Microkernel

Jamir Antonio Avila Mojica Csar Julio Bustacara Median


Patrones de Software

Agenda
Introduccin Microkernel
Ejemplo Contexto Problema Solucin Estructura Dinmica Implementacin Variantes Usos conocidos Consecuencias

Microkernel
El patrn de arquitectura Microkernel se aplica a sistemas de software que deben estar habilitados para adaptarse a requerimientos cambiantes del sistema. Separa un ncleo de funcionalidad mnima de la funcionalidad extendida y de partes especficas al cliente. Tambin sirve como un socket para conectores en estas extensiones y coordinar su colaboracin.

Ejemplo
Suponga que se desea desarrollar un nuevo sistema operativo para computadores de escritorio llamado Hydra. El equipo de desarrollo ha elaborado una lista de metas de diseo para lograrlo. Un requerimiento es que este sistema operativo innovador sea fcilmente portable a las plataformas de hardware relevantes, y debe estar habilitado para acomodar futuros desarrollos fcilmente. Debe poder ejecutar aplicaciones escritas para otros sistemas operativos populares como Windows, UNIX System V, Mac OS/X. El usuario debe poder seleccionar que sistema operativo quiere desde un men desplegable antes de iniciar una aplicacin. Hydra presentar todas las aplicaciones corriendo en su ventana principal:

Ejemplo

Problema
Desarrollar software para una aplicacin de un dominio que necesita hacer frente a un amplio espectro de tecnologas y estndares similares no es una tarea trivial. Son ejemplos bien conocidos los sistemas operativos y las interfaces grficas de usuario. Tales sistemas tiene una larga vida, diez aos o ms. Durante este periodo nuevas tecnologas emergen y las viejas cambian. Las siguientes fuerzas necesitan considerarse:
La plataforma de aplicacin debe enfrentar la evolucin del hardware y software. La plataforma de aplicacin debe ser portable, extensible y adaptable para facilitar la integracin de tecnologas emergentes.

Solucin
Encapsule los servicios fundamentales de sus plataforma de aplicacin en un componente microkernel. El microkernel incluye la funcionalidad que permite a otros componentes que corren en procesos separados comunicarse con cada otro. Es tambin responsable de mantener los recursos del sistema como archivos o procesos. Adicionalmente, proporciona interfaces que permite a otros componentes acceder a su funcionalidad. La funcionalidad central que no pueda ser implementada en el microkernel sin incrementar innecesariamente su tamao o . complejidad debe ser separada en servidores internos Servidores externos implementan su propia vista del microkernel subyacente. Para construir la vista usan los mecanismos disponibles a travs de las interfaces del microkernel.

Solucin
Cada servidor externo es un proceso separado que representa una plataforma de aplicacin. Un sistema microkernel puede ser visto como una plataforma que integra otras plataformas de aplicacin. Los clientes se comunican con los servidores externos usando las facilidades de comunicacin proporcionadas por el microkernel.

Estructura
El patrn Microkernel define cinco tipos de componentes: Servidores internos. Servidores externos. Clientes Adaptadores Microkernel.

Estructura
Servidores internos Tambin conocidos como subsistemas, extienden la funcionalidad proporcionada por el microkernel. Representa un componente separado que ofrece funcionalidad adicional. El microkernel invoca la funcionalidad de los servidores internos va solicitudes de servicio. Entonces, los servidores internos pueden encapsular algunas dependencias del hardware o software subyacente. Por ejemplo, controladores de dispositivos que soporten tarjetas grficas especficas son buenos candidatos para servidores internos. Se pueden considerar como extensiones del microkernel.

Estructura
Servidores externos Tambin conocidos como personalidades, son componentes que usan el microkernel para implementar su propia vista del dominio de aplicacin subyacente. Los servidores externos exponen su funcionalidad exportando interfaces en la misma manera que el kernel lo hace. Cada uno de estos servidores externos corre en un proceso separado. Recibe las solicitudes de las aplicaciones clientes usando los mecanismos proporcionados por el microkernel, interpreta las solicitudes, ejecuta el servicios apropiado y regresa los resultados a sus clientes. La implementacin de los servicios confa en los mecanismos del microkernel luego acceden a sus interfaces de programacin.

Estructura
Clientes Un clientes es una aplicacin que est asociada con exactamente un servidor externo. Solamente accede a la interfaz de programacin proporcionada por el servidor externo. Se presenta un problema si el cliente necesita acceder a las interfaces del servidor externo directamente. Cada cliente tiene que usar las facilidades de comunicacin disponibles para interoperar con los servidores externos. Cada comunicacin con un servidor externo debe ser codificada en el cdigo cliente lo que trae varias desventajas: El sistema no soporta modificabilidad muy bien. Si los servidores externos emulan plataformas de aplicacin existentes sus aplicaciones no corrern sin modificacin.

Estructura
Adaptadores La introduccin de interfaces entre clientes y sus servidores externos protege a los clientes de dependencias directas. Los adaptadores, tambin conocidos como emuladores, representan estas interfaces y permiten a los clientes acceder a los servicios de su servidor externo de forma portable. Son parte del espacio de direcciones del cliente. Cuando un cliente solicita un servicio de un servidor externo, es tarea del adaptador pasar la invocacin al servidor apropiado. Para ello, el adaptador usa los servicios de comunicacin proporcionados por el microkernel.

Estructura

Estructura
Microkernel. Implementa los servicios centrales como facilidades de comunicacin o manejo de recursos. Otros componentes son construidos sobre algunos o todos estos servicios bsicos usando una o ms interfaces que exponen la funcionalidad del microkernel. Muchas dependencias especficas al sistema son encapsuladas en el microkernel. La mayora de las partes que dependenden del hardware son ocultas de otros participantes. Los clientes del microkernel solo ven vistas particulares del dominio de aplicacin y de la plataforma especfica subyacente.

Estructura
El microkernel es responsable tambin de mantener los recursos del sistema como proceso o archivos. Controla y coordina el accesso a estos recursos. Implementa servicios atmicos, a los que se suele denominar mecanismos. Estos son la base en la que funcionalidad ms compleja, llamadas polticas, es construida.

Estructura

Estructura

Dinmica

Escenario 1: un cliente invoca un servicio de su servidor externo

Dinmica

Escenario 2: un servidor externo solicita un servicio que es proporcionado por un servidor interno.

Implementacin
1. Analice el dominio de la aplicacin. Si ya conoce las polticas que sus servidores externos necesitan ofrecer, o si tiene un conocimiento detallado de los servidores externos que va a implementar contine. Si no, identifique la funcionalidad central para implementar los servidores externos y contine con el paso 3 . 2. Analice los servidores externos. Analice las polticas que van a proporcionar los servidores externos. En este punto ya se ha identificado la funcionalidad que requiere su dominio de aplicacin. 3. Categorice los servicios. Agrupe toda la funcionalidad en categoras independientes semnticamente. Construya categoras de operaciones que aunque no estn relacionadas directamente con el dominio de la aplicacin sena necesarias para implementar la infraestructura del sistema.

Implementacin
4. Particione las categoras. Separe las categoras en servicios que deben ser parte del microkernel, y aquellos que deben estar disponibles como servidores internos. Se recomienda que las operaciones frecuentemente usadas, dependientes de hardware o con requisitos de tiempo estn en el componente microkernel.. 5. Encuentre un conjunto consistente y completo de operaciones y abstracciones para cada categora identificada en el paso 1. Cada poltica que proporcione un servidor externo debe ser implementada a travs del uso de servicios que el microkernel ofrezca mediante su interfaz. 6. Determine estrategias para transmisin y recuperacin de solicitudes. Especifique las facilidades que el microkernel debe proporcionar para la comunicacin entre componentes.

Implementacin
7. Estructure el componente microkernel. Si es posible use el patrn Layers para separar las partes especficas al sistema de las partes independientes del sistema del microkernel. Coloque los servicios que el microkernel expone a otros componentes en la capa ms alta y use las ms bajas para ocultar las dependencias del sistema de las capas ms altas. 8. Especifique las interfaces de programacin del microkernel. Decida como estas interfaces deben ser accesibles externamente. El microkernel es implementado como un proceso o como un mdulo compartido por otros componentes. 9. El microkernel es responsable de manejar todos los recursos del sistema como bloques de memoria, dispositivos, contextos de dispositivo. Tambin mantiene informacin sobre recursos y permite accederlos de forma coordinada y sistemtica.

Implementacin
10. Disee e implemente los servicios internos como procesos separados o bibliotecas compartidas. Ejecute este paso en paralelo con los pasos 7 a 9 puesto que algunos de los servicios del microkernel necesitan acceder a servidores internos. Los servidores activos se implementan como procesos y los pasivos como bibliotecas compartidas. 11. Implemente los servidores externos. Cada servidor externo es implementado como un proceso separado que proporciona su propia interfaz de servicio. La arquitectura externa de un servidor externo depende de las polticas que la componen. 12. Implemente los adaptadores. La tarea de un adaptador es proporcionar operaciones a sus clientes que son pasadas a un servidor externo. Se puede disear como una biblioteca convencional ya sea encadenada dinmica o estticamente.

Implementacin
13. Desarrolle las aplicaciones cliente o use las existentes para ser ejecutadas en el sistema microkernel.

Usos conocidos
Sistemas operativos Un Microkernel es un subsistema modular compuesto de abastracciones neutrales al S.O., proporciona solamente los servicios escenciales tales como abstracciones de procesos, hilos, IPC, y primitivas de administracin de memoria. Los controladores de dispositivos corren en el microkernel como otro proceso ms. Mltiples sistemas operativos o diferentes personalidades pueden correr sobre estas abstracciones y por tanto ser vistos como otra aplicacin.

Usos conocidos

Bibliografa
Buschmann Frank, Meunier Regine, Rohnert Hans, Sommerlad Peter, Stal Michael, Pattern Oriented Software Architecture: A System of Patterns, Volume One, Wiley, 1996. Gamma, Helm, Johnson, Vlissides, Design Patterns - Elements of Reusable Object Oriented Software, Addison Wesley. Geary David, Take control with the Proxy design pattern, javaworld.com, 2002.

Вам также может понравиться