Tópicos abordados nas aulas.
As referências são todas a capítulos do livro do Andrews (Foundations of
Multithreaded, Parallel and Distributed Programming).
-
Aula 1 (1 de Março):
Apresentação. Critério de Aprovação. Conceitos fundamentais. Arquiteturas
de máquinas sequenciais. Provas: P1: 03/05, P2: 28/06. Breaks: 21 a 26/03, 18
a 22/04 e 23 a 27/05.
-
Aula 2 (4 de Março):
Introdução: Arquiteturas de máquinas com memória compartilhada e
distribuída. Tipos de concorrência. Seções do livro do Andrews 1 -> 1.4.
Curiosidades:
Mais informações sobre topologias de
interconexão (tem desenhos interessantes na página 28).
Lista dos computadores mais rápidos do mundo top 500 (não tinha visto mas o earth
simulator já foi passado :().
-
Aula 3 (8 de Março):
Tipos de paralelismo: Paralelismo iterativo, recursivo, produtor consumidor
-
Aula 4 (11 de Março):
Tipos de paralelismo. Computação por pares. Introdução a processos e
sincronização em memória compartilhada
-
Aula 5 (15 de Março):
Exemplos de paralelização em memória compartilhada (grep e máximo de
um vetor). Noção de processos independentes
-
Aula 6 (18 de Março):
Primitiva await, exemplo com produtor consumidor
- 22 e 25 de Março (semana santa)
-
Aula 7 (29 de Março):
Justiça (fairness) e exercícios
-
Aula 8 (1 de Abril):
Problema da seção crítica
-
Aula 9 (5 de Abril):
Algoritmos para memória compartilhada - Tie Breaker e Ticket (início)
-
Aula 10 (8 de Abril):
Algoritmos para memória compartilhada - Ticket e Bakery.
-
Aula 11 (12 de Abril):
Barreiras de sincronização, contador compartilhado e com coordenador.
Início de barreiras simétricas.
-
Aula 12 (15 de Abril):
Barreiras de sincronização. Continuação de barreiras simétricas. Exercícios.
- Semana do Break (18-21 deAbril)
-
Aula 13 (26 de Abril):
Semáforos, motivação, definição, exemplos de seção crítica e barreiras.
Curiosidade: Vale a pena ler seguinte texto do
Dijkstra (ele até fala sobre semáforos).
-
Aula 14 (29 de Abril):
Semáforos, produtor/consumidor. Problema dos filósofos
- Aula 15 (3 de Maio):
Primeira Prova.
- Aula 16 (6 de Maio):
Correção da prova. Leitores e Escritores - Passagem de Bastão.
- Aula 17 (10 de Maio):
Leitores e Escritores (continuação) - Passagem de Bastão.
Alocação de recursos e escalonamento, introdução a monitores
- Aula 18 (17 de Maio):
Início de monitores. Implementação de semáforos usando monitores. Leitores e Escritores.
- Aula 19 (20 de Maio):
Monitores: Menor tarefa, Timers de intervalo, o problema do Barbeiro Dorminhoco.
- Semana do Break (23-27 deAbril)
- Aula 20 (31 de Maio):
Aula sobre concorrência em Java do livro Effective Java (Joshua Bloch)
Mais infos sobre os spurious wake ups em:
http://lists.gnu.org/archive/html/commit-classpath/2004-06/msg00079.html
http://www.weiqigao.com/blog/2004/04/27/1083125026000.html
- Aula 21 (3 de Junho):
Padrões para concrrrência do livro Concurrent Programming in Java (Doug
Lea). Técnicas de exclusão: imutabilidade e sincronização
- Aula 22 (7 de Junho):
Padrões de concorrência: sincronização (continuação), singleton e deadlock.
- Aula 23 (10 de Junho):
Monitores (do livro do Andrews) em Java. Código
visto na aula.
- Aula 24 (14 de Junho):
Técnicas de confinamento
- Aula 25 (17 de Junho):
Técnicas de confinamento
- Aula 26 (21 de Junho):
Threads são mesmo uma boa idéia ? (palestra do Daniel).