Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico-Matemáticas y Naturales
Departamento: Informatica
Área: Area II: Sistemas de Computacion
(Programa del año 2008)
(Programa en trámite de aprobación)
(Programa presentado el 20/06/2008 10:22:58)
I - Oferta Académica
Materia Carrera Plan Año Periodo
SISTEMAS DISTRIBUIDOS Y PARALELISMO LIC. CS. COMP. 006/05 5 1c
II - Equipo Docente
Docente Función Cargo Dedicación
PICCOLI, MARIA FABIANA Prof. Responsable P.ADJ EXC 40 Hs
PRINTISTA, ALICIA MARCELA Prof. Co-Responsable P.ADJ EXC 40 Hs
TISSERA, PABLO CRISTIAN Auxiliar de Práctico A.1RA EXC 40 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total B - Teoria con prácticas de aula y laboratorio Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
 Hs. 3 Hs. 2 Hs. 2 Hs. 7 Hs. 1 Cuatrimestre 10/03/2008 20/06/2008 15 105
IV - Fundamentación
El presente curso esta destinado a alumnos de 5to. año de la Lic. en Ciencias de la Computación. La materia asume familiaridad con la programación secuencial y se concentra en técnicas y herramientas para diseñar programas en entornos distribuidos y paralelos.
V - Objetivos
El objetivo de esta materia es proveer una visión amplia que guíe a estudiantes de la cátedra que deseen construir programas eficientes para computadoras distribuidas y paralelas. La materia trata los conceptos más importantes de la temática y provee una discusión del diseño de algoritmos paralelos, de su análisis de performance y de la construcción de programas, con numerosos ejemplos que ilustran los principios fundamentales.

Objetivos específicos:

Desarrollar en el alumno la capacidad de conocer y distinguir las características esenciales de sistemas de computación no convencionales; máquinas de alta performance, máquinas paralelas,sistemas distribuidos y otras arquitecturas de uso específico
VI - Contenidos
UNIDAD Nro. 1:
Sistemas Distribuidos y Paralelos - Hardware y Software.
Introducción. Comparación entre Computación Distribuida y Paralela
Clasificación de FLYNN. MIMD: Clasificación.
MIMD de Memoria Compartida y de Memoria Distribuida
Hardware MIMD. Software MIMD
Características de Sistemas Distribuidos

UNIDAD Nro. 2:
Comunicación en Sistemas Distribuidos
Modelo Cliente- Servidor
Protocolos de direccionamientos. Primitivos de Sincronización
Llamadas a procedimiento remotos (RPC).
Objetos distribuidos: Paso de mensajes frente a objetos distribuidos. Sistemas de objetos distribuidos. La arquitectura de Java RMI. API de Java RMI. Comparación entre RMI y la API de socketcs.

UNIDAD Nro. 3:
Sistemas Distribuidos. Transacciones Atómicas. Espacio de Trabajo Privado. Writeahead log. Protocolo "Two Phase Commit".
Control de Concurrencia.

UNIDAD Nro. 4:
Programación Paralela, Computación Paralela de Memoria Distribuida y de Memoria Compartida.
Medidas de performance de Sistemas de Alta performance. Velocidad. Aceleración. Conjeturas. Aceleración lineal.

UNIDAD Nro. 5:
Computación Paralela de Memoria Distribuida: Programación con Pasaje de Mensajes. Creación Dinámica de Procesos. Rutinas básicas de Pasaje de Mensajes.
Concepto de Procesos Demonios. Grupos. Administración de grupos. Comunicaciones Colectivas. Casos de estudio: PVM y MPI.

UNIDAD Nro. 6:
Computación Paralela de Memoria Compartida. Máquinas de Memoria Compartida.MIMD de Memoria Compartida Distribuida (DSM)
Programación de Máquinas de Memoria Compartida
Programación con centinelas (OpenMP) Directivas, Rutinas de Librería y Variables de ambientes.

Programación con Threads
Concepto de Thread. Características de los Threads.
Threads y Procesos: Similitudes y Diferencias. Beneficios de los Threads: Througput,
Procesadores Múltiples, Interfaces del Usuario.
Server para Requerimientos del Usuario o Prevención de Deadlock.
Estructura de Programa y Comunicación. Desventajas de los Threads.
Aspectos del Diseño de Paquetes de Threads: Administración, Sincronización,
Tipos de Variables. Scheduling.
Librerías de Threads en espacio del Kernel o en espacio del Usuario. Ventajas y Desventajas de cada una.

VII - Plan de Trabajos Prácticos
Prácticos de Aula

Práctico 1 Características de Sistemas Distribuidos y paralelos.
Práctico 2 Comunicación en Sistemas Distribuidos.
Práctico 3 Transacciones Atómicas Procesadores.

Prácticos de Laboratorio (seis)

Práctico 1 Routing en Distintas Topologías.
Práctico 2 Invocación de Métodos Remotos (Java RMI).
Práctico 3 Programación orientada a pasajes de mensajes (PVM).
Práctico 4 Programación orientada a pasaje de mensajes (MPI).
Práctico 5 Programación con Threads
Práctico 6 Programación con OpenMP
VIII - Regimen de Aprobación
a) Realizar los prácticos de aula.
Se entiende por práctico de aula a todo práctico que la cátedra
fije para cada unidad, a realizar o entregar en el aula.

b) Aprobar los prácticos de máquina.
Se entiende por práctico de máquina a todo práctico que involucre programación(6 prácticos de laboratorio). Cada práctico se deberá entregar y aprobar en la fecha fijada por la cátedra o en una fecha de recuperación.
También para la aprobación de los mismos se requerirá una asistencia del 80% de los horarios establecidos para prácticos de máquina.

c) Aprobar los exámenes parciales.
La cátedra establece un parcial a realizarse durante su dictado. Los alumnos deberán aprobar tal parcial para regularizar, pudiendo recuperarlo a lo sumo una vez. Con respecto a la recuperación por trabajo, la misma se realizará en los términos establecidos y fijados por la universidad.

d) Realizar un proyecto de fin de materia
La cátedra fijará el conjunto de aplicaciones paralelas a desarrollar por los alumnos. El trabajo podrá ser individual o grupal, pudiendo incluir búsqueda bibliográfica y elaboración de monografías. Deberá ser expuesto ante el equipo de cátedra y para toda la clase.

Sólo los alumnos que superen las instancias b) y c) con una calificación mayor a 8 (ocho) podrán promocionar la materia realizando el punto d).

Los alumnos que superen las instancias b) y c) con una calificación entre 7 (siete)y 8(ocho) podrán regularizar la materia realizando el punto d).



EXAMEN FINAL

El examen final será escrito u oral, pudiendo incluir uno o varios temas teóricos y/o prácticos.


EXAMEN LIBRE

Se considerará como alumnos libres aquellos que teniendo aprobados los prácticos de máquina y el trabajo de investigación correspondientes al último año académico del dictado de la materia, estén libres por parciales o faltas.
La condición de alumno libre se mantiene hasta la finalización del próximo dictado de la materia(finalización del primer cuatrimestre 2009)

Los alumnos que encontrándose en condiciones de rendir libre la materia y deseen hacerlo, deberán:

1) Rendir un examen sobre los prácticos.
2) Rendir el examen final de la materia.
El orden de la lista anterior es relevante y la no aprobación de uno significa la automática desaprobación del examen libre.
IX - Bibliografía Básica
[1] Akl, S. G. The Design and Analysis of Parallel Algorithms. Prentice-Hall. 1989.
[2] M. L. Liu,Computación Distribuida. Fundamentos y Aplicaciones, Addison-Wesley, 1rd. Edición, 2004
[3] Qusay H. Mahmoud. Distributed Programming with Java, Manning, 1999.
[4] Foster I. Designing and Building Parallel Programs. Addison-Wesley. 1994.
[5] Geist A., Beguelin A., Dongarra J., Jiang W., Mancheck R., Sunderam V. PVM: Parallel Virtual Machine - A Users Guide and Tutorial for Network Parallel Computing. MIT Press.
[6] Hwang, K., Briggs, F. Computer architecture and parallel processing. McGraw-Hill. 1985.
[7] Quinn M. Parallel Computing. Theory and Practice. Second Edition. McGraw-Hill, Inc. 1994.
[8] Wilkinson B. & Allen M. Parallel Programming: Techniques and Application using Networked Workstations, Prentice-Hall. 1996.
[9] Comer D. Internetworking with TCP/IP Vol I y II, Prentice Hall, Englewood Cliff, N.J., 1990.
[10] Coulouris George, Jean Dollimore, Tim Kindberg. Distributed Systems Concepts and Design Addison Wesley Publishing Company (Second Edition).
[11] A. Tanenbaum, M. van Steen, Distributed Systems: Principles and Paradigms, Prentice Hall, 2002
[12] H. Deitel. Operating Systems. 3th edition. Addison-Wesley. 2004
[13] C. Leopold. Parallel and Distributed Computing: a survey of Models, paradigms and approaches. John Wiley & Son, Inc. 2001.
X - Bibliografia Complementaria
[1] Apuntes de la Cátedra
[2] Artículos de Internet
XI - Resumen de Objetivos
El presente curso esta destinado a alumnos de 5to. año de la Lic. en Ciencias de la Computación. La materia asume familiaridad con la programación secuencial y se concentra en técnicas y herramientas para diseñar programas paralelos.
El objetivo de esta materia es proveer una visión amplia que guíe a estudiantes de la cátedra que deseen construir programas eficientes para computadoras distribuidas y paralelas. La materia trata los conceptos más importantes de la temática y provee una discusión del diseño de algoritmos paralelos, de su análisis de performance y de la construcción de programas, con numerosos ejemplos que ilustran los principios fundamentales.
XII - Resumen del Programa
UNIDAD Nro. 1:
Sistemas Distribuidos y Paralelos - Hardware y Software.

UNIDAD Nro. 2:
Comunicación en Sistemas Distribuidos

UNIDAD Nro. 3:
Sistemas Distribuidos. Transacciones Atómicas.

UNIDAD Nro. 4:
Computación Paralela de Memoria Distribuida y de Memoria Compartida.


UNIDAD Nro. 5:
Computación Paralela de Memoria Distribuida: Programación con Pasaje de Mensajes.

UNIDAD Nro. 6:
Computación Paralela de Memoria Compartida.
XIII - Imprevistos