Programación de Sistemas Concurrentes y Distribuidos 2 a Convocatoria curso 12/13

Documentos relacionados
Lección 6: Ejemplos de programación con semáforos

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

PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES.

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

Concurrencia. Primitivas IPC con bloqueo

Primitivas de Sincronización (continuación) MONITORES: Primitiva de alto nivel, es a nivel de lenguajes como: ADA, PASCAL, JAVA.

Concurrencia Monitores. Guillermo Román Díez

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

Lección 10: Ejemplos de programación con semáforos

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

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

Comunicación y sincronización

PRINCIPIOS DE PROGRAMACIÓN. Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Examen de Ingeniería del Software / 3º de Informática de Gestión EXAMEN 2º CUATRIMESTRE 16 de junio de 2005

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

Programación en java. Estructuras algorítmicas

Y alternativamente se presentarán soluciones de problemas donde se utilicen:

FACULTAD DE INGENIERIA

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Lección 7: Sincronización de procesos mediante monitores

Lección 1: Introducción a la Programación de Sistemas Concurrentes y Distribuidos

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Programación Concurrente y distribuida

Ejercicios con Monitores

Tema 2 Introducción a la Programación en C.

Bloque 2. Algoritmos y pseudocódigo

DISEÑO DE UNA METODOLOGÍA DOCENTE

Programación Estructurada

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

Guía práctica de estudio 06: Estructuras de repetición

ESTRUCTURA DE ASIGNACIÓN

Cuáles son los lenguajes que pueden utilizarse para programar Karel?

Estructuras de control Agosto de Facultad de Ingeniería. Universidad del Valle

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

Área: INFORMÁTICA. Saber- Saber: Identificar DFD como herramienta para escribir los algoritmos de forma lógica.

Autoestudio 2: Variables y Operadores

Acceso Directo a Memoria

Funciones: Pasos por Referencia Recursividad

Concurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi

Ejercicio del Mecánico

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

Tema 3. Estructuras de Datos

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

EI MT1008 Programación II

Examen escrito de Programación 1

Estructuras en LabVIEW.

Calidad del Software. Ejercicios Tema 4 Conceptos de pruebas

Manual de turbo pascal

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

*** SOLUCIONES *** SISTEMAS OPERATIVOS Examen Parcial 24 de Abril de 2010

Programación I. Ingeniería Técnica Informática. Ejercicios de los Temas 4, 5, 6 y 7

BACHILLERATO TÉCNICO VOCACIONAL EN DESARROLLO DE SOFTWARE

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

Programación concurrente y semáforos en Java

ESTRUCTURAS DE CONTROL

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Estructura de Datos y de la Información

Tema 5. Soporte lógico de computadoras.

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

Solución de Examen de Comunicación de Datos

Manual de Usuarios: Sistema de Registro de Alfabetizados y Cursos del Plan Nacional de Alfabetización Tecnológica (PNAT)

APUNTES DE CÁTEDRA: ARREGLOS MULTIDIMENSIONALES

Sesión 3: Modelo temporal: VHDL concurrente. S3 1 Laboratorio de Estructura de Computadores Curso 04 / 05

Java para no Programadores

APELLIDOS, Nombre: // Resto de s e r v i c i o s p ú b l i c o s e n t r e l o s que s e e n c u e n t r a n i n s e r t a r y // b o r r a r //...

Sistemas distribuidos

Estructuras de Repetición

Concurrencia de Procesos

Conocimientos previos

DII. 1. (5 Puntos) Dada la clase Punto con la siguiente interfaz ya implementada

o Los arreglos son colecciones ordenadas de datos del mismo tipo. o Ejemplos: 2

Universidad de Cádiz Escuela Superior de Ingeniería. Ingeniería Técnica en Informática de Gestión

Tema 2. Concepto de Algoritmo

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

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

PRÁCTICA #6 TIPOS DE DATOS ESTRUCTURADOS: Arreglos, Registros y Archivos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Estructuras de control

Tecnología Creativa. 1º ESO Contenidos Criterios de evaluación Estándares de aprendizaje evaluables Bloque 1. El proceso creativo en tecnología

Programación orientada a objetos

Escuela de Ingeniería en Informática Empresarial SYLLABUS

FUNDAMENTOS DE INFORMÁTICA

Bases Formales de la Computación

TEMA 4: Programación estructurada

Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres de funciones especiales.

Segundo Parcial Julio 2016

Lecturas: Ben-Ari, secciones 4.1, 4.2, 4.3, 4.6 Andrews, intro. cap. 4 y sección 4.1. Exclusión mutua con semáforos

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Programación concurrente

Programación Estructurada

Guía para la elaboración de carta descriptiva

Asignaturas antecedentes y subsecuentes

Modelo Dinámico del Diseño del Software y Representación en UML. UNIDAD 9 Análisis y Diseño de Sistemas de Información

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

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

Principios de Programación en Java

5. ESTRUCTURAS DE REPETICIÓN

Master en Java Certificación para Programadores

Transcripción:

Programación de Sistemas Concurrentes y Distribuidos 2 a Convocatoria curso 12/13 13 de septiembre de 2013 Dpto. de Informática e Ingeniería de Sistemas Universidad de Zaragoza Ejercicio 1 (2.0 ptos.) Considérese el siguiente programa concurrente: -- ------------------------------------------------------- semaphore mt_2 := 2 process P(i :1..3):: loop forever wait ( mt_2 ) --SC signal ( mt_2 ) end loop end process -- ------------------------------------------------------- El ejercicio pide: Dar un modelo red de Petri correspondiente al programa A partir del modelo anterior, construir su espacio de estados Basándonos en el espacio de estados del modelo, responder razonadamente si se cumplen las siguiente propiedades: 1

El programa nunca de bloquea, ni total ni parcialmente Nunca los tres procesos pueden estar simultáneamente en la sección crítica, pero sí que puede llegar a haber dos El programa es equitativo, en el sentido de que en toda historia, todo proceso acaba ejecutándose Ejercicio 2 (2.0 ptos.) Un hotel dispone de una sala de ordenadores que consta de 10 máquinas dedicadas exclusivamente a la consulta del correo electrónico y 5 máquinas más para acceder únicamente a servicios turísticos de la zona. En el hotel hay actualmente alojados 100 huéspedes. Todos se comportan de forma similar durante su estancia. La mañana la pasan en la piscina, aunque en algún momento concreto se acercan a la sala de ordenadores a consultar el correo. Una vez leído, vuelven a la piscina. Al mediodía, vuelven de nuevo a la sala de ordenadores para planificar su excursión vespertina, consultando los servicios turísticos accesibles a través de la red. Finalmente, dedican la tarde a hacer la excursión planificada. Dado el uso continuo que se hace de la sala de ordenadores, el hotel tiene contratado a un administrador de sistemas. Éste lleva control de los ordenadores que ha mantenido. Primero revisa una a una y de forma ordenada las máquinas dedicadas al correo electrónico. Posteriormente, realiza la misma tarea con las máquinas de consulta de servicios turísticos. Una vez finalizada esta revisión, repite el comportamiento previo. Se pide escribir un programa concurrente que simule el funcionamiento del sistema descrito. En primer lugar se deberá programar un monitor que gestione el uso de las máquinas disponible y la sincronización necesaria entre los huéspedes y el administrador. Desde el punto de vista del monitor, todos los procesos que forman en sistema (huéspedes y administrador) tienen la misma prioridad a la hora de asignarles una máquina libre que se ajuste a sus necesidades. Posteriormente, se deberán programar un proceso huésped y un proceso administrador, conforme a las condiciones previamente descritas. Dado que el administrador tiene interés en hacer uso de una máquina concreta en cada ocasión, estás deberán estar identificadas de forma única desde el punto de vista del monitor (que es quien las gestiona) y del propio proceso administrador. Finalmente, se ofrecen dos pistas útiles de cara al diseño y programación de la solución: Cuando el proceso huésped solicita usar una máquina, el monitor debe identificarle qué máquina concreta le ha sido asignada. El proceso guardará este identificador localmente para especificar posteriormente qué máquina libera. El monitor necesita identificar las máquinas y saber cuáles están siendo usadas. Esto puedo ser programado por medio de una estructura tipo array de booleanos, 2

donde el índice representa el identificador de la máquina. Ejercicio 3 (2.0 ptos.) Debido a las múltiples averías, en la facultad hay disponible un único baño. Ante esta circunstancia, se ha decidido que temporalmente sea utilizado tanto por hombres como por mujeres. No obstante, se ha restringido que personas de ambos sexos puedan utilizar simultáneamente el baño. De todas formas, el baño es suficientemente grande como para ser utilizado por todos los hombres o todas mujeres que están en la facultad. Dentro del edificio, actualmente hay 50 hombres y 50 mujeres. Independientemente del sexo, todos ellos se comportan de una manera similar. Durante un número indefinido de veces, trabajan un tiempo aleatorio, entran al baño (si es posible, de manera inmediata; y, caso contrario, esperan hasta que sea posible), están dentro un tiempo cualquiera, y salen del baño para seguir con su trabajo. Todas las personas conocen las nuevas normas de uso del baño. Se pide: Programar un sistema concurrente que simule el sistema anteriormente descrito. El sistema constará de dos tipos de procesos: los procesos hombre y los procesos mujer. La comunicación y coordinación de los procesos para garantizar las condiciones del problema debe ser programada utilizando Linda. Después de unos días se ha detectado que no todas las personas están respetando las condiciones de uso del baño. Por este motivo la dirección de la facultad ha decidido que una persona de administración controle el acceso y vele por el cumplimiento de las normas. Programar un sistema cliente-servidor que simule el comportamiento de nuevo sistema. La persona de administración actuará como servidor y los hombre y mujeres que trabajan en el edificio como clientes. La comunicación entre todos ellos debe ser programada en base a Linda. Ejercicio 4 (2.0 ptos.) La figura 1 muestra la organización de un sistema en el que mediante siete procesos P x, P y, P w, P z, P xy, P wz, P xywz, más un proceso coordinador P coord, se evalúa la expresión x 2 + y 3 2w + 3z 7, donde los parámetros x, y, w y z son números reales. Para ello, en un bucle infinito, el proceso coordinador lee de la entrada estándar los valores de los parámetros, los suministra a los procesos P x, P y, P w, P z y espera el resultado que le suministrará el proceso P xywz para mostrarlo por la salida estándar. Cada proceso realiza un cálculo parcial, que suministra a otro proceso, según se esquematiza en la figura. 3

Figura 1: Esquema del flujo de datos entre los procesos El ejercicio pide: Definir la red de canales síncronos para resolver el problema Escribir del código de los ocho procesos, de acuerdo a la especificación dada Ejercicio 5 (2.0 ptos.) En este ejercicio se pide implementar un programa concurrente en Java que se comporte como la siguiente solución al problema de los fílósofos. -- --------------------------------------------------------- process filosofo (i :1.. n) loop --pensar tenedores. coger (i) --comer tenedores. dejar (i) end loop monitor tenedores boolean array [1.. n] ocupado := (1.. n, FALSE ) condition liberados operation coger ( natural i) while ( ocupado (i) OR ocupado (i +1)) --suma módulo n wait ( liberados ) 4

ocupado (i) := TRUE ocupado ( i +1) := TRUE -- suma modulo n operation dejar ( natural i) ocupado (i) := FALSE ocupado ( i +1) := FALSE -- suma modulo n signal_allc ( liberados ) -- --------------------------------------------------------- Notas Es importante tener presente los siguientes aspectos: Las soluciones planteadas deben ser explicadas y justificadas: describir las ideas que se van a aplicar, comentar código cuando lo haya, usar nombres de variables significativos, etc. La presentación del examen debe ser limpia y ordenada, la letra legible, etc. 5