Download Programacin Concurrente

Document related concepts
no text concepts found
Transcript
_____________________________________________________________________________________
Curso:
Centro:
Estudios:
Asignatura:
Código:
Ciclo:
Curso:
Cuatrimestre:
Carácter:
Créditos teóri.:
Créditos práct.:
2006/07
Escuela Politécnica Superior
Ingeniería Técnica en Informática de Sistemas
Programación concurrente
40007313
1º
3º
1º
Optativa
3
3
Área:
Departamento:
Descriptores:
Lenguajes y Sistemas Informáticos
Lenguajes y Computación
Comunicación y sincronización. Esquemas de interacción entre procesos. Semáforos.
Regiones críticas. Monitores. Órdenes de guarda. Interbloqueos. Lenguaje JAVA.
_____________________________________________________________________________________
Profesora: Clara Marcela Miranda S.
OBJETIVOS
Familiarizar al alumno con los conceptos fundamentales de los Sistemas Concurrentes
y proporcionarles técnicas que le permitan desarrollar soluciones correctas a los
problemas de concurrencia que encuentra en su actividad profesional.
•
Visión genérica de la programación concurrente, su definición, funciones y
aplicaciones.
•
Poder identificar la concurrencia necesaria en una aplicación (análisis de
concurrencia)
•
Utilice un lenguaje formal de diseño de aplicaciones concurrentes, basado en la
definición de procesos e interacciones. INTERACCIONES → Precondiciones o
poscondiciones.
•
Establecer una sistemática para construir un programa concurrente correcto a
partir de un diseño.
TEMARIO DE TEORÍA
1. Conceptos fundamentales
1.1 Conceptos fundamentales (programa, proceso, concurrencia, etc)
1.2 Procesos versus hilos
1.3 Primeras aproximaciones a la solución de los problemas de la
programación concurrente.
2
Primitivas de sincronización basadas en memoria compartida
2.1 Semáforos
2.2 Regiones críticas condicionales
2.3 Monitores
3
Paso de mensajes
3.1 Mecanismos de paso de mensajes
3.2 Paso de mensaje asíncrono
3.3 Paso de mensaje síncrono con canales
3.4 Invocación remota y llamada a procedimiento remoto (RPC)
TEMA 1 Conceptos fundamentales
Objetivos:
• Entender el concepto y la importancia de la programación concurrente.
Establecer y entender la diferencia entre paralelismo real y virtual.
• Conocer las propiedades de corrección de los sistemas concurrentes.
• Comprender la utilidad de la exclusión mutua entre procesos
• Entender perfectamente los problemas inherentes a la programación
concurrente y sus diferencias con respecto a la programación secuencial.
TEMA 2 Primitivas de sincronización basadas en memoria compartida
Objetivos
• Presentar técnicas que permitan resolver problemas de la programación
concurrente, apoyándose en la existencia de una memoria común accesible a
todos los procesos involucrados. Los procesos se pueden comunicar
compartiendo una posición de memoria donde depositarán y recogerán
información para conocer el estado del otro proceso.
• Comprender cómo se pueden resolver problemas que requieren técnicas
propias de la programación concurrente utilizando semáforos, regiones críticas
condicionales y monitores.
TEMA 3 Paso de mensajes
• Comprender la diferencia entre un sistema basado en paso de mensajes y otro
basado en variables compartidas.
• Conocer los diferentes tipos de paso de mensaje
• Comprender el mecanismo de paso de mensaje asíncrono. Solución de
problemas con este tipo de paso de mensaje.
• Comprender el mecanismo de paso de mensaje basado en canales. Solución
de problemas con este tipo de paso de mensajes.
TEMARIO DE PRÁCTICAS
P.1. Gestión de Procesos Concurrentes
Llamadas al sistema fork y wait: Los alumnos desarrollaran la capacidad de lanzar y
controlar procesos concurrentes mediante el uso de la llamada al sistema fork. El
objetivo de esta práctica es poder mantener bajo control múltiples procesos
concurrentes.
Temporización: 2 horas (1 sesión de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías necesarias para la gestión de procesos concurrentes
P.2. Multiplicación concurrente de matrices
Implementar un ejemplo sencillo mediante procesos concurrentes. Concretamente,
calculando su producto mediante varios procesos concurrentes. Esta práctica se
utilizará para cuantificar las ventajas de la programación concurrente frente a la
secuencial en cuanto al tiempo de respuesta.
Temporización: 2 horas (1 sesión de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías necesarias para la gestión de procesos concurrentes
P.3 Semáforos IPC
Problemas de productores-consumidores y lectores-escritores: Los alumnos crean,
lanzan y sincronizan un proceso productor y otro consumidor en su acceso a un buffer
compartido. El buffer es situado en memoria compartida; la exclusión mutua sobre el
mismo, así como la sincronización, se proveen mediante semáforos. Se desarrollará
también una solución tipo lectores-escritores.
Temporización: 4 horas (2 sesiones de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías necesarias para el uso de
sincronización de procesos concurrentes.
semáforos
en
la
P.4 Programación concurrente en java
Implementar una serie de soluciones a problemas de sincronización y comunicación
entre procesos concurrentes. Los problemas a implementar pueden no ser comunes
con el fin de evitar situaciones incómodas entre los alumnos.
Temporización: 8 horas (4 sesiones de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías necesarias para el uso de
sincronización de procesos concurrentes.
semáforos
en
la
P.5 Exclusión mutua con hilos
Haciendo uso de los métodos de synchronized se comprobará la exclusión mutua
sobre diversos objetos construidos a tal efecto.
Temporización: 2 horas (1 sesión de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías que permiten el acceso a los métodos synchronized
P.6 Monitores en Java
Cada objeto cuyos métodos sean synchronized es potencialmente un monitor. Si bien
esta clase de métodos provee acceso a los recursos encapsulados en el objeto en
exclusión mutua, no provee la sincronización interna necesaria, que además depende
del problema. Haciendo uso de wait, notify y notifyAll los alumnos diseñarán monitores
incorporando la adecuada sincronización interna.
Temporización: 4 horas (2 sesiones de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías que permitan el uso de monitores
P.7 Invocación de métodos remotos
El modelo se llama a procedimiento remoto en java es RMI. Los alumnos aprenderán a
desarrollar, implementar y ejecutar todo código necesario para el desarrollo de
diversas soluciones RMI para servidores sencillos.
Temporización: 2 horas (1 sesión de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías que permiten llamadas a procedimiento remoto
P.8 Paso de mensajes síncronos y asíncronos
Se busca poner en práctica los distintos algoritmos vistos en clase para el desarrollo
de ejercicios prácticos extendiéndolos a múltiples mensajes y que vean la aplicabilidad
para cada proceso ya utilice mensajes síncronos o asíncronos.
Temporización: 6 horas (3 sesiones de práctica)
Material:
PC con Windows 2000
Compilador Java
Librerías que permiten el acceso a las primitivas de paso de
mensajes (send y receive)
BIBLIOGRAFÍA
•
Jean Bacon y Janet Van Der Linden. Concurrent Systems: An Integrated
Approach to Operating Systems, Distributed Systems and Database. Addison
Wesley, 2002.
•
Ben-Ari, M. Principles of Concurrent Programming. Prentice-Hall, 1982
•
Burns, A., Davies, G.L. Concurrent Programming. Addison Wesley, 1993
•
Pérez, J.E. Programación Concurrente. Editorial Rueda, 1990.
CRITERIOS DE EVALUACIÓN
♦ Por cada tema se hace una práctica, donde deben aplicar las diferentes
herramientas vistas en clase. Son de carácter obligatorio. Las mismas se
deben realizar tanto en Pascal-Fc (por su carácter didáctico) y en JAVA . 30%
♦ Se hace un proyecto final donde el alumno debe mezclar diferentes
herramientas de Programación Concurrente de forma óptima para dar
solución a un problema práctico. 50%
♦ Hay exposiciones de aplicaciones prácticas de las diferentes herramientas
vistas en clase, esto por parte de los estudiantes. 20%