Evolução: sistemas centralizados, sistemas em rede (partilha), sistemas distribuídos (vista única do sistema), sistemas autónomos (trabalho cooperativo).
Serviços em rede: ligação remota, transferência de ficheiros, troca de mensagens, navegação na rede, execução remota (ex. applets). Sistemas distribuídos: objectivo transparência.
Objectivos: eficiência, flexibilidade (modularidade, escalabilidade, portabilidade, interoperabilidade), coerência, robustez.
Transparência: acesso, localização, migração, concorrência, replicação, paralelismo, falhas, desempenho, escala, manutenção.
Serviços: primitivos (comunicação, sincronização, escalonamento); servidores sistema (serviço de nomes, serviço de tempo, serviço de migração, serviço de autenticação); servidores aplicações (web server, gestor de conferências, etc).
Comunicações: redes locais e redes de grande escala, encaminhamento, latência e débito, omissões, partições, ordenação.
Vários fluxos de actividade que comunicam através de trocas de mensagens ou memória partilhada. Noção de "thread" e processo. Processos em máquinas distintas não partilham memória (embora essa abstracção possa ser construída). Comunicação entre processos: envolvimento do núcleo e desempenho. Primitivas de sincronização.
Serviços de tempo: o que fornecem, quais as dificuldades.
Relógios lógicos. Relógios vectoriais. Relógios matriciais.
Tipos de canais: datagrama e orientado à ligação. Nomeação: directa e indirecta.
Tipos de comunicação avançados: comunicação em grupo. Difusão fiável. Ordem causal. Ordem total.
Comunicação tipo pedido/resposta. Rotinas de adaptação para o cliente e o servidor. Conversão de tipos e representação de dados. Associação: tradução entre o nome do serviço e o porto usado para comunicação. Geradores de rotinas de adaptação. Comunicação transaccional. Propriedades das transações: atomicidade, coerência, isolamento, durabilidade. Protocolos de confirmação atómica.
O problema da tradução de nomes. Recursividade. Nomes de um dado nível são traduzidos em endereços. Nomes puros e estruturados. Atributos de um objecto. Resolução de nomes. Serviços de nomes distribuídos.
Exclusão mútua distribuída. Resolução de conflitos baseada em estampilhas. Circulação de testemunho.
Eleição de um lider. Algoritmos.
Teoria das filas de espera e desempenho.
Escalonamento estático.
Escalonamento dinâmico e balanceamento de carga. Algoritmos iniciados no emissor. Algoritmos iniciados no receptor. Algoritmos hibridos.
Processamento distribuído. Serviços remotos. Execução remota. Migração.
Escalonamento em tempo-real.
Características: vários cliente e servidores, vários tipos de ficheiros.
Serviço básico de ficheiros serviço de nomes. Atributos dos ficheiros.
Mouting.
Servidores com e sem estado. Semântica da partilha.
Replicação através de difusão diferida.
Votação.
Serviço transaccional. Componentes: gestor das transacções, escalonador, gestor de objectos.
Serializabilidade.
Controlo da concorrência. Trincos (em duas fases). Estampilhas. Controlo de concorrência optimista.
Modelos de coerência de memória: coerência atómica, coerência sequencial, coerência causal, coerência na entrada, coerência na saída.
Algoritmos de gestão de memória: leitura e escrita remota, migração no acesso, replicação.