MAC0438 Programação Concorrente
OBJETIVOS: Apresentar problemas clássicos de programação concorrente baseada no compartilhamento de variáveis e em troca de mensagens. Ensinar mecanismos de comunicação e sincronização entre processos/objetos concorrentes.
PROGRAMA: Conceitos básicos: processos, threads, interrupções, escalonamento. Aspectos de implementação e concorrência. Propriedades de segurança e imparcialidade. Modelos de concorrência. Semântica e implementação de mecanismos de sincronização. Problemas de programação concorrente: deadlock, alocação de recursos, leitura e escrita concorrente, exclusão mútua, consenso. Semântica e implementação de mecanismos de comunicação. Programação concorrente em UNIX. Algoritmos baseados em variáveis compartilhadas: Dijkstra, Peterson, consenso. Algoritmos baseados em envio de mensagens.
PRÉ-REQUISITO NÃO-OFICIAL: MAC0122.
CARGA HORÁRIA SEMANAL E NÚMERO DE CRÉDITOS: 4 horas, 4 créditos-aula.
CRITÉRIO DE AVALIAÇÃO DA APRENDIZAGEM: Provas e trabalhos.
BIBLIOGRAFIA BÁSICA:
- G.R. Andrews, Concurrent Programming: Principles and Practice, Benjamin Cummings, 1991.
- N. Gehani, A. McGettrick, Concurrent Programming, coletânea de artigos canônicos, Editora?, 1988.
- W.R. Stevens, UNIX Network Programming, Prentice Hall, 1990.
OBSERVAÇÃO: Disciplina obrigatória no currículo do BCC.
[Veja dados da disciplina no JúpiterWeb]