Sistemas Distribuidos



Documentos relacionados
Sesión 5 Introducción a REST

Patrones de Alto nivel: Patrones de Arquitectura Patrones de nivel medio: Patrones de Diseño Patrones de bajo nivel: Idioms

Especificación de la secuencia de mensajes que se han de intercambiar. Especificación del formato de los datos en los mensajes.

Comunicación entre procesos

Arquitectura de sistema de alta disponibilidad

1. Introducción 2. Historia 3. Características clave 4. Cuestiones de diseño

Modelos de los sistemas distribuidos. Jorge Iván Meza Martínez

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

Arquitectura de Software

Sistemas de Información Introducción a los Sistemas de Información: El Modelo Cliente/Servidor

Capítulo 1: Introducción a los Sistemas de Gestión de Bases de Datos (SGBD)

Sistemas. Distribuidos

Service Oriented Architecture

Sistemas de Operación II

SISTEMAS DE ARCHIVOS DISTRIBUIDOS

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Arquitectura. 1.- Aplicaciones Web. Definición. Arquitectura clásica. Contenidos. 1.- Aplicaciones Web

Web Services en Java. Taller de Programación. Instituto de Computación Facultad de Ingeniería Universidad de la República

JAVA EE 5. Arquitectura, conceptos y ejemplos.

INTRODUCCION. Tema: Protocolo de la Capa de aplicación. FTP HTTP. Autor: Julio Cesar Morejon Rios

SIEWEB. La intranet corporativa de SIE

Tema 6: Comparativa CORBA/Servicios Web

Sistemas de archivos distribuidos. Alvaro Ospina Sanjuan

Arquitecturas Distribuidas. Eduardo Ostertag Jenkins, Ph.D. OBCOM INGENIERIA S.A.

DIPLOMADO EN SEGURIDAD INFORMATICA

18 y 19 Sistemas de Archivos Distribuidos y Tarea 05

UNIVERSIDAD ESTATAL DE MILAGRO

ARQUITECTURA DE DISTRIBUCIÓN DE DATOS

Capítulo 5. Cliente-Servidor.

ARQUITECTURA ORIENTADA A SERVICIOS (SOA) EN LA JUNTA DE ANDALUCÍA

MIDDLEWARE: Arquitectura para Aplicaciones Distribuidas Dr. Víctor J. Sosa Sosa

Introducción. Componentes de un SI. Sistema de Información:

Introducción a los Servicios Web. Ing. José Luis Bugarin ILUMINATIC SAC jbugarin@consultorjava.com

1 GLOSARIO. Actor: Es un consumidor (usa) del servicio (persona, sistema o servicio).

5.1 Introducción a Servicios Web

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

UNIVERSIDAD DE SALAMANCA

Sumario... 5 Prólogo Unidad didáctica 1. Introducción a la computación distribuida Objetivos de la Unidad... 12

Infraestructura Tecnológica. Sesión 5: Arquitectura cliente-servidor

SISTEMAS DE INFORMACIÓN II TEORÍA

Arquitectura cliente/servidor

Familia de Windows Server 2003

Desarrollo y servicios web

UNIVERSIDAD TECNOLOGICA ECOTEC DIEGO BARRAGAN MATERIA: Sistemas Operativos 1 ENSAYO: Servidores BLADE

La vida en un mundo centrado en la red

Sistemas de Operación II

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

Arquitectura de Aplicaciones


Tema 1. Introducción a JAVA

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Capítulo 2. Planteamiento del problema. Capítulo 2 Planteamiento del problema

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Sistemas Distribuidos

Capitulo 5. Implementación del sistema MDM

Memoria Compartida Distribuida (DSM) Sistema de Archivos

Estilos de Arquitectura y. Patrones de Diseño Arquitectónico. Patrones de Arquitectura

MANUAL TÉCNICO WEB SERVICE PROTOCOLO SOAP

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Modelo de aplicaciones CUDA

Unidad didáctica 2: Metodologías de desarrollo de Bases de Datos. Unidad didáctica 1: Fase de análisis de requisitos Modelo E/R

Tema 1. Conceptos básicos

CORPORACIÓN MEXICANA DE INVESTIGACIÓN EN MATERIALES, S.A. DE CV

Windows Server Windows Server 2003

APACHE HADOOP. Daniel Portela Paz Javier Villarreal García Luis Barroso Vázquez Álvaro Guzmán López

Introducción. - Gráfica tomada del Artículo de José David Parra

Internet y World Wide Web. Informática Aplicada Grado en GAP Fac. de Admón. y Dir. de Empresas Univ. Politécnica de Valencia

Tecnología de objetos distribuidos y arquitectura de componentes. Índice. Bibliografía. Introducción. Tema V

BASES DE DATOS TEMA 2. Arquitectura de un Sistema de Gestión de Bases de Datos

Estructura de Bases de datos. Leonardo Víquez Acuña

Modelo de Objetos Distribuidos

TALLER No. 1 Capitulo 1: Conceptos Básicos de Bases de datos

Framework ATLAS. Entorno de Desarrollo

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

Arquitectura cliente/servidor

3.9 Patrón Distributed callback

File System Distribuido - FSD

asired middleware XML Así-Red Servicios Telemáticos, S.L.L. w w w. a s i r e d. e s

Tecnologías De La Información Y Comunicación I. Firewall Y Proxy. Integrantes: Héctor Duran. Katherine Zumelzu

Tema 1. Arquitectura Cliente/Servidor

Universidad Nacional Autónoma de México Dirección de Sistemas Dirección General de Personal

Arquitectura de Proyectos de IT. Integración. Ing. Gastón Coco Ing. Nicolás Passerini Ing. Juan Arias Ing. Gustavo A. Brey Ing.

PDF created with pdffactory Pro trial version

CURSO: APACHE SPARK CAPÍTULO 2: INTRODUCCIÓN A APACHE SPARK.

Arquitectura Cliente/Servidor

Ventajas, Características y Aplicaciones de los SGBD Distribuidos.

TEMA 5. Otras arquitecturas distribuidas II. Objetos distribuidos y CORBA

Práctica sobre compartición de instancias remotas.

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

Redes de Altas Prestaciones

CAPITULO 1. Introducción a los Conceptos Generales de Bases de Datos Distribuidas

Facultad de Ciencias del Hombre y la Naturaleza SISTEMAS OPERATIVOS DE REDES CICLO II Materia: Sistemas Operativos de Redes Tema:

Presente en el mercado de la seguridad desde 1989, DORLET se dedica desde sus inicios al desarrollo y fabricación de sistemas de control de accesos y

Panorámica de la asignatura

Transcripción:

Sistemas Distribuidos Sesión 1 Introducción a los Sistemas Distribuidos Diego Sevilla Ruiz DITEC Facultad de Informática Murcia, septiembre 2010 Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 1 / 47

Índice Sistemas Distribuidos: Introducción y Conceptos Sistemas Distribuidos: Arquitecturas Sistemas Cloud Sistemas Operativos Distribuidos Introducción a los Patrones y las Herramientas Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 2 / 47

Sistemas Distribuidos (enfoque clásico) Un sistema distribuido es aquel en el que los componentes localizados en computadores, conectados en red, comunican y coordinan sus acciones únicamente mediante el paso de mensajes. [Colouris, p.1]. Concurrencia de los componentes Carencia de un reloj global Fallos independientes Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 3 / 47

Sistemas Distribuidos (actualmente) Uso ubícuo de Internet (y de sus protocolos) Sistemas abiertos La consistencia fuerte sólo se necesita en algunos casos En la mayoría de los casos, se puede tolerar una consistencia eventual (W. Vogels. Eventually Consistent. ACM Queue vol. 6, no. 6, December 2008.) 1 Uso ubícuo de cachés, sistemas aboertos, protocolos estándar (HTTP) homogeneización de datos y procesamiento, Map/Reduce, paralelismo funcional, automático, REST, etc. Aquí nos centraremos 1 http://queue.acm.org/detail.cfm?id=1466448 Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 4 / 47

Sistemas Distribuidos: Retos Heterogeneidad Redes Hardware Sistemas Operativos Middleware Extensibilidad Seguridad Escalabilidad Tratamiento de Fallos Concurrencia Transparencia Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 5 / 47

Sistemas Distribuidos: Heterogeneidad Hardware, Sistema Operativo, lenguajes, Redes Razones: Ingeniería Diferentes personas eligen diferentes soluciones Coste Se compran recursos que se adapten a las necesidades Aplicaciones antiguas Imaginemos una aplicación de reserva de billetes en COBOL. Se tienen que amortizar las inversiones Hardware antiguo El hardware nuevo que se compra es necesariamente diferente. Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 6 / 47

Sistemas Distribuidos: Heterogeneidad (ii) Herramientas: Protocolos de comunicación APIs estándar (Middleware) Sistemas Abiertos (i.e. CORBA, Internet, etc.) Especificaciones públicas Mecanismos de comunicación estandarizados Utilizando hardware y software COTS Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 7 / 47

Sistemas Distribuidos: Extensibilidad Característica de un sistema que permite añadirle nuevas características y servicios de forma dinámica Herramientas: Sistemas Abiertos Loose Coupling Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 8 / 47

Sistemas Distribuidos: Seguridad Elemento más importante y más complejo (conexiones y equipos físicamente distribuidos) Necesidad de: Autenticar a usuarios y recursos Definir roles y patrones de acceso Encriptar las comunicaciones Seguridad física Herramientas: PKIs, SSL, Servicios de Directorio, Proxys anonimizadores, funciones de hash, etc. No tratado en profundidad en esta asignatura Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 9 / 47

Sistemas Distribuidos: Escalabilidad Un sistema es escalable si el aumento de demanda de servicios se puede suplir con una aportación de recursos También: Un sistema puede ofrecer servicio a un número potencialmente muy grande de demandas: degrada el tiempo medio de respuesta, pero no se colapsa Prever el desbordamiento de recursos tanto software como hardware Evitar cuellos de botella de prestaciones Soluciones: Uso de software eficiente en tiempo y espacio Patrones de diseño y de código (idiomas) para manejar eficientemente conexiones, threads, etc. Uso de cachés, consistencia eventual, etc. Uso de algoritmos altamente paralelizables (programación funcional, lógica, algoritmos Map/Reduce), etc. Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 10 / 47

Sistemas Distribuidos: Fallos El rango de fallos en sistemas distribuidos es mayor que en cualquier otro sistema Además, es interesante que los sistemas distribuidos «toleren» fallos. Por qué? Cuestiones: Detección de fallos (unos detectables, otros no) Enmascaramiento de fallos (p. ej. patrón Proxy) Redundancia y votado Disponibilidad Idempotentibilidad No tratado en profundidad en esta asignatura Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 11 / 47

Sistemas Distribuidos: Concurrencia Normalmente los datos se comparten Hay que establecer órdenes de acceso y procesos atómicos: Transacciones Cuello de botella si los datos están almacenados en un sólo ordenador Necesidad de transacciones distribuidas Problemas de consistencia A veces se necesitan coordinar varios procesos de varios ordenadores (barreras). La mala programación de estos procesos puede hacer el sistema muy ineficiente No tratadas en profundidad en esta asignatura Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 12 / 47

Sistemas Distribuidos: Transparencia El tópico más importante y el más difícil de conseguir Con transparencia, el desarrollo de aplicaciones distribuidas es similar al de aplicaciones convencionales Delega en los niveles inferiores la complejidad y ofrece servicios fiables: Transparencia de localización Transparencia de concurrencia Transparencia de replicación Transparencia ante fallos Transparencia... Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 13 / 47

Arquitecturas Sistemas Centralizados No escalables Cómo añadir más recursos? Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 14 / 47

Arquitecturas Primeros sistemas distribuidos Primeros programas distribuidos Conexiones explícitas, protocolos explícitos, herramientas básicas P. ej. Demonios remotos UNIX Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 15 / 47

Arquitecturas Primeros sistemas distribuidos (ii) Servicios básicos por parte del Sistema Operativo Direccionamiento Sockets Normalmente sólo implicaban a dos programas (Cliente/Servidor) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 16 / 47

Arquitecturas Internet/World Wide Web/CGI Servidor HTTP Browser HTTP Internet TCP/IP HTTP Páginas HTML Prog. CGI SGBD Servidor SMTP Nivel 1 Nivel 2 Nivel 3 Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 17 / 47

Arquitecturas Internet/World Wide Web/CGI (ii) Sockets API de bajo nivel Gestión de errores? No hay tipos de datos... comprobación? Protocolo CGI ad-hoc Stateless (salvo con otros hacks como los cookies) El servidor no da soporte para persistencia (bases de datos), transacciones, seguridad, gestión de usuarios, etc. Las aplicaciones tienen que implementar TODO, o usar frameworks etc. Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 18 / 47

Arquitecturas 2 y 3 niveles Cliente Presentación Lógica del negocio Acceso a datos Servidor Servidores BD Sistemas Legacy etc. Nivel 1 Nivel 2 Cliente Presentación Lógica del negocio Acceso a datos Servidor Servidores BD Sistemas Legacy etc. Nivel 1 Nivel 2 Nivel 3,... iego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 19 / 47

TPMs, Clusters, etc. En la práctica, se utilizan sistemas de n capas La distribución: múltiples clientes por Web (thin clients) y un sistema de BBDD que está basado en clúster Clústers de bases de datos/procedimientos proporcionados por paquetes comerciales (Oracle, DB/2, etc.) Gestión de MUCHOS clientes: Transaction-Processing Monitors Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 20 / 47

Sistemas de más alto nivel: RPC Primer sistema en diferenciar interfaz/implementación Más alto nivel (comprobación de tipos) Interfaz (lista de operaciones) Stubs/Skeletons El interfaz se describe en C El compilador de RPC genera los stubs y los skeletons El programador realiza llamadas locales Los stubs y skeletons realizan el trabajo remoto TRANSPARENCIA LOCAL/REMOTA Ejemplo: SUN RPC Software intermedio: MIDDLEWARE Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 21 / 47

Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 22 / 47

Objetos Distribuidos: CORBA/RMI Muy parecido a RPC, pero basado en objetos El middleware ahora toma más importancia Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 23 / 47

Message-Oriented Middleware Síncrono/asíncrono Normalmente Suscripción/Respuesta Documentos XML Mensajes Loose Coupling JMS, AMQP, ActiveMQ, ØMQ, MSMQ, D-Bus, etc. ESBs: Mensajería + Servicios de dominio Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 24 / 47

D-Bus Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 25 / 47

D-Bus (ii) 1 Message message = new Message ("/ remote / object / path ", " MethodName ", arg1, arg2 ); 3 Connection connection = getbusconnection (); connection. send ( message ); 5 Message reply = connection. waitforreply ( message ); if ( reply. iserror ()) { 7 //... } else { 9 Object returnvalue = reply. getreturnvalue (); } Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 26 / 47

D-Bus (iii) $ dbus - monitor 2 method call sender =:1.751 -> dest = org. gnome. GConf serial =2 path =/ org / gnome / GConf ; interface = org. gnome. GConf ; member = GetIOR method return sender =:1.4 -> dest =:1.751 reply_ serial =2 4 string " IOR :01..." signal sender = org. freedesktop. DBus -> dest =( null destination ) serial =1218 path =/ org / freedesktop / DBus ; interface = org. freedesktop. DBus ; member = NameOwnerChanged 6 string ":1.751" string ":1.751" Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 27 / 47

Peer to Peer Modelo más descentralizado: todos aportan por igual o en la medida de sus posibilidades El MOM también soporta esta arquitectura Ejemplos: JXTA Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 28 / 47

Web Services/SOA Todo se hace accesible a través de servicios (web) Protocolos «estándar»: HTTP, XML, SOAP, WSDL Qué pasa con los callbacks? Manejo del estado? No hay soporte del servidor Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 29 / 47

REST REpresentational State Transfer V. van Gogh. Noon: Rest From Work. 1889-90. Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 30 / 47

REST (ii) Patrón arquitectural de desarrollo de aplicaciones sobre el Web Desarrollado por Roy T. Fielding en su tesis doctoral Aprovecha el web tal y como está El web ha sido escalable hasta ahora por tener una serie de requisitos: se aplicarán a REST Identificación de recursos Todos los elementos accedidos remotamente tienen una identificación (URI). Se elige una representación para cada recurso (XML, YAML) Manipulación de recursos Hay operaciones para crear, modificar y borrar (CRUD) recursos Mensajes auto-descriptivos Los recursos incluyen metadatos (cache, validez, MIME). Incluidos en los headers de HTTP Los metadatos permiten tratar el mensaje Tejido hypermedia como representación del estado de la aplicación (HATEOAS) Los datos retornados pueden incluir enlaces a otros recursos Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 31 / 47

Componentes: CCM/EJB Componentes: Entidades redistribuibles binarias ejecutadas en un entorno de ejecución (run-time) Modelo contenedor Unidades independientes de construcción de programas Unidades binarias de desarrollo, prueba y ensamblado Soporte run-time que permite instalar componentes El entorno de ejecución (run-time) ofrece todos los servicios a los componentes instalados Seguridad, transacciones, persistencia, etc. Ofrecidos como aspectos (Aspect-Oriented Programming (AOP)) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 32 / 47

Componentes: CCM/EJB (ii) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 33 / 47

Modelos de Componentes Distribuidos Los componentes se encuentran distribuidos Diferentes organizaciones ofrecen componentes Bien para descargar Bien para utilizarlos remotamente bajo pago Necesidad de un entorno seguro, autenticado... p. ej. Grid Transparencia local/remota Paletas de componentes similares a Delphi o VB, pero distribuidas Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 34 / 47

Cloud Computing Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 35 / 47

Cloud Computing (ii) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 36 / 47

Cloud Computing (iii) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 37 / 47

Sistemas Operativos Distribuidos Sistemas Distribuidos versus Sistemas Operativos Distribuidos? Polémica hace unos años Principales diferencias: Heterogeneidad (hw, so., etc.) Sistema débilmente acoplado vs. Sistema fuertemente acoplado Inmaduros en su comienzo Ahora sería el momento de avanzar en la dirección GNU/Hurd CODA Amoeba, MOSIX Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 38 / 47

Introducción a los Patrones y Herramientas Patrones Solución dada reiteradamente a un problema común «Best practices» Suben el nivel de abstracción, tratan problemas en abstracto En programación distribuida poca experiencia Los utilizaremos para aprender sobre cómo construir mejores aplicaciones distribuidas Elementos: Nombre, Contexto, Problema, Cuestiones relevantes, Solución Lenguaje de Patrones: Conjunto de patrones relacionados que sirven para un fin común (POSA2) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 39 / 47

Introducción a los Patrones y Herramientas (ii) Idioms Patrones, pero de más bajo nivel Asociados a un lenguaje, normalmente C++ No por ello menos importantes Importantísimos por ejemplo en el mapping de C++ a CORBA Ejemplo: «Scoped Locking» C++ Idioms: James O. Coplien http://www1.belllabs.com/user/cope/patterns/c %2b %2bIdioms/EuroPLoP98.html Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 40 / 47

Introducción a los Patrones y Herramientas (iii) Scoped Locking (POSA2, p. 325) (Resource Acquisition is Initialization) pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int función(...) { pthread_mutex_lock(&mutex); } if (condición) { // lo que sea pthread_mutex_unlock(&mutex); return 1; } pthread_mutex_unlock(&mutex); return 0; Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 41 / 47

Introducción a los Patrones y Herramientas (iv) Scoped Locking (cont.) Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 42 / 47

Introducción a los Patrones y Herramientas (v) Scoped Locking (cont.) class SyncLock { public: SyncLock(pthread_mutex_t* m) { mutex_ = m; pthread_mutex_lock( mutex_ ); } ~SyncLock() { pthread_mutex_unlock( mutex_ ); } private: pthread_mutex_t* mutex_; } Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 43 / 47

Introducción a los Patrones y Herramientas (vi) Scoped Locking (cont.) RAII http://www.hackcraft.net/raii/ pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; int función(...) { SyncLock sl(&mutex); if (condición) { // lo que sea return 1; } } return 0; Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 44 / 47

Metamodelado Eclipse Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 45 / 47

Modelos SyncLock Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 46 / 47

Modelos (ii) SyncLock Diego Sevilla Ruiz (DITEC Facultad de Informática) Sistemas Distribuidos Murcia, septiembre 2010 47 / 47