MC971 - Introdução à Programação Concorrente

A partir de 2016
 
Ementa:
Princípios de programação concorrente. Processos Concorrentes. Exclusão Mútua. Memória Compartilhada. Primitivas de Sincronização. Consenso. Estruturas de Dados Concorrentes.
 
Programa:
- Fundamentos de Algoritmos Concorrentes, Processadores Multicore, Leis de Moore e de Amdahl; 
- Exclusão Mútua: tempo, regiões críticas, algoritmos clássicos para exclusão mútua; 
- Objetos Concorrentes: conceituação de consistência: sequencial, linear. Modelo de memória de Java; 
- Fundamentos sobre Memória Compartilhada: registradores, fotografias; 
- Primitivas de Sincronização: estruturas de dados e algoritmos fundamentais; 
- Universalidade do Princípio de Consenso; 
- Spin locks e contenção; 
- Listas Ligadas Concorrentes Baseadas em Travas (locks); 
- Filas Concorrentes; 
- Pilhas Concorrentes; 
- Skiplists e Busca Balanceada; 
- Memória Transacional.
 
 
Bibliografia:
- Livro Texto
M. Herlihy, N. Shavit.The Art of Multiprocessor Programming (TAMP), Morgan Kauffman Publishers, 2008.