0304 Programación Concurrente
(Ingeniería Informática plan 96)

Dpto. de Lenguajes y Sistemas e Ingeniería de Software

Moodle: http://moodle.upm.es/titulaciones/oficiales/course/view.php?id=777

Curso 2010-2011

Descripción de la asignatura

La asignatura Programación Concurrente pretende familiarizar al alumno con los conceptos fundamentales de los sistemas concurrentes y proporcionarle técnicas que le permitan desarrollar soluciones correctas a los problemas de concurrencia que encuentre en su actividad profesional.




Más concretamente, se tienen como objetivos:

El curso utilizará Ada 95 como lenguaje fundamental de trabajo, tanto para las explicaciones en clase como para las prácticas y los exámenes. El curso se completará con información acerca de otros mecanismos de expresión de concurrencia y de comunicación que se consideren de interés educativo y nivel de aplicación suficientes.

Horarios

Hay un grupo con los siguientes horarios y profesorado:
Grupo Horario Profesorado Aula
Grupo 1 Viernes 9:00-11:00 A. Herranz 3101

Éstas son las direcciones de correo y los despachos del profesorado de la asignatura:

Profesor: Julio Mariño Ángel Herranz
Despacho D2308 D2309
Correo (@fi.upm.es): jmarino aherranz

Tutorías

Tutorías fijas: 2 horas semanales fijas por profesor de atención a los alumnos de cualquier grupo sin establecer cita previa.
Tutorías fuera de horas (4h.): Consultar previamente al profesor sobre su disponibilidad.

Profesor Tutorías fijas Tutorías cita previa
Julio Mariño Lunes de 16:00 a 17:00  
    Miercoles de 10:00 a 12:00
  Jueves de 18:00 a 19:00 Jueves de 16:00 a 18:00
Ángel Herranz   Lunes de 18:00 a 20:00
    Jueves 16:00 a 18:00
  Viernes de 11:30 a 13:30  

Temario

  1. Introducción a la concurrencia
    1. Presentación y motivación de la concurrencia:
      • Procesos y concurrencia necesaria.
    2. Propiedades de ordenación temporal:
      • Exclusión mutua.
      • Sincronización condicional.
    3. Propiedades de los programas concurrentes:
      • Seguridad.
      • Vivacidad
      • Prioridad.
    4. Grafos de procesos y recursos.

  2. Mecanismos de bajo nivel
    1. Arranque de tareas
    2. Mecanismos básicos de sincronización
      • Algoritmos de exclusión mutua: virtudes y defectos
      • Semáforos
    3. Problemas de falta de estructuración

  3. Especificación
    1. Esbozo de un método de desarrollo.
    2. Recursos compartidos como paradigma unificador.
    3. Notación de TADs concurrentes para especificación de recursos compartidos.

  4. Programación de recursos compartidos mediante objetos protegidos.
    1. Esquema de un objeto protegido
    2. Traducción directa de precondiciones a guardas
    3. Dependencia de parámetros de entrada:
      1. Entries especializadas
      2. Familias de entries indexadas por parámetros de entrada
      3. Familias de entries indexadas por identificadores de procesos
    4. Cuestiones de vivacidad y su resolución

  5. Concurrencia mediante paso de mensajes / Rendez Vous
    1. Sistemas distribuidos.
    2. Canales y paso de mensajes síncrono y asíncrono.
    3. Recepción alternativa no determinista mediante canales.
    4. Implementación de recursos con paso de mensajes síncrono:
      1. Recursos activos.
      2. Estructura de un recurso activo.
      3. Implementación de operaciones independientes de parámetros de entrada.
      4. Operaciones dependientes de parámetros de entrada: canales.
      5. Encapsulamiento

  6. Problemas con exclusión parcial
    1. Ejemplos de problemas
    2. Recursos monitores. Esquema genérico de desdoblamiento de operaciones.
    3. Lectores y escritores. Análisis de vivacidad.

  7. Análisis y diseño de sistemas concurrentes
    1. Análisis y especificación. Identificación de:
      • Procesos.
      • Recursos.
      • Propiedades de vivacidad y seguridad.
    2. Diseño de la arquitectura del programa.
    3. Diseño detallado e implementación.
    4. Ejemplos de análisis y diseño.

Bibliografía

Básica

Adicional

Material para estudio y prácticas

Transparencias

Prácticas

En la página web de la asignatura y a través de la plataforma Moodle puede encontrarse información y material básico para el estudio y realización de las prácticas.

Compilador y librerías adicionales

Puede utilizarse cualquier compilador de Ada 95 para el estudio y para la realización de las prácticas. Recomendamos, por su robustez y calidad, el compilador de Ada de GNU (GNAT), compilador con el que se realizarán las comprobaciones de los ejercicios que entreguen los alumnos.

Tenéis a vuestra disposición, para uso especial de la asignatura, una serie de librerías adicionales y ejemplos en consultar la página web de la asignatura.

Listas de correo

Con objeto de recibir inmediatamente noticias de las novedades de la asignatura y poder realizar preguntas a las que podrán responder vuestros compañeros o los profesores de la asignatura se pondrá a disposición de los alumnos una lista de correo electrónico. Para más información consultar la página web de la asignatura.

Evaluación de la asignatura

Las pruebas escritas presenciales consistirán en una serie de ejercicios y se calificarán con una nota numérica (NT) entre cero y diez. Durante el curso se propondrán varios ejercicios prácticos, con una fecha de entrega cada uno, que constituirán, en conjunto, las prácticas de ese año. Dichas prácticas se evaluarán con una calificación global (NP) que será o bien no apto o apto. Es necesario que todos los ejercicios prácticos estén aptos para que el conjunto de ellos lo esté.

La calificación final NF asociada a una convocatoria se obtendrá a partir de las notas NP y NT de esa convocatoria, de acuerdo a la siguiente regla:


\begin{displaymath}
\mathbf{NF} =
\left\{\begin{array}{ll}
\mathbf{P} \mbox{ ...
...teoría y \textbf{NP} = \textbf{apto}} \\
\end{array}\right.
\end{displaymath}

Adicionalmente:

Cualquier tipo de comportamiento fraudulento en prácticas o exámenes puede ser objeto de sanción académica. Recordamos que se realizan escrutinios sistemáticos de todo el código entregado y que la posibilidad de ser descubierto es muy alta.

Sobre este documento...

0304 Programación Concurrente
(Ingeniería Informática plan 96)

This document was generated using the LaTeX2HTML translator Version 2008 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -no_navigation -image_type gif -split 2 -link 1 -iso_language ES.ES -html_version 4.0,unicode -t 'Programación Concurrente: Normas Asignatura' normas.tex

The translation was initiated by Ángel Herranz on 2010-10-13




Ángel Herranz 2010-10-13