microkernel 2

28
Pattern Oriented Software Architecture Microkernel Jamir Antonio Avila Mojica César Julio Bustacara Median Patrones de Software

Upload: carlos15ss

Post on 30-Jul-2015

124 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Microkernel 2

Pattern Oriented Software ArchitectureMicrokernel

Jamir Antonio Avila MojicaCésar Julio Bustacara Median

Patrones de Software

Page 2: Microkernel 2

AgendaIntroducciónMicrokernel

EjemploContextoProblemaSoluciónEstructuraDinámicaImplementaciónVariantesUsos conocidosConsecuencias

Page 3: Microkernel 2

Microkernel• El patrón de arquitectura Microkernel se aplica a sistemas de

software que deben estar habilitados para adaptarse a requerimientos cambiantes del sistema. Separa un núcleo de funcionalidad mínima de la funcionalidad extendida y de partes específicas al cliente. También sirve como un socket para conectores en estas extensiones y coordinar su colaboración.

Page 4: Microkernel 2

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 diseño para lograrlo. Un requerimiento es que este sistema operativo innovador sea fácilmente portable a las plataformas de hardware relevantes, y debe estar habilitado para acomodar futuros desarrollos fácilmente. 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 aplicación. Hydra presentará todas las aplicaciones corriendo en su ventana principal:

Page 5: Microkernel 2

Ejemplo

Page 6: Microkernel 2

Problema• Desarrollar software para una aplicación de un dominio que

necesita hacer frente a un amplio espectro de tecnologías y estándares similares no es una tarea trivial. Son ejemplos bien conocidos los sistemas operativos y las interfaces gráficas de usuario. Tales sistemas tiene una larga vida, diez años o más. Durante este periodo nuevas tecnologías emergen y las viejas cambian. Las siguientes fuerzas necesitan considerarse:– La plataforma de aplicación debe enfrentar la evolución del

hardware y software.– La plataforma de aplicación debe ser portable, extensible y

adaptable para facilitar la integración de tecnologías emergentes.

Page 7: Microkernel 2

Solución• Encapsule los servicios fundamentales de sus plataforma de

aplicación en un componente microkernel. El microkernel incluye la funcionalidad que permite a otros componentes que corren en procesos separados comunicarse con cada otro. Es también 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 tamaño 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 través de las interfaces del microkernel.

Page 8: Microkernel 2

Solución• Cada servidor externo es un proceso separado que representa

una plataforma de aplicación. Un sistema microkernel puede ser visto como una plataforma que integra otras plataformas de aplicación.Los clientes se comunican con los servidores externos usando las facilidades de comunicación proporcionadas por el microkernel.

Page 9: Microkernel 2

EstructuraEl patrón Microkernel define cinco tipos de componentes:• Servidores internos.• Servidores externos.• Clientes• Adaptadores• Microkernel.

Page 10: Microkernel 2

EstructuraServidores internos• También 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 vía solicitudes de servicio. Entonces, los servidores internos pueden encapsular algunas dependencias del hardware o software subyacente. Por ejemplo, controladores de dispositivos que soporten tarjetas gráficas específicas son buenos candidatos para servidores internos.Se pueden considerar como extensiones del microkernel.

Page 11: Microkernel 2

EstructuraServidores externos• También conocidos como personalidades, son componentes que

usan el microkernel para implementar su propia vista del dominio de aplicación 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 implementación de los servicios confía en los mecanismos del microkernel luego acceden a sus interfaces de programación.

Page 12: Microkernel 2

EstructuraClientes• Un clientes es una aplicación que está asociada con

exactamente un servidor externo. Solamente accede a la interfaz de programación 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 comunicación disponibles para interoperar con los servidores externos. Cada comunicación con un servidor externo debe ser codificada en el código cliente lo que trae varias desventajas:– El sistema no soporta modificabilidad muy bien.– Si los servidores externos emulan plataformas de aplicación

existentes sus aplicaciones no correrán sin modificación.

Page 13: Microkernel 2

EstructuraAdaptadores• La introducción de interfaces entre clientes y sus servidores

externos protege a los clientes de dependencias directas. Los adaptadores, también 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 invocación al servidor apropiado. Para ello, el adaptador usa los servicios de comunicación proporcionados por el microkernel.

Page 14: Microkernel 2

Estructura

Page 15: Microkernel 2

EstructuraMicrokernel. • Implementa los servicios centrales como facilidades de

comunicación o manejo de recursos. Otros componentes son construidos sobre algunos o todos estos servicios básicos usando una o más interfaces que exponen la funcionalidad del microkernel.Muchas dependencias específicas al sistema son encapsuladas en el microkernel. La mayoría de las partes que dependenden del hardware son ocultas de otros participantes. Los clientes del microkernel solo ven vistas particulares del dominio de aplicación y de la plataforma específica subyacente.

Page 16: Microkernel 2

EstructuraEl microkernel es responsable también de mantener los recursos del sistema como proceso o archivos. Controla y coordina el accesso a estos recursos.Implementa servicios atómicos, a los que se suele denominar mecanismos. Estos son la base en la que funcionalidad más compleja, llamadas políticas, es construida.

Page 17: Microkernel 2

Estructura

Page 18: Microkernel 2

Estructura

Page 19: Microkernel 2

Dinámica

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

Page 20: Microkernel 2

Dinámica

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

Page 21: Microkernel 2

Implementación1. Analice el dominio de la aplicación. Si ya conoce las políticas que

sus servidores externos necesitan ofrecer, o si tiene un conocimiento detallado de los servidores externos que va a implementar continúe. Si no, identifique la funcionalidad central para implementar los servidores externos y continúe con el paso 3 .

2. Analice los servidores externos. Analice las políticas que van a proporcionar los servidores externos. En este punto ya se ha identificado la funcionalidad que requiere su dominio de aplicación.

3. Categorice los servicios. Agrupe toda la funcionalidad en categorías independientes semánticamente. Construya categorías de operaciones que aunque no estén relacionadas directamente con el dominio de la aplicación sena necesarias para implementar la infraestructura del sistema.

Page 22: Microkernel 2

Implementación4. Particione las categorías. Separe las categorías 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 estén en el componente microkernel..

5. Encuentre un conjunto consistente y completo de operaciones y abstracciones para cada categoría identificada en el paso 1. Cada política que proporcione un servidor externo debe ser implementada a través del uso de servicios que el microkernel ofrezca mediante su interfaz.

6. Determine estrategias para transmisión y recuperación de solicitudes. Especifique las facilidades que el microkernel debe proporcionar para la comunicación entre componentes.

Page 23: Microkernel 2

Implementación7. Estructure el componente microkernel. Si es posible use el patrón

Layers para separar las partes específicas al sistema de las partes independientes del sistema del microkernel. Coloque los servicios que el microkernel expone a otros componentes en la capa más alta y use las más bajas para ocultar las dependencias del sistema de las capas más altas.

8. Especifique las interfaces de programación del microkernel. Decida como estas interfaces deben ser accesibles externamente. El microkernel es implementado como un proceso o como un módulo compartido por otros componentes.

9. El microkernel es responsable de manejar todos los recursos del sistema como bloques de memoria, dispositivos, contextos de dispositivo. También mantiene información sobre recursos y permite accederlos de forma coordinada y sistemática.

Page 24: Microkernel 2

Implementación10. Diseñe 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 políticas 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 diseñar como una biblioteca convencional ya sea encadenada dinámica o estáticamente.

Page 25: Microkernel 2

Implementación13. Desarrolle las aplicaciones cliente o use las existentes para ser

ejecutadas en el sistema microkernel.

Page 26: Microkernel 2

Usos conocidosSistemas 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 administración de memoria.

• Los controladores de dispositivos corren en el microkernel como otro proceso más.

• Múltiples sistemas operativos o diferentes personalidades pueden correr sobre estas abstracciones y por tanto ser vistos como otra aplicación.

Page 27: Microkernel 2

Usos conocidos

Page 28: Microkernel 2

Bibliografía• 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.