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 (18 de Fevereiro):
Apresentação. Critério de Aprovação. Provas: P1: 06/05, P2: 24/06.
-
Aula 2 (21 de Fevereiro):
Introdução: Tipos de máquinas. Tipos de concorrência. Paralelismo
iterativo - Seções do Andrews 1 -> 1.4
-
Aula 3 (25 de Fevereiro):
Introdução: Paralelismo recursivo. Produtor consumidor - Seções do Andrews
1.5, 1.6
-
Aula 4 (28 de Fevereiro):
Introdução: Cliente/Servidor. Computação por pares. Seções do Andrews 1.7, 1.8
- Semana de Break (4 e 7/03).
-
Aula 5 (11 de Março):
Processos e sincronização. Sincronização. Ações atômicas, await. Seções do Andrews 2 -> 2.6
-
Aula 6 (14 de Março):
Processos e sincronização. Sincronização. Ações atômicas, await. Seções do Andrews 2 -> 2.6
(continuação)
-
Aula 7 (17 de Março):
Políticas de escalonamento e justiça. Exercícios. Seções do Andrews 2.8.2
-
Aula 8 (21 de Março):
Seção Crítica. Propriedades. Test-and-Set. Implementação de await. Seções do Andrews 3 -> 3.2
-
Aula 9 (25 de Março):
Soluções justas para o problema da seção crítica
Algoritmo Tie-Breaker e Algoritmo do Ticket. Seções do Andrews 3.3 -> 3.3.2.
-
Aula 10 (28 de Março):
Algoritmo da Padaria - Seções do Andrews 3.3.3.
Barreiras de Sincronização (contador compartilhado). Seções do Andrews 3.4 e 3.4.1
-
Aula 11 (1 de Abril):
Exercícios do capítulo 3
Semáforos. Seções do Andrews 4 -> 4.2.4
-
Aula 12 (4 de Abril):
Problemas dos filósofos, leitores e escritores. Seções do Andrews 4.3 -> 4.4.2
-
Aula 13 (8 de Abril):
Leitores e escritores (passagem de bastão). Seções do Andrews 4.4.3
-
Aula 14 (10 de Abril):
Leitores e escritores (passagem de bastão). Seções do Andrews 4.4.3 -> 4.4.4
Alocação de recursos e escalonamento. Seções do Andrews 4.5 -> 4.5.2
- Semana do Break (14-18 Abril)
-
Aula 15 (22 de Abril):
Monitores. Exclusão Mútua. Variáveis de Condição. Signal and Continue,
Signal and Wait. Outras operações. Seções do Andrews 5 -> 5.14
-
Aula 16 (25 de Abril):
Usando Monitores, Produtor Consumidor com buffers limitados. Leitores
e Escritores. Tarefa mais curta primeiro. Seções do Andrews 5.2 -> 5.2.3.
- Aula 17 (29 de Abril):
Timers de intervalo. Barbeiro dorminhoco. Seções do Andrews 5.2.4 -> 5.2.5
-
Aula 18 (6 de Maio):
Prova (enunciado .pdf)
-
Aula 19 (9 de Maio):
Correção da Prova
-
Aula 20 (13 de Maio):
Exercícios: Fumantes e Montanha Russa (não houve aula)
-
Aula 21 (16 de Maio):
Exercícios (enunciado em pdf): Fumantes (soluções) e Montanha Russa (soluções)
-
Aula 22 (20 de Maio):
Mudança de Livro: Concurrent Programming in Java. Desing Principles and
Patterns. Doug Lea. Addison Wesley.
Exclusão (capítulo 2)
-
Aula 23 (23 de Maio):
Técnicas de exclusão (2.1, 2.2). Pulei 2.2.4 e 2.2.7
- Semana do Break - 26-30 de Maio
-
Aula 24 (03 de Junho):
Confinamento (2.3). Pulei 2.3.2.1 e 2.3.2.3
-
Aula 25 (06 de Junho):
Estruturação e Refatoração de Classes. 2.4, 2.4.1 e um pedaço do 2.4.2
-
Aula 26 (10 de Junho):
Threads na linguagem C (
texto do Guilherme)
-
Aula 27 (13 de Junho):
Estruturação e Refatoração de Classes (continuação) 2.4.2.
-
Aula 28 (17 de Junho):
Exercício para nota (em grupos de até quatro pessoas)
-
Aula 29 (24 de Junho):
Prova 2 (enunciado .ps)
-
Aula 30 (1 de Julho):
Prova Sub