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 2006)
(Programa en trámite de aprobación)
(Programa presentado el 07/04/2006 11:04:21)
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
PRINTISTA, ALICIA MARCELA Prof. Responsable P.ADJ EXC 40 Hs
TISSERA, PABLO CRISTIAN Auxiliar de Práctico JTP 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. 2 Hs.  Hs. 5 Hs. 7 Hs. 1 Cuatrimestre 13/03/2006 16/06/2006 14 98
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, 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
Modelo con protocolos en capa. Modelo referencial OSI (Open System Interconnection)
Protocolos de direccionamientos
Primitivos de Sincronización
Modelo RPC

UNIDAD NRO. 3:
Medidas de performance de Sistemas de Alta performance. Velocidad. Aceleración. Conjeturas. Aceleración lineal.

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

UNIDAD Nro. 5:
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 deThreads en espacio del Kernel o en espacio del
Usuario. Ventajas y Desventajas de cada una.

UNIDAD Nro. 6:
Programación Paralela
Programación con Pasaje de Mensajes.
Creación Dinámica de Procesos. Rutinas básicas de Pasaje de Mensajes
Máquina Virtual Paralela. Concepto de Procesos Demonios
Administración de grupos. Comunicaciones Colectivas
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.

VII - Plan de Trabajos Prácticos
Práctico nro. 1 (Aula) Características de Sistemas Distribuidos
Práctico nro. 2 (Aula) Comunicación en Sistemas Distribuidos
Práctico nro. 3 (Aula) Transacciones Atómicas

Práctico nro. 1 (Máquina) Routing en Topologías con múltiples Procesadores.
Práctico nro. 2 (Máquina) Programación con Threads
Práctico nro. 3 (Máquina) Programación orientada a pasajes de mensajes (PVM)
Práctico nro. 4 (Máquina) Programación orientada a pasaje de mensajes (MPI)
Práctico nro. 5 (Máquina) Análisis de la Performance de Programas Paralelos.

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. 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.

d) Realizar un proyecto de fin de materia
La cátedra fijará el conjunto de aplicaciones paralelas, entre las cuales los deberán seleccionar para implementar. 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 menor a 7 (siete) 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

Los alumnos que encontrándose en condiciones de rendir libre la materia, deseen hacerlo, deberán contactarse con el responsable de la cátedra quince días antes de la constitución de la mesa examinadora, a los efectos de recibir el conjunto de trabajos prácticos similares a los realizados por los alumnos regulares durante el cursado normal de la asignatura. Dichos trabajos se llevarán a cabo bajo la continua supervisión de los colaboradores de la cátedra. Si tal prueba resultara satisfactoria, los alumnos rendirán en la fecha establecida, un examen final con la misma modalidad que los alumnos regulares.

IX - Bibliografía Básica
[1] Akl, S. G.
[2] The Design and Analysis of Parallel Algorithms. Prentice-Hall. 1989.
[3] Bonorden O., Juurlink B., Otte I., Rieping I.
[4] PUB: Library. Design, Implementation and performance. 13th. International Parallel Processing Symposium . IEEE. 1999.
[5] Carlini, Villano
[6] Transputers and Parallel Architectures. Ellis Horowood Limited. 1991.
[7] Foster I.
[8] Designing and Building Parallel Programs. Addison-Wesley. 1994.
[9] Geist A., Beguelin A., Dongarra J., Jiang W., Mancheck R., Sunderam V.
[10] PVM: Parallel Virtual Machine - A Users Guide and Tutorial for Network Parallel Computing. MIT Press.
[11] Hwang, K., Briggs, F.
[12] Computer architecture and parallel processing. McGraw-Hill. 1985.
[13] Quinn M.
[14] Parallel Computing. Theory and Practice. Second Edition. McGraw-Hill, Inc. 1994.
[15] Tinetti F., De Giusti A.
[16] Procesamiento paralelo. Conceptos de Arquitecturas y Algoritmos. Primera edición. Agosto de 1998. Editorial Exacta.
[17] Wilkinson B. & Allen M.
[18] Parallel Programming: Techniques and Application using Networked Workstations, Prentice-Hall. 1996.
[19] Comer D.
[20] Internetworking with TCP/IP Vol I y II, Prentice Hall, Englewood Cliff, N.J., 1990.
[21] Coulouris George, Jean Dollimore, Tim Kindberg.
[22] Distributed Systems Concepts and Design Addison Wesley Publishing Company (Second Edition).
X - Bibliografia Complementaria
[1]
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: Características de Sistemas Distribuidos. Objetivos de diseño: Requerimiento de usuarios.
UNIDAD Nro.3: Comunicación en Sistemas Distribuidos. Modelo Cliente-Servidor
UNIDAD Nro.4: Programación con Threads.
UNIDAD Nro.5: Fundamentos de Computación Paralela. Evolución de Sistemas de Computadoras. Tendencias hacia el procesamiento paralelo.
UNIDAD Nro.6: Programación Paralela. Programación con Pasaje de Mensajes.
Programación en Máquinas de Memoria Compartida
XIII - Imprevistos