Última atualização: 30/11/00


Programação Concorrente e Distribuída

Professor: Thaís Vasconcelos Batista

Horário de Aulas: Terças e Quintas, das 8:55 às 10:35  

Local das Aulas: 3D7  

Índice
Objetivos do Curso 
Calendário 
Avaliação 
Bibliografia 
Sites de Interesse 

Avisos


Objetivos

O objetivo deste curso é apresentar diferentes mecanismos que dão apoio ao desenvolvimento de aplicações distribuídas e capacitar o aluno para implementar tais aplicações. O curso tem um enfoque bastante prático que será exercitado através de desenvolvimento de aplicações simples usando diferentes mecanismos apresentados. Como requisito, o aluno deve ter uma base de programação em C++ ou Java.


Programa do Curso


Calendário

Este calendário será sempre atualizado com os detalhes de cada assunto e poderá ser modificado de acordo com o aproveitamento da turma.

 
Aula Data  Assunto  Referências 
08/08  Apresentação do curso. Objetivos, programa, avaliações.
22/08  Aspectos de Programação Distribuída
Apoio à Programação Distribuída
- Bibliotecas do Sistema Operacional
- Linguagens de Programação Distribuída
- Plataformas de Distribuição de Objetos
Conceitos Básicos.
- Concorrência
- Distribuição
- Paralelismo
- Sistema Distribuído
- Aplicações Distribuídas
- Paralelismo X Distribuição
Exemplos de Aplicações Distribuídas
24/08  Programação Distribuída
Bibliotecas do Sistema Operacional
Bibliotecas + Ferramentas
Linguagens de Programação Distribuídas
Plataformas de Distribuição de Objetos
Classes de Aplicações Distribuídas
- Inerentemente Dinâmicas
- Aplicações Tolerantes a Falhas
- Aplicações usando especialização funcional
Requisitos para Suporte a Programação Distribuída
Vantagens de Sistemas Distribuídos
Desvantagens de Sistemas Distribuídos
29/08  Comunicação entre Processos
- Comunicação Síncrona
- Comunicação Assíncrona
Modelos de Estruturação de Programas Distribuídos
- Modelo Cliente-Servidor
...... Tipos de Servidores
............ Iterativo
............ Concorrente
- Modelo de Filtros
- Modelo de Pares (Par-a-Par)
31/08  Comunicação entre Processos
- Condições de Corrida
- Região Crítica
- Exclusão Mútua
Problemas de Sincronização
- Deadlock
- Starvation
05/09  Comunicação entre Processos (continuação)
- Semáforos
- Discussão sobre Trabalho: Problema dos Filósofos
- Paper para leitura: Distributed Software Engineering - Jeff Kramer
12/09  Comunicação entre Processos (continuação)
- Problema Clássico
............ Leitores e Escritores
- Discussão sobre a Implementação do Problema dos Filósofos
14/09  Threads
- Conceito
- Benefícios de Threads
- Programando com Threads
............ Exemplo
- Sincronização entre Threads
............ Exemplo
19/09  Discussão sobre paper DSE
Uso de Bibliotecas para programação distribuída
- Socket
10  21/09  Socket
- Conceitos
- Chamadas
- Parâmetros das Chamadas
- Estrutura de Endereçamento
- Com conexao x Sem conexao
- Exemplo de programação com Socket para um Servidor com conexão
11  26/09  Apresentação do Trabalho 1 no Laboratório
12  28/09  Continuação Socket
- Exemplo de programação com Socket para um Servidor com conexão
- Exemplo de programação com Socket do lado do cliente
- Exemplo de estruturação do cliente e do servidor usando socket como função externa
Discussão sobre Trabalho 1 - parte 2 .
13  03/10  Aula de Dúvidas
14  31/10  Apresentação do Trabalho 2
15  07/11  Continuação da Apresentação do Trabalho 2
16  09/11  RPC - Chamada Remota de Procedimento
- Conceitos Básicos
- Modelo RPC
- Stubs
- SUN RPC
............ Formato XDR
............ RPCGEN
............ Geração Automática de programas com RPCGEN
17  14/11  Continuação RPC
- Passos de Construção de uma Aplicação Distribuída usando RPC
18  16/11  CORBA - Common Object Broker Architecture
- Introdução
............ Reuso
............ Programação Modular
............ Programação Orientada a Objetos
............ Programação Baseada em Componentes
- Arquitetura OMG
- Arquitetura CORBA
19  23/11  Continuação CORBA
- Referência do Objeto
- Repositório de Interfaces
- Repositório de Implementações
- Invocação Estática X Invocação Dinâmica
- Exemplo com Invocação Estática
20  30/11  Continuação CORBA
- LuaOrb
............ A linguagem Lua
- Exemplo com Invocação Dinâmica usando LuaOrb
- Visão Geral do Serviço de Nomes
- Discussão sobre Trabalho 2.


Avaliação

Prova: Dia 10/10 (Terça)

Trabalho 1:

Trabalho 2: Programação com CORBA. Data da Entrega: 19 de Dezembro (Terça)

Prova Final: data a ser definida

Bibliografia

Livros:


Sites de Interesse



Thaís Vasconcelos Batista
Departamento de Informática e Matemática Aplicada
Universidade Federal do Rio Grande do Norte
Campus Universitário - Lagoa Nova
59072-970 - Natal - RN- Brazil
e-mail: thais@dimap.ufrn.br
Fone: +55(84) 215-3814 ramal 329