1) Quais são os principais parâmetros (atributos) presentes nos diversos tipos de sistemas distribuídos? Explicar cada um deles. • compartilhamento de recursos • transparência • escalabilidade • tolerância a falhas / disponibilidade 2) Explicar o que é dar exemplo de: a) Deadlock: Situação na qual, duas ou mais unidades concorrentes não conseguem prosseguir a execução por que cada uma está aguardando que alguma das outras faça alguma coisa. -> Ex: Hipoteticamente num banco de dados, se um processo travar uma tabela A e outro processo travar uma tabela B e esses processos precisarem acessar uns aos outros, ocorro um deadlock, pois o BD impede que outros processos acessem uma tabela quando ocorre um Update, um Insert ou um Delete de dados de uma tabela. b) Livelock: Situação na qual uma unidade concorrente não consegue terminar a execução ou entrar em uma seção crítica por excesso de trabalho ou falta de velocidade. Difere de deadlock por estar ativa e não bloqueada ou aguardando algo. c) Exclusão Mútua: É uma técnica usada em programação concorrente na qual dos participantes não podem acessar um mesmo recurso compartilhado ao mesmo tempo, esta técnica é implementada através de um semáforo binário, por exemplo. 3) Explicar o que são algoritmos distribuídos: a) Completamente síncrono. Componentes progridem em passos simultâneos, em rounds síncronos. Mais simples de descrever, programar e raciocinar. Às vezes é possível que sistemas reais simulem um sistema síncrono na maioria das vezes isto é impossível ou ineficiente b) Completamente assíncrono. Componentes progridem em passos independentes, em ordem arbitrária, com velocidade arbitrária. Mais difícil de programar, mas algoritmos são mais gerais e portáveis. Às vezes não tem poder suficiente para resolver problemas de maneira eficiente (ou mesmo para resolver o problema) c) Parcialmente síncrono. Assumimos algumas restrições na ordem relativa dos eventos, não tão rígida como no modelo síncrono. Mais realístico, mas mais difícil de programar e raciocinar. Algoritmos são eficientes, mas não se comportam de maneira correta se considerações sobre o tempo forem violadas. 4) O que é IPC? Explicar suas variações. IPC – Comunicação entre processos (Inter-process comunication). Basicamente, a comunicação entre processos pode ser feita de duas formas: através da troca de mensagens e/ou através de memória compartilhada. Na comunicação entre processos através de memória compartilhada, os processos compartilham uma área de memória comum, onde dados podem ser lidos e escritos por processos em execução. Na comunicação através de troca de mensagens, os processos não compartilham memória, a troca de dados é feita através de mensagens. Esta troca pode ser síncrona (o processo emissor é bloqueado até que o receptor aceite a mensagem) ou assíncrona (o processo emissor continua sua execução, independente do receptor aceitar a mensagem). RPC - Estabelece sentido duplo à comunicação entre dois processos. 5) Citar os principais tipos de problemas a serem resolvidos em algoritmos distribuídos. Dar exemplo. Em sistemas distribuídos, um modelo de falhas é definido em termos de falhas de processos e falhas de comunicação. Admite-se normalmente que falhas de comunicação resultam em perda ou atraso de mensagens Ex: Durante a execução de um programa distribuído contendo dois processos, um processo P1 requer, em algum ponto de sua execução, algum dado proveniente do resultado de alguma computação efetuada pelo processo P2. Devendo existir, portanto, alguma maneira de P1 e P2 se comunicarem. Além disso, se P1 atinge o ponto, na sua execução, que necessita dos dados D e se P2, por uma razão qualquer, ainda não comunicou a informação, P1 deve estar preparado para bloquear a sua execução naquele ponto, esperando até que P2 o faça. Devendo existir, desta forma, alguma maneira dos dois processos se sincronizarem.