|
|
![]() |
Esta página estará em permanente construção até o final do semestre... |
Informações Gerais |
![]() |
Local: IME-USP, bloco B, sala 6 |
![]() |
Horário: terças das 10:00 às 11:40, sextas das 8:00 às 9:40 |
![]() |
Monitor: Alex Abate Biral (zaratrus arroba ime ponto usp ponto br) |
![]() |
Horário e local de monitoria: terças e sextas das 13:00 às 14:00, na sala de monitores |
![]() |
Pasta xerox CAMAT: número 31 |
![]() |
Avaliação: duas provas e quatro exercícios-programa |
![]() |
Média de provas: | MP = (2 * P1 + 3 * P2)/5 |
![]() |
Prova substitutiva: | Está prevista uma terceira prova P3, para alunos que comprovadamente não puderam comparecer à uma das duas provas, P1 ou P2. Quem fizer essa prova terá sua média de provas calculada como | |
MP = max {(2 * P1 + 3 * P3)/5, (P2 + P3)/2} |
![]() |
Média de exercícios-programa: MEP = (EP1 + EP2 + EP3 + EP4)/4 |
![]() |
Média final: se | MP >=5 e ME >= 5 então MF = (2 * MP + ME)/3 senão MF = min {MP, ME} |
![]() |
Datas das provas: 09 de maio, 30 de junho e 04 de julho (substitutiva) |
![]() |
Recuperação: Os alunos que ficarem com média final maior ou igual a 3 e menor que 5 terão direito de fazer recuperação desta disciplina. |
![]() |
Se sua média de provas MP foi menor que 5, então você deverá fazer a prova de recuperação no dia 01 de agosto, às 16:00, na sala 9 do bloco B. |
![]() |
Se sua média de exercícios-programa ME foi menor que 5, então você deverá entregar o exercício-programa de recuperação até as 10:00 do dia 31 de julho. |
![]() |
Média de recuperação: |
se você só precisou fazer a prova, MR = nota da prova se você só precisou fazer o exercício, MR = nota do exercício se você precisou fazer ambos: se prova >= 5 e exercício >= 5 então MR = (2 * prova + exercício)/3 senão MR = min {prova, exercício} |
![]() |
Nota final: | (MF + 2 MR)/3, onde MF é a média final do semestre e MR é a média da recuperação |
Assuntos Tratados em Aula |
![]() |
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). |
Exercícios-Programa |
![]() |
Primeiro exercício-programa (ps, pdf, solução incompleta). Prazo: até 18 de abril. |
![]() |
Segundo exercício-programa (ps, pdf). Prazo:
até |
![]() |
Terceiro exercício-programa (ps, pdf). Prazo: até 06 de junho. |
![]() |
Quarto exercício-programa (ps, pdf, exemplo de programa com uma thread por conexão TCP). Prazo: até 27 de junho. |
Bibliografia |
![]() |
Gregory R. Andrews, Foundations of Multithreaded, Parallel, and Distributed Programming, Addison-Wesley, 1999. ISBN: 0-2013-5752-6. (Ver também as erratas da primeira edição e das edições seguintes.) |
![]() |
Doug Lea, Concurrent Programming in Java, Second Edition: Design Principles and Patterns (The Java Series), Addison-Wesley, 1999. ISBN: 0-201-31009-0. |
![]() |
M. Ben-Ari, Principles of Concurrent Programming, Prentice-Hall International, 1982. ISBN: 0-13-701078-8. |
![]() |
Joshua Bloch, Effective Java Programming Language Guide (The Java Series), Addison-Wesley, 2001. ISBN: 0-201-31005-8. |
Recursos Adicionais na Internet |
![]() |
Material de apoio disponibilizado pelo autor do livro Foundations of Multithreaded, Parallel, and Distributed Programming. |
![]() |
Suplemento on-line do livro Concurrent Programming in Java. |
![]() |
Concurrent Utilities do JDK 1.5.0. |
![]() |
util.concurrent, pacote Java disponibilizado por Doug Lea. |