Código: | CC435 | Sigla: | CC435 |
Áreas Científicas | |
---|---|
Classificação | Área Científica |
OFICIAL | Ciência de Computadores |
Ativa? | Sim |
Página Web: | http://www.dcc.fc.up.pt/~ines/aulas/1314/SDM/SDM.html |
Unidade Responsável: | Departamento de Ciência de Computadores |
Curso/CE Responsável: | Mestrado Integrado em Engenharia de Redes e Sistemas Informáticos |
Sigla | Nº de Estudantes | Plano de Estudos | Anos Curriculares | Créditos UCN | Créditos ECTS | Horas de Contacto | Horas Totais |
---|---|---|---|---|---|---|---|
M:CC | 9 | PE do Mestrado em Ciência de Computadores | 1 | - | 7,5 | 67 | 202,5 |
2 | |||||||
MI:ERS | 18 | Plano de Estudos a partir de 2007 | 4 | - | 7,5 | 67 | 202,5 |
Possibilitar aos alunos um conhecimento aprofundado sobre sistemas
distribuídos, com ênfase nos fundamentos, técnicas e prática relevante
no desenho e implementação destes sistemas. Ao
completarem esta unidade curricular, os alunos deverão ser capazes de:
(a) explicar o que é um sistema distribuído e quais as vantagens e propriedades
desejáveis de tais sistemas; (b) descrever os princípios subjacentes
ao funcionamento de sistemas distribuídos, os problemas e desafios
associados, e avaliar a eficácia e limitações das suas soluções; (c)
construir sistemas funcionais utilizando mecanismos de comunicação
como sockets, RPC, RMI e middleware existente.
- conhecimento da arquitetura de um sistema distribuído
- entendimento do funcionamento de um sistema distribuído
- capacidade de implementação de partes de um sistema distribuído
- entendimento das capacidades e limitações de um sistema distribuído
- algoritmos e estruturas de dados
- sistemas de operação
- desenho e análise de algoritmos
Introdução aos sistemas distribuídos e móveis. Conceitos fundamentais
de sistemas distribuídos: modelos arquiteturais; comunicação entre
processos; algoritmos distribuídos; mobilidade de recursos e
computações. Processos e comunicação: descriptores e streams;
processos e threads; virtualização; clientes; servidores; migração de
código; invocação remota de procedimentos, comunicação por mensagens,
comunicação por streams, comunicação multicast. Aplicações
cliente-servidor: sockets TCP ou UDP/IP, streams, servidores
multithreaded, conexões cifradas. Coordenação e sincronização: tempo e
estados globais; relógios e noção de tempo; ordenação de eventos;
sincronização: modelos de exclusão mútua - centralizado,
descentralizado, distribuído, e troca de "tokens" em anel; algoritmos
de eleição de líder (consensos). Middleware: remote procedure call;
object request brokers (ORBs); invocação remota de métodos; modelos
distribuídos de objectos; CORBA; Java RMI. Sistemas de nomes: nomes,
identificadores e endereços; abordagens baseadas em "home",
"distributed hash tables" e hierárquicas; espaços de nomes, resolução
de nomes e implementação de um espaço de nomes; o DNS e
LDAP. Consistência e replicação: modelos de consistência centrados nos
dados; modelos de consistência centrados no cliente; gestão de
réplicas; protocolos de consistência. Tolerância a falhas: modelos de
falha, falhas bizantinas, redundância para obviar a falha,
resiliência de processos, comunicação cliente-servidor fiável;
comunicação de grupos fiável; "commit" distribuído;
recuperação. Mobilidade de recursos e de computações; paradigma dos
agentes móveis.
Aulas Teóricas: exposição e discussão dos conceitos sobre sistemas distribuídos e móveis.
Aulas Teórico-Práticas: para apoio aos alunos no desenho e implementação de sistemas e aplicações distribuídos.
Designação | Peso (%) |
---|---|
Exame | 60,00 |
Participação presencial | 0,00 |
Trabalho laboratorial | 40,00 |
Total: | 100,00 |
2 testes: T1 com peso 35% e T2 com peso 25%
1 trabalho com peso 40%
Nota mínima nos testes (30%)
Se a soma T1+T2+Trabs >= 9.5, o aluno é aprovado e não precisa fazer exame.
Caso contrário ou se não obtiver nota mínima em algum dos testes, está obrigado a fazer exame.