Está en la página 1de 3

Carrera: Licenciatura en Sistemas

Materia: Programación concurrente

Docentes: Prof. Asociado Mg. Hernán Merlino

Instructor JTP Pablo Pytel

Año: 2011

Cuatrimestre: 1ro
1- Fundamentación de la Asignatura:

Esta asignatura provee al alumno de los conocimientos necesarios para el desarrollo de


programas que deben ser ejecutados en ambientes que soportan la concurrencia. Se les presenta
una primera aproximación a los rudimentos básicos de la programación concurrente, hasta llegar
a los conceptos avanzados de la misma, con lo cual el alumno podrá enfrentar los desafíos que
conlleva la realización de un sistema en ambientes concurrentes.

2 – Objetivos:

Acercar al alumno a las técnicas y conceptos de la programación concurrente y algoritmos de


manejo de procesos cooperantes. Proveerle la capacidad de corregir y evitar errores en
programas concurrentes. Introducirlo a los problemas de concurrencia de transacciones
distribuidas. Reforzar el concepto de transacción en ambientes distribuidos como los motores de
bases de datos.

3 - Programa:

Unidad 1. Conceptos básicos de la Programación Concurrente.


Programación secuencial vs programación concurrente. Necesidad de la
programación concurrente. Problemas en la programación concurrente.

Unidad 2. Programación Concurrente en Ambientes Distribuidos.


Concepto de transacción. Transacciones atómicas. Concepto de Granularidad.
Isolation. Commit y rollback. Operaciones invariantes en bases de datos. Condición
de idempotencia. Bloqueos y deathlocks. Logs y checkpoints.

Unidad 3. Procesos.
Concepto de proceso. Estructura. Ciclo de vida y estados. Scheduling.

Unidad 4. Interacción de Procesos.


Entidades pasivas y activas. Exclusión mutua y otros métodos. Conceptos de safety y
liveness. Ejemplo de starvation freedom. Sincronización.

Unidad 5. Semáforos
Concepto de semáforo. Tipos. Invariantes. Buffers.

Unidad 6. Regiones Críticas y Monitores


Concepto de regiones críticas. Regiones críticas condicionales. Concepto de monitor.

Unidad 7. Sistemas basados en paso de Mensajes


Concepto de mensaje. Mecanismos de paso de mensajes. Patrón Observable-observer
sobre MVC. Paradigma cliente-servidor.

4 - Metodología de Trabajo:
La materia cuenta con clases teórico-prácticas por separado, cuyos conceptos teóricos se detallan
en el programa y luego se refuerzan con clases prácticas de máquina donde se experimenta con
programas concurrentes.
5 - Evaluación y Acreditación:
El proceso evaluativo consta de una evaluación parcial que incluye el temario de las primeras
dos unidades de la materia. En caso de no aprobarse la misma, el alumno contará con dos
recuperatorios. En caso de no aprobarse el examen el alumno quedará en la condición de libre,
en caso de aprobarse el mismo, la nota será promediada con una nota conceptual producto del
desempeño del alumno en clase y de los trabajos prácticos entregados. El resultado será la
calificación parcial de la cursada.

La segunda instancia es el desarrollo de un trabajo práctico final grupal cuyo tamaño se


corresponde al tiempo estimado de cuatro semanas de dedicación al mismo. El trabajo tendrá una
calificación grupal pero será defendido individualmente en la fecha de final a elegir. La nota
resultante de la defensa estará influida por la nota del trabajo práctico y constará como la nota
del final oral.

6 - Bibliografía:

1. Ben-Ari, M. Principles of concurrent programming. Prentice-Hall International, 1982.


ISBN 9780137010783.

2. Burns, A. & Davies, G. Concurrent programming. Addison-Wesley, 1993

3. Butenhof, D. R. Programming with POSIX(R) Threads, Addison-Wesley, 1997. ISBN


9780201633924.

4. Coulouris, G.; Dolkllimore, J.; Kindberg, T. Sistemas distribuidos, conceptos y diseño.


Addison-Wesley, 2001.

5. Date, C. J. An introduction to database systems, 8va edición, Addison-Wesley, 2004.


ISBN 9780201385908. (Inglés)

6. Date, C. J. Introducción a los sistemas de bases de datos, 7ma edición. Pearson


Educación, 2001. ISBN 9789684444195. (Español)

7. Stallings, W., Sistemas Operativos. PrenticeHall, 2006.

8. Tanenbaum, A. Sistemas operativos modernos. Pearson Educación, 2003. ISBN


9789702603153.

También podría gustarte