INE 5645 - Programação Paralela e Distribuída
Tarefas Teóricas e de Programação |
Material Didático |
Unidade 1:
Introdução
Introdução 2010
Unidade 2-Parte 1: Programação Concorrente Programação Concorrente 2010 Unidade 2-Parte 2:
Concorrência em Java Tarefa Inicial de Programação - Estruturação de
Threads. Analisar um exemplo, sobre a estruturação de threads, usando
herança direta da classe Thread. Aula dia 10/08/2010. -------------------------------------------------------------------------------------------
Unidade 3:
Concorrência, Monitores, Semáforos e Locks
Tarefa Inicial de Programação 3.1 - Produtor-Consumidor com Monitor. Livro "Java Como Programar", Edição 6, Deitel & Deitel -
Cap. 23 - Multithreading Você deve procurar os arquivos das figuras 23.6 (Interface Buffer), 23.7 (class Producer) e 23.8 (class
Consumer), do exemplo da seção 23.6. No código 23.10, a implementação SharedBufferTest, é de um aplicativo mostrando duas threads que manipulam um buffer não-sincronizado. Veja o resultado de sua execução !!! O que você nota ??? Analise, agora, o relacionamento entre produtor e consumidor com
sincronização, veja agora a seção 23.12 sobre Monitores em Java.
Novamente você deve aproveitar os códigos 23.6 do Buffer e as
classes Producer (em 23.7) e Consumer (em 23.8) do exemplo da
seção 23.6.
------------------------------------------------------------------------------------------- Relacionamento Produtor-Consumidor com sincronização usando Locks (Exemplo Deitel 6Ed. Cap. 23, Seção 23.7, pag. 800-805).
Sobre código reentrante: Reentrância é a capacidade de um código de programa (código reentrante) poder ser compartilhado por diversos usuários, exigindo que apenas uma cópia do programa esteja na memória. Uma característica da reentrância é que o código não pode ser modificado por nenhum usuário no momento em que está sendo executado. A reentrância permite que cada usuário possa estar em um ponto diferente do código reentrante, manipulando dados próprios, exclusivos de cada usuário. Os utilitários do sistema, como editores
de texto, compiladores e linkers (linker editors), são exemplos de código
reentrante, que proporcionam grande economia de espaço em memória e aumento
na performance do sistema. Em alguns sistemas existe a possibilidade de
utilizar o conceito de reentrância para aplicações de usuários.
Laboratório
2: Locks (14/09/2010) Tarefa Inicial de Programação 3.3 - Produtor-Consumidor com Semáforo. Exemplos de Produtor-Consumidor com Semáforo: Montar o segundo exemplo do problema do Produtor-Consumidor com Sincronização, buffer limitado, da seção 23.12. Mas, usando semáforos (pacote (java.util.concurrent. Semaphore) Você deve procurar, no link acima, os arquivos das figuras 23.6 (Interface Buffer), 23.7 (Classe Producer) e 23.8 (Classe Consumer), do exemplo da seção 23.6. O código que realiza a sincronização é colocado nos métodos set e get da classe SynchronizedBuffer (Fig. 23.19), que implementa a interface Buffer. O trabalho poderá ser feito em dupla, mas a dupla deverá estar presente para mostrar o programa funcionando. Postar a tarefa no Moodle até a data programada, a aula de terça-feira (16/03). Para quem é iniciante, um exemplo de programa a ser modificado, está no Cap. 23 do livro referido acima, nas seções . A explicação do exemplo é importante para o aprendizado sobre semáforos. Laboratório 3: Semáforos (28/09/2010)
-------------------------------------------------------------------------------------------
Prova 1: Dia 04/10/2010
Unidade 4: Sockets. Ver slides do Prof. Lau Programação com Sockets. Implementar uma aplicação distribuída usando sockets.
(1) Comunicação de Datagramas UDP API Abstration Multicast (contém alguns slides sobre Multicast)
IP Multicast Java (contém explicação
sobre Multicast em Java)
Laboratório 4.1 (Tarefa
proposta pelo Prof. Bosco):
Tarefas com Sockets
Exemplo de código para implementação de comunicação de grupo com multicast
IP. Laboratório 4.2 (Tarefa proposta pelo Prof. Lau) : Comunicação de Processos -------------------------------------------------------------------------------------------
Unidade 5: Objetos Distribuídos e
Invocação Remota de Métodos Tarefa Teórica Individual Objetos Distribuídos e Invocação Remota
Laboratório 5 (Bosco) Implementando CallBack Laboratório 5: Comunicação usando RMI (Invocação de Métodos Remotos)
Prova 2: Dia 22/11/2010 ------------------------------------------------------------------------------------------- |