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

Créditos: 4
Horas semanais de atividades teóricas: 4
Oferecimento: A critério da unidade de ensino
 
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
M. Herlihy, N. Shavit.The Art of Multiprocessor Programming (TAMP), Morgan Kauffman Publishers, 2008.