ADA: lenguaje de programación concurrente

Slides:



Advertisements
Presentaciones similares
Capitulo 7: Procesamiento batch y el Job Entry Subsystem (JES)
Advertisements

Métodos de diseño en VHDL.
Programación de Computadores
SENTENCIAS SECUENCIALES
Sesión 2 Programación Estructurada
Manejo de errores y excepciones
LÓGICA DE PROGRAMACIÓN
PROGRAMACIÓN.
Lenguajes de programación
Metodología de la Programación
Daniel Morillo Jorge Boscán Gregory Carrasco
Programación modular Procedimientos y Funciones
Resolución de Problemas y Algoritmos Buffer - Read & Readln
Presentación Asignatura POF030 Semana 1. Contenido En forma general, los conceptos que se estudiarán en la asignatura son: – Procedures – Functions –
DIAGRAMAS DE FLUJO Y PSEUDOCÓDIGO
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Módulo 5: Estructuras de Decisión y Bucles
Herramientas Grep y AWK
Un lenguaje de programación para sistema empotrados
EXCEPCIÓN DE ERRORES.
Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Tipos definidos por el usuario –Parámetros array ilimitados.
Preguntas tipo test (I)
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
UNITA - IBARRA BLOQUES PL-SQL SUBPROGRAMAS Paulina Guevara.
Metodología para la Construcción de Programas
2 Acciones y funciones 2.1 Concepto
MÓDULO DE PROCEDIMIENTOS Los módulos también pueden contener subrutinas y funciones → MÓDULO DE PROCEDIMIENTOS  PROCEDIMIENTOS → son compilados como parte.
Funciones en lenguaje C
Desarrollo de aplicaciones para la sociedad de la información Bloque II- Dominios de aplicaciones sociales Tema 3- Gestión de procesos de negocio Máster.
PL/SQL Francisco Moreno Universidad Nacional.
TRAMPAS EN EL DISEÑO DE LENGUAJES CON RELACIÓN A LOS NOMBRES - REGLAS DE ALCANCE - COMPILACIÓN POR SEPARADO CONTROL DE FLUJO - EVALUACIÓN DE EXPRESIONES.
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
Fundamentos de Programación
PRÁCTICA INVENTADA TOP MANTA Matías Blanco – Sergio Pérez.
VHDL.
ESTRUCTURAS CONTROL SECUENCIAL
FORMULACIÓN DE ALGORITMOS
Semana 5 Subprogramas..
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
PROCEDIMIENTOS FUNCIONES
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Cobol C Pascal Fortran 5. UNIDADES DE PROGRAMAS SmallTalk Java C++
1 Concurrencia Procesos y Programas. 2 Establecer Comunicación entre procesos (memoria común)
Sintaxis.
Conversión cadena a número
1.1 Concepto y terminología
Programación I Universidad Nacional de Luján
INSTITUTO TECNOLOGICO SUPERIOR DE TAMAZUNCHALE INTEGRANTES: MAXIMO HERNANDEZ BAUTISTA CLAUDIA JIMENEZ PROCOPIO ANA LUZ RODRIGUEZ JONGUITUD LEONEL AQUINO.
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Resolución de Problemas y Algoritmos Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca - Argentina.
Diseño lógico combinacional mediante VHDL
Módulo 8: Manejo de Errores y Excepciones
Sincronización de Procesos
Ada 2º Parte (variables, ámbitos , subrutinas , tipos abstractos de datos y excepciones)
Concurrencia en Ada.
Monitores Cabudare, noviembre de 2010 Universidad Fermín Toro
Introducción a VHDL Agenda Un poco de historia Definiciones generales Entidades Arquitecturas Configuraciones.
Agenda Clase 11 Parametrización. Pasaje de parámetros (modos). Razones de escogencia entre modos. Clausuras como parámetros. Etiquetas, Conformat Arrays,
COMPUTO III Ing. Jimmy Ojeda Arnica.
Metodología de la programación
1 5. UNIDADES DE PROGRAMAS. 2 Uso de mecanismos de control de secuencia de: Invocaciones Retornos Entre: PPSP 1 a) I R SP 1 SP 2 b) I R Unidades subordinadas.
Visual Basic FUNCIONES Y PROCEDIMIENTOS
LA ARQUITECTURA O LA FUNCIONALIDAD DEL SISTEMA DefiniciónDefiniciónDefinición Declaración y reglas sintácticas.Declaración y reglas sintácticas.Declaración.
27 de marzo de 2010 Presentan: Díaz Orea Elizabeth Leal Alvarado Angelina.
5 Paquetes ORACLE Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca Ing. Wilson Ortega.
Ciclos en Visual Basic Yaimira Pérez. Los ciclos son estructuras de repetición que ejecutan una o varias instrucciones durante la cantidad de veces que.
Este material ha sido desarrollado para alumnos que cursan la asignatura de Programación Básica impartida en el primer semestre en la Facultad de Ingeniería.
Curso de programación Visual Chart 6 (1ªEd.)
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

ADA: lenguaje de programación concurrente

Introducción El desarrollo de ADA ha sido patrocinado por el gobierno de los Estados Unidos Estándar en 1983 / orientado a objetos 1995 (ADA95) Un usuario puede establecer tareas diferentes Cita(Rendezvous): exclusión mutua, sincronización y comunicación entre tareas

Tareas La especificación describe la interfaz con otras tareas task T is … end T; Si no presenta ninguna interfaz: task T; En el cuerpo se describe el comportamiento dinámico task body T is … end T;

Ejemplo COMPRA Solución secuencial para comprar CARNE, ENSALADA y VINO procedure COMPRAR is begin COMPRAR_CARNE; COMPRAR_ENSALADA; COMPRAR_VINO; end;

Ejemplo COMPRA (concurrente) Procedure COMPRAR is task OBTENER_ENSALADA; task body OBTENER_ENSALADA is begin COMPRAR_ENSALADA; end OBTENER_ENSALADA; task OBTENER_VINO; task body OBTENER_VINO is COMPRAR_VINO; end OBTENER_VINO; COMPRAR_CARNE; end COMPRAR; Una tarea se activa de forma automática al llegar al comienzo del procedimiento. El procedimiento no termina hasta que no terminen todas las tareas dependientes de él.

La cita La cita entre dos tareas se produce como consecuencia de la llamada de una tarea a un punto de entrada declarado en otra tarea. Se declara en la especificación: task T is entry E(…); end; Llamada desde otra tarea: T.E(…); No puede tener un resultado

La cita: sentencia accept Describe el conjunto de sentencias que se ejecutan durante la cita Se encuentra en el cuerpo de la tarea donde se declaró el punto de entrada accept E(…) do -- conjunto de sentencias end E;

¿Qué ocurre en la cita? La tarea que llama al punto de entrada no es la que ejecuta las sentencias asociadas (las ejecuta la tarea a la que pertenece el punto de entrada) No se ejecuta inmediatamente task body T1 is task body T2 is : : accept E(…) do T1.E(…); … : end E; end T2; : end T1;

Buffer de un único elemento Task BUFFERING is entry DEPOSITAR(X: in ITEM); entry RETIRAR(X: out ITEM); end; task body BUFFERING is V: ITEM; begin loop accept DEPOSITAR(X: in ITEM) do V:= X; end DEPOSITAR; accept RETIRAR(X: out ITEM) do X:= V; end RETIRAR; end loop; end BUFFERING Llamada: BUFFERING.DEPOSITAR(…); BUFFERING.RETIRAR(…);

Más sobre puntos de entrada Cada punto de entrada tiene una cola de tareas que esperan llamar al punto de entrada. Si hay varias tareas llamando a un punto de entrada, éstas serán encoladas. La cola puede estar vacía. Cada ejecución de la sentencia accept retira una tarea de la cola. Puede no tener parámetros: entry SENYALAR; -- declaración T.SENYALAR; -- llamada La sentencia accept no necesita tener cuerpo: accept SENYALAR; Si una tarea llama a uno se sus puntos de entrada: INTERBLOQUEO

Sentencia SELECT loop Task VAR_PROTEGIDA is select accept LEER(X: out ITEM) do X:= V; end LEER; or accept ESCRIBIR(X: in ITEM) do V:= X; end ESCRIBIR; end select; end loop; end VAR_PROTEGIDA; Task VAR_PROTEGIDA is entry LEER(X: out ITEM); entry ESCRIBIR(X: in ITEM); end; task body VAR_PROTEGIDA is V: ITEM; begin accept ESCRIBIR(X: in ITEM) do V:= X; end ESCRIBIR;

Condiciones de guarda loop select Task BUFFERING is when CUENTA<N => accept DEPOSITAR(X: in ITEM) do BUF(ENT):= X; end DEPOSITAR; ENT.= (ENT+1) mod N; CUENTA:=CUENTA+1; or when CUENTA>0 => accept RETIRAR(X: out ITEM) do X:= BUF(SAL); end RETIRAR; SAL:= (SAL+1) mod N; CUENTA:= CUENTA -1; end select; end loop; end BUFFERING; Task BUFFERING is entry DEPOSITAR (X: in ITEM); entry RETIRAR (X: out ITEM); end; task body BUFFERING is N: constant:= 8; BUFF: array (0..N-1) of ITEM; ENT,SAL: INTEGER range 0..N-1:=1; CUENTA: INTEGER range 0..N:=0; begin

Más sobre condiciones de guarda Si no existe, la condición del select se considera como cierta. Se vuelven a evaluar en cada comienzo del select. No es seguro que se siga cumpliendo cuando se produzca la cita (por ejemplo si se utilizan variables globales). Se produce un error si ninguna de las guardas es correcta.

Otras formas de SELECT select llamada / accept else conjunto de sentencias end select; or delay tiempo; select llamada / accept else delay tiempo; conjunto de sentencias end select;