Aplicaciones Concurrentes



Documentos relacionados
Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13

Unidad 8. Bases de Datos en el Modelo Cliente Servidor

Las tecnologías del desarrollo Web

Guillermo Román Díez

Alejandro Molina Zarca

Programación Concurrente Recopilación de teoría referente a la materia

Programación Concurrente y Paralela. Unidad 1 Introducción

Resumen Tema 5: Proceso de transacciones

SD Examen 2 EVA. 1 of 11 2/5/2013 8:49 PM. Paralelo 1? Evaluaciones? SD Examen 2 EVA. Comenzado: Feb 5 en 8:50pm

Concurrencia. Concurrencia

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

cilred.com GESTIÓN DE TRANSACCIONES

CAPITULO 5 RESULTADOS Y CONCLUSIONES

CONCEPTO DE ARQUITECTURA CLIENTE / SERVIDOR.

6. Enumere tres ventajas de los ULT frente a los KLT.

En la ingeniería de software se denomina aplicación web a aquellas aplicaciones que los usuarios pueden utilizar accediendo a un servidor web a

Modelo Cliente / Servidor. Gerardo Grinman 5D

Arquitecturas cliente/servidor

Escalabilidad y Sharding. Pierre-Yves Duquesnoy Sales Engineer

Definimos un Sistema Gestor de Bases de Datos o SGBD, también llamado DBMS (Data Base Management System) como una colección de datos relacionados entr

TEMA 1. Introducción a las arquitecturas distribuidas

4.6.- Integridad: Control de concurrencia.

Introducción al Computo Distribuido

PROCESOS E HILOS - Hilo

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Informática III. Concurrencia

Hilos. Módulo 4. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco. Hilos

Tema 4: Gestión de Procesos

PROCESAMIENTO DISTRIBUIDO

1 of 9. Paralelo 1? Evaluaciones? SOR Examen 2 EVA Teórico/Prac co. Comenzado: Feb 11 en 12:21am. Pregunta 1: 2 puntos El creador de Linux fue el Sr.

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos

Procesos e Hilos en C

Premios CONTRATOS Y PROYECTOS SMART CITIES 2014

MULTIPROCESADORES TIPOS DE PARALELISMO

Este curso explora las oportunidades de desarrollo con el producto de Microsoft SharePoint Server 2013.

Gestión de Alumbrado Público con Software Libre

Hilos. Módulo 4. Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada.

Introducción al Cloud Computing

14. Control de la concurrencia

Hilos. Hilos. Revisión Modelos Multihilados Librerías de Hilos Aspectos sobre Hilos Ejemplos de Sistemas Operativos Hilos en Linux

Cena de filosofos y sincronizacion java

Servlets. 1. Introducción Características fundamentales Ventajas fundamentales... 2

Estimación de Esfuerzo con Casos de Uso

Control de concurrencia en bases de datos relacionales

Contenido. Ecosistema de mundos virtuales: plataformas disponibles. autor: Cesar Pachón.

CDI Arquitecturas que soportan la concurrencia. granularidad

Guía práctica de estudio 12: Hilos

INFORMATICA III. Capítulo I: Plataformas

Ejecución serial: las tareas/instrucciones de un programa son ejecutadas de manera secuencial, una a la vez.

OPERADORES ARITMÉTICOS EN PHP: OPERADORES BÁSICOS Y RESTO (MÓDULO). INCREMENTO Y DECREMENTO. (CU00819B)

Tema 1. Problemas, algoritmos y programas

1 ( 3,5 puntos) Responda, justificando sus respuestas, a las siguientes cuestiones:

Conexiones dedicadas y compartidas: pool de conexiones.

PARTE II PROGRAMACION CON THREADS EN C

Hilos Secciones Stallings:

Comunicación entre tareas de tiempo real

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

HILOS (Threads) Implementación en Java

Sincronización de procesos

Universisdad de Los Andes Facultad de Ingeniería Escuela de Sistemas

Sistemas Operativos. Sistemas Operativos II ITS EMT CETP 2014 Prof. L. Carámbula

1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS

INFORMATICA III. Cap. I: Plataformas

Hoja de respuestas. Examen tipo A

Ahora tú también puedes crear aplicaciones

Guía básica de gestión de incidencias para centros educativos SERVICIO CORPORATIVO DE VOZ

Este capitulo contiene una análisis de los posibles soluciones que se pueden presentar en el momento de desarrollar aplicaciones con J2EE

BASES DE DATOS DISTRIBUIDAS

Programación Orientada a Objetos

Informática Electrónica Concurrencia

[1.4] Funcionamiento de una aplicación web

Introducción al Desarrollo de Aplicaciones Web D R A. M A R I C E L A B R A V O

Conceptos generales de sistemas distribuidos

Concurrencia de Procesos

Ing. Informática. Catedrático: Lic. Angélica Avalos Cano

SISTEMA DE GESTIÓN Y CONSULTA DE DATOS DE SUELO INDUSTRIAL EN LA PROVINCIA DE BADAJOZ INFORME DESCRIPTIVO

Programación concurrente

Unidad IV: Arquitectura de los Sistemas de Bases de Datos (Tema 5) GESTIÓN DE BASES DE DATOS GRADO EN INGENIERÍA INFORMÁTICA UNED

REPORTAJE ESPECIAL Aspectos del hardware a tomar en cuenta para las instalaciones de SAP HANA

Ingeniería de Aplicaciones Web

Aviso 2: Escriba con buena letra y evite los tachones. Aviso 3: Solución del examen y fecha de revisión en

06/06/2017. Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de Sentencia Nivel de Unidad Nivel de Programa

LENGUAJES DE PROGRAMACIÓN WEB (PHP, HTML5) Sesión 7: Lenguajes: HTML, XML, XHTML

INGENIERÍA DEL SOFTWARE I Práctica 5 Modelado de Diseño

GRADO EN INGENIERÍA INFORMÁTICA

CÓMPUTO DE ALTO RENDIMIENTO EN MEMORIA COMPARTIDA Y PROCESADORES GRÁFICOS

Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso Presentación e introducción

Sistemas Paralelos y Distribuidos

Concurrencia. Guillermo Román Díez

PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE

1.1. Modelos de arquitecturas de cómputo: clásicas, segmentadas, de multiprocesamiento.

LABORATORIO 4: CONCURRENCIA Juan Antonio de la Puente - 21/10/15

Transacciones y Control de concurrencia

Definición. Tema 1: Introducción

Preguntas de autoevaluación tema 3

Gestión de Transacciones: Concurrencia y Recuperación

Presentación del Curso Presencial. Programación Web con Java J2EE

Transcripción:

PROGRAMACIÓN CONCURRENTE TEMA 6 Aplicaciones Concurrentes ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN

PROGRAMACIÓN CONCURRENTE Aplicaciones Concurrentes Introducción Aplicaciones con interfaz de usuario Aplicaciones Web Bases de datos Conclusiones Tema 6 - Aplicaciones Concurrentes 2

Introducción Cualquier aplicación se puede implementar con técnicas concurrentes Dependiendo del tipo de aplicación, se obtiene una ventaja u otra: Ofrecer un servicio interactivo a varios clientes/tareas Aprovechar la potencia de computación En sistemas multi-core Con tareas que esperan por entrada/salida Tema 6 - Aplicaciones Concurrentes 3

Introducción La gran mayoría de las aplicaciones que usamos a diario son concurrentes Aplicaciones con interfaz de usuario: Las librerías de interfaz de usuario siguen mayoritariamente la misma estructura de separación en hilos (servicio interactivo y facilidad de desarrollo) Aplicaciones web: Cada petición a un servidor web se procesa de forma concurrente (servicio interactivo) Bases de datos: Un sistema gestor de base de datos permite la ejecución de consultas de forma concurrente (servicio interactivo) Tema 6 - Aplicaciones Concurrentes 4

PROGRAMACIÓN CONCURRENTE Aplicaciones Concurrentes Introducción Aplicaciones con interfaz de usuario Aplicaciones Web Bases de datos Conclusiones Tema 6 - Aplicaciones Concurrentes 5

Aplicaciones con interfaz de usuario La mayoría de las librerías de interfaz de usuario se ejecutan en un solo hilo A este hilo se le denomina Hilo de despacho de eventos (Event dispatch thread) Todas las operaciones que utilicen elementos del interfaz (primer plano) deben realizarse en ese hilo Las operaciones en segundo plano deben realizarse en otro hilo para no bloquear la interfaz Tema 6 - Aplicaciones Concurrentes 6

Aplicaciones con interfaz de usuario Es habitual estudiar la programación dirigida por eventos en contraposición a la programación secuencial En la programación secuencial el programador define el flujo del programa de principio a fin En la programación dirigida por eventos el usuario dirige el flujo del programa interactuando con los elementos del interfaz Tema 6 - Aplicaciones Concurrentes 7

Tema 6 - Aplicaciones Concurrentes 8

Aplicaciones con interfaz de usuario La pantalla congelada o la pantalla en gris aparece cuando una tarea en el hilo de despacho de eventos dura mucho tiempo Las librerías de interfaz de usuario ofrecen mecanismos para ejecutar tareas en segundo plano que tardan cierto tiempo Estas tareas de segundo plano pueden actualizar el interfaz según progresan Tema 6 - Aplicaciones Concurrentes 9

Aplicaciones con interfaz de usuario Tema 6 - Aplicaciones Concurrentes 10

Aplicaciones con interfaz de usuario Páginas de interés: Concurrencia en Swing: http://docs.oracle.com/javase/tutorial/uiswing/concurrenc y/ http://java.sun.com/products/jfc/tsc/articles/threads/threa ds2.html Hilo de despacho de eventos: http://en.wikipedia.org/wiki/event_dispatching_thread Por qué Swing no es thread-safe: https://weblogs.java.net/blog/kgh/archive/2004/10/multit hreaded_t.html Tema 6 - Aplicaciones Concurrentes 11

PROGRAMACIÓN CONCURRENTE Aplicaciones Concurrentes Introducción Aplicaciones con interfaz de usuario Aplicaciones Web Bases de datos Conclusiones Tema 6 - Aplicaciones Concurrentes 12

Aplicaciones web Históricamente, en las aplicaciones web cada petición se procesa por un hilo diferente Esto permite ofrecer un servicio interactivo a cada cliente La calidad del servicio se degrada de forma paulatina El número total de hilos (peticiones concurrentes) se configura en el servidor web Tema 6 - Aplicaciones Concurrentes 13

Aplicaciones web Tener un hilo por cada petición presenta problemas de escalabilidad Si para procesar una petición se hace una consulta a la BBDD o a otro sistema, el hilo quedará a la espera la mayor parte del tiempo El número de hilos de una aplicación está limitado por diversos factores y no suele ser mayor de 10.000. http://en.wikipedia.org/wiki/c10k_problem Tema 6 - Aplicaciones Concurrentes 14

Aplicaciones web Para evitar la limitación y los problemas de escalabilidad, actualmente algunos servidores web no utilizan un hilo para procesar toda la petición Cuando se atiende una petición al servidor y se quiere hacer una operación de entrada/salida (por ejemplo una consulta a la BBDD), en vez de que el hilo quede bloqueado, define el código que se ejecutará cuando el resultado esté disponible (callback) En ese momento el hilo queda libre para atender a una nueva petición sin haber procesado completamente la anterior. Tema 6 - Aplicaciones Concurrentes 15

Aplicaciones web Este modelo de programación de servidores es muy popular en la actualidad con servidores como: Nginx: Servidor web escrito en C que dispone de módulos para PHP. Se usa sustituyendo a Apache Vert.x: Servidor programado en Java Node.js: Plataforma programada en JavaScript Tema 6 - Aplicaciones Concurrentes 16

Aplicaciones web Independientemente del tipo de servidor web, cuando se procesa una petición se puede acceder a varias zonas de memoria: ServletContext: Compartida entre las peticiones de todos los usuarios de la web HttpSession: Compartida entre las peticiones de un único usuario La información compartida tiene que ser threadsafe, porque varios hilos pueden acceder a su información concurrentemente Tema 6 - Aplicaciones Concurrentes 17

PROGRAMACIÓN CONCURRENTE Aplicaciones Concurrentes Introducción Aplicaciones con interfaz de usuario Aplicaciones Web Bases de datos Conclusiones Tema 6 - Aplicaciones Concurrentes 18

Bases de datos Las bases de datos son aplicaciones que están diseñadas para que varios clientes puedan realizar consultas de forma concurrente. Conceptualmente se puede considerar que cada consulta se ejecuta en un hilo Tema 6 - Aplicaciones Concurrentes 19

Bases de datos La implementación más sencilla sería poner toda la información bajo exclusión mutua, de forma que no hubiera interferencia entre hilos Pero esa implementación no sería escalable y tendría un rendimiento muy deficiente con muchas peticiones concurrentes Tema 6 - Aplicaciones Concurrentes 20

Bases de datos Las bases de datos se han optimizado para ofrecer el mejor rendimiento con la siguientes estrategias Bloqueos: El usuario indica el nivel de exclusión mutua de la base de datos: pesimista de toda una tabla, pesimista de una fila, optimista, etc. Transacciones: El usuario indica cuando comienza y cuando terminan las operaciones que deben ejecutarse de forma atómica. Si una operación no se puede realizar, se aborta (rollback) y se reintenta. Tema 6 - Aplicaciones Concurrentes 21

Bases de datos Existen varios tipos de bloqueos: Bloqueo pesimista: Los datos se bloquean para que no se puedan usar por una transacción mientras se están usando por otra transacción. Esta solución es como la exclusión mutua. Bloqueo optimista: Los datos no se bloquean. Cuando una transacción está a punto de terminar, se verifica si los datos que se han leído han cambiado durante la transacción. En ese caso, se reintenta la transacción desde el principio. https://es.wikipedia.org/wiki/control_de_concurrencia_optimista Tema 6 - Aplicaciones Concurrentes 22

Bases de datos Ventajas y desventajas de los tipos de bloqueo: Bloqueo pesimista: Puede limitar el rendimiento de la BBDD innecesariamente (si no hay muchas transacciones simultáneas o si no suelen usar los mismos datos) Bloqueo optimista: Ofrece mejor rendimiento si no hay muchas transacciones que usan los mismos datos, pero si eso ocurre, puede ser contraproducente. https://es.wikipedia.org/wiki/control_de_concurrencia_optimista Tema 6 - Aplicaciones Concurrentes 23

PROGRAMACIÓN CONCURRENTE Aplicaciones Concurrentes Introducción Aplicaciones con interfaz de usuario Aplicaciones Web Bases de datos Conclusiones Tema 6 - Aplicaciones Concurrentes 24

Conclusiones Cada tipo de aplicación tiene una arquitectura diferente que es muy relevante para la concurrencia Siempre que se desarrolle hay que tener en cuenta los aspectos concurrentes de la aplicación, aunque nosotros no estemos implementando nuestro código de forma concurrente Tema 6 - Aplicaciones Concurrentes 25