Programación Concurrente y distribuida

Documentos relacionados
Evaluación de los aprendizajes Elabora un cuadro comparativo con las principales características del lenguaje de programación Java.

ESCUELA DE INGENIERIA Informática Y Sistemas

Compiladores y Lenguajes de Programación. Maria de Guadalupe Cota Ortiz

INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos

Grado en Ingeniería de Computadores Universidad de Alcalá 2015/2016 3º Curso 2º Cuatrimestre

ANEXO XVII DE LA RESOLUCION N

PROGRAMACION CONCURRENTE

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

Desarrollador de Aplicaciones Web con Java

Threads, SMP y Microkernels. Proceso

Programa Oficial de Asignatura. Ficha Técnica. Presentación. Competencias y/o resultados del aprendizaje. Contenidos Didácticos

1. Computadores y programación

PROGRAMA DE CURSO. Escuela de Ingeniería de Sistemas y Computación Universidad del Valle Santiago de Cali, Colombia. Febrero 2007

POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015 HORAS POR SEMANA DEL LABORATORIO: DIAS QUE SE IMPARTE EL LABORATORIO:

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

Introducción a PL/SQL

Concurrencia: Exclusión mutua y Sincronización

GRADO EN INGENIERÍA INFORMÁTICA

AREA A LA QUE PERTENECE: 103 Matemática Básica 2 34 créditos POST REQUISITO: CATEGORIA: Obligatorio SEMESTRE: Primer Semestre 2015

Cada enfoque tiene sus ventajas y desventajas Cada uno es más apropiado para ciertas cosas

Estructuras de Control

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Bases Formales de la Computación

MANUAL DE PRÁCTICAS DEL TALLER DE PROGRAMACIÒN PRACTICA NO.6

Lenguaje de programación con JAVA

Principios de Programación en Java

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE CIENCIAS Y SISTEMAS

DIAGRAMAS DE ACTIVIDAD SESION 9. Cap. 9 Kendall & Kendall Cap 5 Jacobson

Diferentes Perspectivas de un Ordenador

POSGRADO EN DESARROLLO DE APLICACIONES PARA ANDROID CON JAVA


Tema 7. Generación de código

UNIVERSIDAD DE GUADALAJARA

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

UNIVERSIDAD AUTÓNOMA DE CHIHUAHUA Clave: 08MSU0017H. Clave: 08USU4053W FACULTAD DE INGENIERÍA. Programa del curso: SISTEMAS OPERATIVOS

Evolución del software y su situación actual

Programación Orientada a Objetos Profr. Pedro Pablo Mayorga

INTRODUCCION A LA PROGRAMACIÓN ORIENTADA A OBJETOS

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

Universidad Centroccidental Lisandro Alvarado. Decanato de Ciencias y Tecnología Departamento de Sistemas

Generación de Código Intermedio

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION

Estructuras de control

Resultado de Aprendizaje:

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA PROGRAMA DE ESTUDIO

Programación Funcional Lisp-DrScheme Primera Parte. Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad de Nacional

Curso Programación Java JSE 7

Universidad Autónoma de Baja California Facultad de Ciencias Administrativas Unidad Mexicali

5. Sentencias selectivas o condicionales

Concurrencia y paralelismo

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Resolución de Problemas

Tema: Autómata de Pila

INDICE Parte I. Conceptos 1. El estudio de los lenguajes de programación 2. Cuestiones de diseño de lenguajes

PREGUNTAS INFORMÁTICA MONITOR UPB EXAMEN 1

Programación concurrente

Java para no Programadores

T5-multithreading. Indice

Fundamentos de Sistemas Operativos

Ingeniería del Software I

Usando el Sistema Operativo

Es un conjunto de palabras y símbolos que permiten al usuario generar comandos e instrucciones para que la computadora los ejecute.

ANX-PR/CL/ GUÍA DE APRENDIZAJE. ASIGNATURA Concurrencia. CURSO ACADÉMICO - SEMESTRE Segundo semestre

PROGRAMA DE ASIGNATURA DE

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

JAVA 7 Los fundamentos del lenguaje Java

Diseño arquitectónico 1ª edición (2002)

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

Esta asignatura apoyará al alumno en la consecución de las siguientes competencias:

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Introducción Sistemas Operativos Avanzados

Configuración Y Programación de Autómata MOELLER XC201 para Maqueta Industrial

23/09/2009. Introducción Hello word La familia Buendía Recursión Listas

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

Compiladores: Generación de Código. Pontificia Universidad Javeriana Cali Ingeniería de Sistemas y Computación Prof. María Constanza Pabón

Universidad Autónoma del Estado de México Facultad de Medicina

Programa de actualización profesional ACTI.NET Desarrollo de aplicaciones locales y web con tecnología VB.NET 2010

La Máquina de Acceso Aleatorio (Random Access Machine)

ESTRUCTURAS DE CONTROL

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

Tema 3. Monitores Programación Concurrente

un programa concurrente

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

Modelos de Programación Paralela Prof. Gilberto Díaz

FACULTAD DE INGENIERÍA

1. Preparar al estudiante para desarrollar aplicaciones de software utilizando un enfoque orientado a objetos.

Evolución de la Programación Orientada a Objetos

2.2 Nombres, Ligado y Ámbito

Maestría en Ingeniería Énfasis en Sistemas y Computación

Examen. Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. Segundo Semestre, 2003.

Computación I Curso 2016 Facultad de Ingeniería Universidad de la República

Introducción a PL/SQL

Algoritmos y programas. Algoritmos y Estructuras de Datos I

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

AUTOMATIZACIÓN INDUSTRIAL

Programación con C Intermedio

Transcripción:

Working Hypothesis Programación Concurrente y distribuida Camilo Rueda 1 1 Universidad Javeriana-Cali 1 de febrero de 2010

Motivación Working Hypothesis Premisa El contexto de aplicación de la Ingeniería de Software está cambiando

Motivación Working Hypothesis Premisa El contexto de aplicación de la Ingeniería de Software está cambiando CPU multi-núcleo

Motivación Working Hypothesis Premisa El contexto de aplicación de la Ingeniería de Software está cambiando CPU multi-núcleo Programas en la web

Motivación Working Hypothesis Premisa El contexto de aplicación de la Ingeniería de Software está cambiando CPU multi-núcleo Programas en la web Dispositivos móviles programables

Motivación Working Hypothesis Premisa El contexto de aplicación de la Ingeniería de Software está cambiando CPU multi-núcleo Programas en la web Dispositivos móviles programables Programas interactuan con el mundo físico

Motivación (cont) Working Hypothesis Conceptos, modelos, técnicas y metodologías deben adaptarse

Motivación (cont) Working Hypothesis En software tradicional: Conceptos, modelos, técnicas y metodologías deben adaptarse Concepto Modelo Técnica Modularidad Tipo abstracto de datos Clase

Motivación (cont) Working Hypothesis En el nuevo contexto: Conceptos, modelos, técnicas y metodologías deben adaptarse Concepto Modelo Técnica Proceso objeto activo Puerto+cola de mensajes Localidad...... Exclusión mutua...... Imparcialidad ( fairness )...............

Working Hypothesis Por qué nuevas metodologías? Ejemplo: Exclusión mutua P 1 l 0 : loop forever do l 1 : sección no crítica l 2 : s := 1; l 3 : y 1 := 1; l 4 : wait (y 2 = 0) (s 1); l 5 : sección crítica l 6 : y 1 := 0 od P 2 m 0 : loop forever do m 1 : sección no crítica m 2 : s := 2; m 3 : y 2 := 1; m 4 : wait (y 1 = 0) (s 2); m 5 : sección crítica m 6 : y 2 := 0 od ejecutar : s := 1; y 1, y 2 := 0, 0; [P 1 P 2 ] funciona?

Working Hypothesis Por qué nuevas metodologías? Ejemplo: Exclusión mutua P 1 l 0 : loop forever do l 1 : sección no crítica l 2 : s := 1; l 3 : y 1 := 1; l 4 : wait (y 2 = 0) (s 1); l 5 : sección crítica l 6 : y 1 := 0 od P 2 m 0 : loop forever do m 1 : sección no crítica m 2 : s := 2; m 3 : y 2 := 1; m 4 : wait (y 1 = 0) (s 2); m 5 : sección crítica m 6 : y 2 := 0 od funciona? Exactamente por qué? ejecutar : s := 1; y 1, y 2 := 0, 0; [P 1 P 2 ]

Working Hypothesis Por qué nuevas metodologías? Ejemplo: Exclusión mutua P 1 l 0 : loop forever do l 1 : sección no crítica l 2 : y 1 := 1; l 3 : s := 1; l 4 : wait (y 2 = 0) (s 1); l 5 : sección crítica l 6 : y 1 := 0 od P 2 m 0 : loop forever do m 1 : sección no crítica m 2 : y 2 := 1; m 3 : s := 2; m 4 : wait (y 1 = 0) (s 2); m 5 : sección crítica m 6 : y 2 := 0 od ejecutar : s := 1; y 1, y 2 := 0, 0; [P 1 P 2 ] funciona?

Working Hypothesis Por qué nuevas metodologías? Ejemplo: Exclusión mutua P 1 l 0 : loop forever do l 1 : sección no crítica l 2 : y 1 := 1; l 3 : s := 1; l 4 : wait (y 2 = 0) (s 1); l 5 : sección crítica l 6 : y 1 := 0 od P 2 m 0 : loop forever do m 1 : sección no crítica m 2 : y 2 := 1; m 3 : s := 2; m 4 : wait (y 1 = 0) (s 2); m 5 : sección crítica m 6 : y 2 := 0 od funciona? Exactamente por qué? ejecutar : s := 1; y 1, y 2 := 0, 0; [P 1 P 2 ]

Estrategia del curso Working Hypothesis Presentar con cada concepto de programación concurrente y distribuida, sus modelos y tecnologías

Estrategia del curso Working Hypothesis Para los modelos Presentar con cada concepto de programación concurrente y distribuida, sus modelos y tecnologías Formalizarlos en un lenguaje de núcleo extendible, el Kernel Oz

Estrategia del curso Working Hypothesis Para los modelos Presentar con cada concepto de programación concurrente y distribuida, sus modelos y tecnologías Formalizarlos en un lenguaje de núcleo extendible, el Kernel Oz Para las técnicas Programarlas en el lenguaje de núcleo, construir aplicaciones

El Lenguaje de núcleo Working Hypothesis Lenguaje de programación minimal: con el mínimo de construcciones necesarias para representar un concepto

El Lenguaje de núcleo Working Hypothesis Lenguaje de programación minimal: con el mínimo de construcciones necesarias para representar un concepto Expresivo

El Lenguaje de núcleo Working Hypothesis Lenguaje de programación minimal: con el mínimo de construcciones necesarias para representar un concepto Expresivo Implementable e implementado

El Lenguaje de núcleo Working Hypothesis Lenguaje de programación minimal: con el mínimo de construcciones necesarias para representar un concepto Expresivo Implementable e implementado Simple

El Lenguaje de núcleo Working Hypothesis Lenguaje de programación minimal: con el mínimo de construcciones necesarias para representar un concepto Expresivo Implementable e implementado Simple Modular (o incrementable )

El Lenguaje de núcleo Working Hypothesis Lenguaje de programación minimal: con el mínimo de construcciones necesarias para representar un concepto Expresivo Implementable e implementado Simple Modular (o incrementable ) Reaĺısticamente cercano a lenguajes existentes

El Lenguaje de núcleo Working Hypothesis Lenguaje de programación minimal: con el mínimo de construcciones necesarias para representar un concepto Expresivo Implementable e implementado Simple Modular (o incrementable ) Reaĺısticamente cercano a lenguajes existentes Semántica precisa Nombre de moda: framework

Working Hypothesis El KL Oz: modelo declarativo < st > ::= < st 1 > < st 2 > secuencia de comandos local < var > in < st > end variable local if < var > then < st 1 > condicional else < st 2 > end case < var > of casos < patron > then < st 1 > [ ] < patron k > then < st k > else < st > end {< var > < arg 1 >... < arg n > } llamado a procedimiento Por qué no hay declaración de procedimientos?

Working Hypothesis El KL Oz: modelo declarativo < st > ::= < st 1 > < st 2 > secuencia de comandos local < var > in < st > end variable local if < var > then < st 1 > condicional else < st 2 > end case < var > of casos < patron > then < st 1 > [ ] < patron k > then < st k > else < st > end {< var > < arg 1 >... < arg n > } llamado a procedimiento Por qué no hay declaración de procedimientos? son valores: < valor >::=< numero > < registro > < proced > < proced >::= proc { $ < arg 1 >... < arg n >} < st > end

Working Hypothesis Por qué KL en el curso Por ser dispositivo de cómputo: refuerza conceptos teóricos viendo su realización práctica es a la vez riguroso, simple y práctico. Puede cubrir varios paradigmas de programación Puede aumentarse para distintos modelos de computación: Programación concurrente Programación distribuida

Working Hypothesis Modelos de computación (versión PVR&SH) Declarativo ((, un poco) Abstracción procedimental y recursión Evaluación perezosa Programación de alto orden Lenguajes: ML ( caml) Estado expĺıcito (imperativo) Funciones con memoria Tipos abstractos de datos Lenguajes: C Concurrente declarativo o dirigido por datos ( ) Programación multi-hilos ( ) Flujos (streams) ( ) Sincronización de procesos ( )

Modelos (2) Working Hypothesis Concurrencia por paso de mensaje ( ) Asincronía ( ) Puertos ( ) Agentes ( ) Lenguajes: Earlang ( ) Orientado-objetos Herencia Clase, objeto Lenguajes: Java, Eiffel, C++, et al. Concurrencia de estado compartido ( ) Candados ( ) Monitores ( ) Transacciones ( ) Lenguajes: Java concurrente ( )

Modelos (3) Working Hypothesis Programación distribuida ( ) Distribucón de datos ( ) istribución de estado ( ) Patrones de programación distribuida ( ) Protocolos distribuidos ( ) Manejo de fallas ( ) aspectos de seguridad ( ) Movilidad (?)

Objetivos generales Working Hypothesis Saber diseñar programas concurrentes y distribuidos Poder razonar formalmente sobre un programa concurrente o distribuido Conocer cómo verificarlos Poder implementar un programa concurrente o distribuido usando el lenguaje de núcleo

Working Hypothesis Programa concurrente vs secuencial Secuencial: Observables: Parejas de estados iniciales y finales i.e. Valores de las variables de entrada/salida El cómo se llega al estado final no importa Hay un solo camino posible al estado final Concurrente: Estados intermedios son tan importantes como los finales (sincronización) Observables: Conjunto de variables que ocurren en un componente Conjunto de variables con las que se comunica

Working Hypothesis Semántica de la concurrencia traza: una secuencia particular de transiciones atómicas de estado σ 0 α 1 σ 1 α 2... α i σ i α i+1 σ i+1 σ i : Estados α i : acciones atómicas α 1 α 2... es un intercalamiento (interleaving). Corresponde a una historia del proceso Semántica de un programa: conjunto de todas sus historias posibles

Working Hypothesis Cómo razonar sobre prog. concurrentes? Inspeccionar cada historia?

Working Hypothesis Cómo razonar sobre prog. concurrentes? Inspeccionar cada historia? son demasiadas!!

Working Hypothesis Cómo razonar sobre prog. concurrentes? Inspeccionar cada historia? son demasiadas!! Mejor: Representar conjuntos enteros de trazas por sus propiedades un predicado representa un conjunto de estados Un programa es una relación entre predicados

Working Hypothesis Cómo involucrar sincronización? La comunicación permite a un proceso influir sobre otro Posibilidades: Variables compartidas Paso de mensajes (canales compartidos) Esquemas de sincronización: Exclusión mutua Sincronización condicional Comunicación síncrona

Ejemplo Working Hypothesis ENVIA BUFFER RECIBE Exclusión mutua entre envío y recepción Sincronización condicional: Evitar que el mismo mensaje se envíe dos veces. Protocolo de comunicación: sincronía.

Working Hypothesis Semántica operacional del KL Las variables son de asignación única La asociación de variables con valores se mantiene en el almacén ( store ) El store está compuesto de entidades: variables con sus valores.

Working Hypothesis Identificadores y variables Los identificadores son las variables del usuario en un programa Un identificador referencia una entidad del store

Working Hypothesis Tipos en el modelo declarativo

Working Hypothesis Máquina abstracta de KL Un store de asignación única σ: conjunto de variables x 1,..., x k Un Ambiente E: función de identificadores a variables del store { x 1 x 1,... x n x n, } Una Instrucción Semántica: pareja ( s, E) s: instrucción E: ambiente Un estado de ejecución: pareja (ST, σ) ST : pila de instrucciones semánticas Una computación: secuencia de estados de ejecución, a partir de un estado inicial (ST 0, σ 0 ) (ST 1, σ 1 ) (ST 2, σ 2 )...

Working Hypothesis Ejecución de un programa El estado de ejecución inicial es [( s, )], ). La instrucción semántica inicial es ( s, ) con un ambiente vacío, y el store inicial es vacío En cada paso de ejecución, el primer elemento de ST se saca de la pila y la ejecución prosigue según la forma del elemento El estado final (si existe) es en el que la pila semántica está vacía. Una pila semántica puede estar en uno de los estados: corriendo: ST puede hacer un paso de ejecución terminado: ST es vacío suspendido: ST no es vacío, pero no puede ejecutar un paso

Working Hypothesis Ejemplo: instrucción local Instrucción semántica: (local x in s end, E) La ejecución consiste de las acciones siguientes: Crear una variable x nueva en el store Agregar a la pila ( s, E + { x x})

Ejemplo: instrucción if Working Hypothesis Instrucción semántica: (if x then s 1 else s 2 end, E) Esta instrucción tiene una condición de activación: E( x ) debe estar determinado, i.e. ligado a número, registro o procedimiento La ejecución consiste de las acciones siguientes: Si la condición de activación se cumple, entonces si E( x ) no es un booleano, levante condición de error si E( x ) es verdadero, agregar a la pila ( s 1, E) si E( x ) es falso, agregar a la pila ( s 2, E) Si la condición de activación no se cumple, se suspende la ejecución Si otra actividad hace la condición de activación cierta, la ejecución puede continuar. Esto permite programación de flujo de datos (concurrencia declarativa)

Working Hypothesis Ejemplo: procedimientos Un valor procedimental es una pareja: (proc {$ y 1... y n } s end, CE) donde CE (el ambiente contextual) es el ambiente en el que se definió el procedimiento En un llamado a procedimiento ({ x x 1... x n }, E): Si E( x ) es de la forma (proc { y 1... y n } s end, CE), entonces agregue a la pila ( s, CE + { y 1 E( x 1 ),..., y n E( x n )}) Esto permite programación de alto orden como en lenguajes funcionales

Working Hypothesis Importancia del modelo declarativo Un programa declarativo puede particionarse en componentes que pueden escribirse, chequearse y probar su corrección independientemente de los otros Hay técnicas simples de razonamiento para construir programas

tarea Working Hypothesis Asegurar conocimientos básicos de Mozat: leer libro PVR, cap 2 (hasta 2.7 ) Escriba la ejecución formal del programa local Op W in proc {Op X Y F R} if X > Y then R = {F X Y }else R = {F Y X } end end {Op 7 5 fun {$ X Y } X Y end W } end

Working Hypothesis Primeros programas en Oz (archivo primeros.oz)