|
21/02: |
Informações gerais, bibliografia, critério de aprovação, etc.
Capítulo 1 do Andrews,
até 1.2.
|
|
07/03: |
Capítulo 1 do Andrews,
de 1.3 a 1.7.
|
|
10/03: |
Andrews,
seções 1.8, 1.9, 2.1 e 2.2. (Não vimos o último programa da seção 2.2.)
|
|
14/03: |
Andrews,
seções 2.2 (o último programa, não visto na aula anterior), 2.3
e 2.4.
|
|
17/03: |
Andrews,
seções 2.4 (continuação), 2.5 e 2.8 (exceto 2.8.1). (No meu
livro a seção 2.5 é intitulada "Producer/Consumer
Synchronization", diferentemente do que aparece no índice
disponibilizado pelo Andrews.)
|
|
21/03: |
Capítulo 3 do Andrews,
até 3.3.1 (não chegamos a ver o algoritmo tie breaker
para n processos).
|
|
24/03: |
Andrews,
seções 3.3.1 (a generalização do algoritmo tie breaker
para n processos), 3.3.2 e 3.3.3.
|
|
28/03: |
Andrews,
seção 3.4, até 3.4.3 (apenas começamos a parte sobre
butterfly barrier e barreira de disseminação, em
3.4.3).
|
|
31/03: |
Andrews,
seção 3.4.3 (butterfly barrier e barreira de
disseminação) e capítulo 4, até 4.2.4.
|
|
04/04: |
Sinais e memória compartilhada no Unix/Linux. Andrews,
de 4.3 a 4.4.1.
|
|
07/04: |
Andrews,
de 4.4.2 a 4.4.4.
|
|
18/04: |
Andrews,
seção 4.5 e exercício 4.30 parte (a). Fazer em casa as partes
(b) e (c) do exercício 4.30.
|
|
25/04: |
Resolução de exercícios do Andrews: 4.30(b), 4.30(c) sem controle do
escalonamento dos processos individuais e 4.30(c) com
semáforos privados e controle do escalonamento dos processos
individuais.
|
|
28/04: |
Resolução de exercícios do Andrews: 4.31(a) (o problema da ponte de mão
única) e 4.37 (o problema da monhanha russa). Comentários/dicas sobre
os problemas 4.27 (o problema dos fumantes), 4.28 (operações P e
V em múltiplos semáforos) e 4.38 (eventcounter e sequencer).
|
|
05/05: |
Capítulo 5 do Andrews,
até 5.2.2.
|
|
09/05: |
Primeira prova.
|
|
12/05: |
Andrews,
seções 5.2.3, 5.2.4 e 5.2.5.
|
|
16/05: |
Threads, sincronização e monitores em Java (Andrews,
seção 5.5). Uso de synchronized (Bloch,
ítem 48).
|
|
19/05: |
O "double-checked idiom" não funciona em Java (Bloch,
ítem 48). Problemas com sincronização excessiva (Bloch,
ítem 49). Nunca chamar wait fora de um laço (Bloch,
ítem 50).
|
|
30/05: |
Bloch,
ítens 51 (não depender do escalonador de threads), 52
(documentar thread safety) e 53 (evitar thread
groups). Cancelamento
("interrupção") de threads e a InterruptedException (Lea, seção 3.1.2).
Implementação de semáforos (Lea, seção 3.7.1).
O problema do aninhamento de monitores (Lea, seção 3.3.4).
|
|
02/06: |
Bounded
buffer com notifyAll (Lea, seção 3.3.1).
Delegação de ações e bounded buffer sem notifyAll (Lea, seção 3.7.2.).
|
|
06/06: |
O notifyAll é mesmo necessário
na primeira implementação de bounded buffer vista na aula
passada? (Esclarecimento
sobre essa questão.) A biblioteca
de concorrência do
JDK
1.5.
|
|
09/06: |
A biblioteca
de concorrência do
JDK
1.5 (continuação). Transparências do
JavaOne 2006. Revisão de bancos de dados para o EP4: o protocolo
two-phase locking (2PL).
|
|
20/06: |
Leitura recomendada: Andrews,
de 6.1 a 6.4. Implementação de monitores usando semáforos (Andrews,
seção 6.5). Resolução dos exercícios 5.1 e 5.4 do
Andrews. Resolução do problema do banheiro unisex usando um
monitor.
|
|
30/06: |
Segunda prova.
|
|
04/07: |
Terceira prova (substitutiva).
|