Buscar

LISTA FEITA II SISTEMAS DISTRIBUÍDOS

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal de Ouro Preto 
 Instituto de Ciências Exatas e Aplicadas 
 Departamento de Computação e Sistemas 
Campus João Monlevade - MG 
 
 
LISTA II – CSI433 SISTEMAS DISTRIBUÍDOS 
 
 
 
 
 1 - Descreva as maneiras pelas quais o protocolo de requisição-resposta 
mascara a heterogeneidade dos sistemas operacionais e das redes de 
computador. 
R: Esta forma de comunicação é projetada para suportar as funções e as trocas de 
mensagens entre diferentes componentes em interações típicas cliente - servidor. 
Na maioria das vezes, a comunicação cliente-servidor é síncrona, visto que o 
cliente é bloqueado até que o servidor mande uma resposta. Pode ser considerada, 
também, como de confiança, pois a resposta do servidor é, de fato uma 
confirmação para o cliente. Para mascarar a heterogeneidade dos sistemas 
operacionais e das redes de computador, o protocolo requisição-resposta trabalha 
com um trio de primitivas de comunicação: doOperation, getRequest, sendReply. 
 
 
 
O método doOperation é utilizado para invocar objetos remotos pelos clientes, 
seus argumentos especificam o servidor remoto e a operação a ser invocada junto 
as informações adicionais exigidas pela operação. Sua saída é um array de bytes 
com a resposta, presumindo que o cliente empacota os argumentos também em um 
vetor de bytes e desempacota o resultado retornado. 
O método getRequest é utilizado por um processo servidor para obter requisições 
de serviço, quando o servidor tiver invocado a operação especificada é usado 
sendReply para enviar a mensagem de reposta ao cliente. A partir do momento em 
que a mensagem é recebida pelo lado cliente, a operação doOperation é 
desbloqueada e execução continua. 
 
2 - Verifique se as seguintes operações são idempotentes: 
a) pressionar o botão “subir” (elevador): É idempotente. 
b) escrever dados em um arquivo: É idempotente. 
c) anexar dados em um arquivo: Não é idempotente. 
É uma condição necessária para a idempotência o fato de a operação não 
estar associada a nenhum estado? 
R: Sim, pois uma operação idempotente é aquela que pode ser efetuada 
repetidamente com o mesmo efeito, como se tivesse sido executada exatamente 
uma vez. 
 
 
 
3 - Explique as escolhas de projeto relevantes para minimizar o volume de 
dados de resposta mantidos em um servidor. Compare os requisitos de 
armazenamento quando os protocolos RR e RRA são usados. 
R: O volume de dados de reposta mantidos em um servidor está associado ao uso 
de históricos, ele pode consumir muita memória, tornando-se muito grande. Como 
os clientes só podem fazer uma requisição por vez, o servidor pode interpretar 
cada nova requisição como uma confirmação de sua resposta anterior. Portanto, o 
histórico precisa conter apenas a última mensagem de resposta enviada a cada 
cliente. Entretanto, o volume de mensagens de resposta no histórico de um 
servidor pode ser um problema quando ele tiver um grande número de clientes. 
Isso é combinado com o fato de que, quando um processo cliente termina, ele não 
confirma a última resposta recebida, portanto, as mensagens no histórico 
normalmente são descartadas após determinado período de tempo. 
 
Protocolo RR Protocolo RRA 
• Baseado no protocolo requisição-resposta. 
• Não sã exigidas mensagens de 
confirmação especiais, pois um reply do 
servidor já é uma confirmação de 
recebimento. 
• Falhas de comunicação podem ser 
mascaradas pela retransmissão de 
requisições e pelo registro das repostas 
em um histórico para retransmissão. 
 
• Baseado na troca de três mensagens: 
requisição, resposta e confirmação. 
• Mensagem de confirmação contém o 
requestId da resposta que está sendo 
confirmada. Isso permitirá que o 
servidor descarte entradas de seu 
histórico. 
• A perda de uma mensagem de 
confirmação não é muito prejudicial 
ao sistema. 
 
No que diz respeito ao armazenamento quando o protocolo RR é usado há mais 
requisição de memória que quando o protocolo RRA é utilizado. 
 
 
4 - Por que o número de mensagens trocadas em um protocolo poderia ser 
mais significativo para o desempenho do que o volume total de dados 
enviados? 
R: É difícil decidir-se sobre um tamanho apropriado para o buffer de recebimento 
de datagramas. No protocolo de requisição-resposta, isso se aplica aos buffers 
usados pelo servidor para receber mensagens de requisição e pelo cliente para 
receber respostas. O numero de mensagens trocadas pode indicar o pleno 
funcionamento e conexão no envio e recebimento cliente/servidor, por exemplo. O 
volume total de dados enviados nem sempre indica se o destinatário recebeu 
aquele envio, já o número de mensagens trocadas é real, é a confirmação de que os 
dados que estão enviados estão sendo recebidos. 
 
Na escolha do protocolo requisição-resposta com TCP usar o número de 
mensagens trocadas como parâmetro para avaliação de desempenho é mais 
significativo que usar o volume de dados, pois, com TCP, é permitido a 
transmissão de dados de qualquer tamanho, simplificando a implementação de 
protocolos requisição-resposta. Uma pergunta que pode e deve ser feita é se essa 
transmissão de dados de qualquer tamanho influencia e sobrecarrega o sistema. A 
resposta é “não”, pois se sucessivas requisições/respostas são trocadas entre o 
mesmo par, cliente/servidor, são enviadas pelo mesmo fluxo, a sobrecarga não 
afetaria toda conexão remota em si. 
 
 
 
5 - Formule um argumento explicando por que a comunicação indireta 
pode ser apropriada em ambientes voláteis. Até que ponto isso pode ter 
origem no desacoplamento temporal, no desacoplamento espacial ou 
mesmo em uma combinação de ambos? 
R: Def.: 
A comunicação indireta é definida como a comunicação entre entidades 
de um sistema distribuído por meio de um intermediário, sem nenhum 
acoplamento direto entre o remetente e o destinatário (ou destinatários). 
A comunicação indireta é frequentemente usada em sistemas distribuídos, pois 
técnicas de acoplamento direto entre remetente e destinatário tornam os sistemas 
muito rígidos e pouco voláteis, consequentemente sendo um tanto quanto 
intolerantes a eventuais alterações no ambiente. Dessa forma, a comunicação 
indireta é mais tolerante e mais adaptável a ambientes voláteis, por exemplo, 
supondo que um servidor falhe, é mais fácil substituí-lo por outro que ofereça 
funcionalidade equivalente, no acoplamento direto isso não é possível, na maioria 
das vezes, e as possíveis falhas afetam diretamente o cliente que precisa lidar 
explicitamente com essa falha. 
A comunicação indireta evita o acoplamento direto, herdando algumas 
propriedades. 
O desacoplamento temporal e espacial são propriedades do uso da comunicação 
indireta. No temporal, remetente e destinatário podem coexistir ou existir em 
períodos de tempos diferentes para se comunicar, é uma vantagem em ambientes 
voláteis onde os remetentes e destinatários pode ir e vir. No espacial, o remetente 
não sabe ou não precisa saber a identidade do destinatário e vice-versa. O 
desenvolvedor de sistema tem muitos graus de liberdade para lidar com alterações, 
os participantes podem ser substituídos, atualizados, duplicados ou migrados. 
 
 
 
6 - A Seção 6.1 do nosso livro texto se refere a sistemas que são acoplados 
no espaço, mas desacoplados no tempo – isto é, as mensagens são 
direcionadas para determinado destinatário (ou destinatários), mas esse 
destinatário pode ter tempo de vida independente em relação ao remetente. 
Você pode construir um paradigma de comunicação com essas 
propriedades? Por exemplo, o e-mail cai nessa categoria? 
R: Sim, tendo em vista que no acoplamento espacial o remetenteprecisa conhecer 
a identidade de um destinatário específico e que no desacoplamento temporal o 
destinatário e remetente não precisam coexistir no envio é possível criar uma 
aplicação usando esse paradigma de comunicação. O e-mail poderia ser, sim, um 
exemplo desse paradigma de comunicação, visto que o destinatário não precisa 
existir ao mesmo tempo que o remetente, porém o remetente obrigatoriamente 
deve conhecer a identidade do destinatário (ou destinatários). Sendo assim, a 
comunicação é acoplada no espaço e desacoplada no tempo. 
 
7 - Se um paradigma de comunicação é assíncrono, ele também é 
desacoplado no tempo? Explique sua resposta com exemplos apropriados. 
R: Na comunicação assíncrona, um remetente envia uma mensagem e, então, 
continua (sem bloquear); assim, não há necessidade de esperar o destinatário para 
se comunicar. O desacoplamento temporal implica que o destinatário pode não 
existir no momento em que a comunicação é iniciada. Se um paradigma de 
comunicação é assíncrono, isso não implica se é desacoplado no tempo, há 
uma distinção entre assincronismo e desacoplamento temporal. 
 
8 - Explique como é o funcionamento de filas de mensagens distribuídas. 
R: As filas de mensagens possibilitam formas de comunicação e gerenciamento 
para aplicações distribuídas, podem diminuir a complexidade da codificação de 
aplicações sem modularização e aumentar o desempenho, a confiabilidade e a 
escalabilidade. Filas de mensagens distribuídas se encaixam em um modelo de 
comunicação assíncrona, mais comumente utilizada em modelos arquiteturais 
sem servidor. Funciona da seguinte maneira: os conteúdos de texto são guardados 
e colocados em uma fila até que sejam, então, processadas e, posteriormente, 
deletados. Uma mensagem só pode ser processada uma vez e apenas por um 
consumidor. 
 
 
Utilização: As filas de mensagens podem ser usadas para modularizar alta carga 
processamento, para armazenar serviços em buffers ou lotes e para processar de 
forma uniforme picos de cargas de trabalho. 
 
9 - Liste todos os passos que envolvem uma Chamada Remota de 
Procedimento (RPC). 
R: Há algumas questões de projeto a serem ressaltadas para RPC, dentre elas: o 
estilo de programação – programação com interfaces, semânticas de chamadas 
associada à RPC, problemas de transparência e como ele se relaciona com as 
chamadas de procedimento remoto. 
RPC – Programação por Interfaces: detalhamento de procedimentos oferecidos 
por um servidor, especificando os tipos de argumentos de cada um dos 
procedimentos. Linguagens de Definição de Interface (IDL): projetadas para 
permitir que procedimentos implementados em diferentes linguagens invoquem 
uns aos outros. 
Semântica das Chamadas: determinar quantas vezes o procedimento remoto é 
executado. Uma vez quanto tudo funciona perfeitamente, nenhuma vez quando a 
mensagem do cliente não chega ao servidor, mais de uma vez, quando a resposta 
do servidor se perde. 
Problemas de transparência: as chamadas remotas são mais vulneráveis a falhas 
do que as locais, pois envolvem uma rede, outro computador e outro processo, 
sendo mais complicado prover transparência. 
 
 
 
• O cliente acessa um serviço que inclui um procedimento stub para cada 
procedimento da interface de serviço; 
• O stub se comporta como um procedimento local para o cliente, mas ao 
invés de executar a chamada, ele empacota o identificador de procedimento 
e os argumentos em uma mensagem de requisição; 
• O despachante seleciona um dos procedimentos stub de servidor de acordo 
com o identificador de procedimento presenta na mensagem de requisição; 
• Chama os procedimentos de serviço correspondente e empacota os valores 
de retorno, os procedimentos de serviço implementam os procedimentos de 
interface de serviço; 
• Os procedimentos stub do cliente e do servidor podem ser gerados 
automaticamente por um compilador de interface, a partir da interface do 
serviço. 
 
Passo a passo para uma chamada remota: 
 
Passo 1: Chamada local do procedimento(); 
Passo 2: A stub do cliente “captura” chamada e realiza o marshalling de seus 
parâmetros; 
Passo 3: Envio de mensagens com os parâmetros; 
Passo 4: Recebimento da mensagem na máquina remota e chamada ao stub do 
servidor; 
Passo 5: Stub do servidor realiza o unmarshalling dos parâmetros e chama o 
procedimento remoto; 
Passo 6: Execução do procedimento remoto; 
Passo 7: Stub do servidor realiza o marshalling da reposta; 
Passo 8: Envio da mensagem com o resultado; 
Passo 9: Recebimento do resultado e chamada ao stub do cliente; 
Passo 10: Stub do cliente realiza o unmarshalling da resposta e retorna ao 
cliente. 
 
 
10 - Apresente quais são as principais vantagens do RMI em relação ao 
RPC. 
R: Java RMI é mais eficiente que RPC, uma das vantagens do RMI é a 
possibilidade de obter a codificação do código de um objeto. 
Com RPC é possível apenas chamar funções remotas, com RMI é possível ter 
referências a objetos remotos e invocar seus métodos, também é possível passar e 
retornar mais referências de objeto remoto que podem ser distribuídas entre muitas 
instâncias JVM, mostrando-se mais poderoso. 
RMI é muito mais útil quando há necessidade de desenvolver uma arquitetura 
mais complexa que um típico cliente/servidor, pois é mais fácil disseminar objetos 
em uma rede que permita estabelecer conexões individuais explicitamente. 
 
11 - Considerando os componentes do CORBA discuta as funções do 
repositório de implementações do ponto de vista da capacidade de 
mudança de escala e da tolerância a falhas. 
R: Def.: 
Um repositório de implementações é responsável por ativar servidores 
registrados sob demanda e por localizar os servidores que estão correntemente 
em execução. O nome do adaptador de objeto é usado para se referir aos 
servidores ao registrá-los e ativá-los. 
 
 
 
Do ponto de vista de capacidade de mudança de escala, um repositório de 
implementações armazena um mapeamento dos nomes de adaptadores para nomes 
de caminho de arquivos contendo implementações de objeto, as implementações e 
os nomes de adaptadores de objeto geralmente são registrados no repositório de 
implementações quando os programas servidores são instalados. 
Do ponto de vista de tolerância a falhas, um repositório permite que sejam 
armazenadas informações extras sobre cada servidor, como informações de 
controle de acesso sobre quem pode ativá-lo ou executar suas operações. É 
possível replicar informações nos repositórios de implementação para fornecer 
disponibilidade ou tolerância a falhas. 
 
12 - Faça um texto resumindo as principais características de um Web 
Service (mínimo 8 linhas). 
R: Def.: 
Web Service é uma solução utilizada na integração de sistemas e na 
comunicação entre aplicações diferentes. Com esta tecnologia é possível que 
novas aplicações possam interagir com aquelas que já existem e que sistemas 
desenvolvidos em plataformas diferentes sejam compatíveis. 
 
Um serviço Web fornece uma interface de serviço que permite aos clientes 
interagirem com servidores, os clientes acessam operações de um servidor Web 
por meio de requisições e repostas formatadas em XML e, normalmente, 
transmitidas por HTTP. Os serviços Web podem ser acessados de uma maneira 
mais ad hoc do que os serviços baseados em CORBA, permitindo que eles sejam 
facilmente usados em aplicações de Internet. Assim como no CORBA e em Java, 
as interfaces dos serviços Web podem ser descritas em uma IDL, informações 
adicionais devem ser descritas, incluindo a codificação e os protocolos de 
comunicação em uso e o local do serviço. 
 
• Web services é uma tecnologia de chamada remota de objetos.• Permite a infraestrutura para criação de aplicações distribuídas. 
• Permitem a criação de pequenos módulos de código reutilizáveis e 
disponibilizados para construção de aplicações. 
• Utiliza protocolos Web como meio de transporte e comunicação. 
• Alto grau de abstração em relação a linguagens de programação e 
plataformas de hardware/Software. 
 
Os serviços Web são cada vez mais importantes para sistemas distribuídos, pois 
podem suportar atividade conjunta incluindo a integração B2B(empresa-
empresa), permitem a criação de software inovador em cima da base de serviços 
já existentes e fornecem o middleware subjacente para a computação em grade e 
em nuvem. 
 
Os web services fornecem infraestrutura para manter uma forma mais rica e 
estruturada de interoperabilidade entre clientes e servidores, fornecem uma base 
por meio da qual um programa cliente em uma organização pode interagir com 
um servidor em outra organização, sem supervisão humana. Permitem o 
desenvolvimento de aplicações complexa, fornecendo serviços que integram 
vários outros serviços, o fornecimento de serviços Web como um acréscimo aos 
servidores Web é baseado na capacidade de usar uma requisição HTTP para 
provocar a execução de um programa. 
 
13 - Quais são as principais diferenças entre usar CORBA e um RMI 
qualquer, como o do Java, por exemplo. 
R: Enquanto RMI é uma implementação específica, CORBA é um padrã genérico. 
Dessa forma, RMI é totalmente baseado na tecnologia Java, enquanto existem 
diversas implementações de CORBA em diversas linguagens diferentes. No caso 
específico, portanto de uma implementação Java de CORBA e do RMI, pode-se 
apontar algumas diferenças específicas. 
O protocolo de comunicação de ambas, por exemplo, é diferente: CORBA utiliza 
IIOP e RMI usa o JRMP. As referências a objetos, no caso do CORBA, são 
resolvidas pelos Object Adapters e pelo ORB. No caso do RMI, a própria máquina 
Virtual Java é responsável por essa tarefa. 
Algumas experiências demonstram que o desempenho de sistemas CORBA é 
maior que os baseados em RMI. 
No caso do CORBA, a modularidade é maior, pois a definição da interface é 
separada da implementação. Dessa forma, uma mesma interface pode gerar mais 
de uma implementação. No caso do RMI, interface e implementação estão 
embutidas no código Java. 
 
14 - Qual o problema inerente a sistemas distribuídos que relógios 
sincronizados ajudam a resolver? Dê um exemplo concreto do problema. 
R: Relógios sincronizados ajudam a resolver problemas inerentes a manutenção da 
consistência dos dados distribuídos, a verificação da autenticidade de uma 
requisição enviada para um servidor e a eliminação do processamento de 
atualizações replicadas. 
Medir o tempo pode ser problemático, devido à existência de vários pontos de 
referência. Para saber em que hora do dia um evento específico ocorreu em um 
computador em particular é necessário sincronizar seu relógio com uma fonte de 
tempo externa confiável e aceita por todos. 
Por exemplo, uma transação de comércio eletrônico envolve eventos no 
computador do negociante e no computador de um banco. É importante, para 
propósitos de auditoria, que esses eventos tenham uma informação de tempo 
precisa. 
 
15 - Explique por que o Network Time Protocol (NTP) não ajusta 
diretamente o relógio do sistema com a hora certa. Descreva como este 
ajuste é feito. Para conhecer mais sobre o NTP visite https://ntp.br/ 
R: O Network Time Protocol(NTP) não ajusta o relógio do sistema com a hora 
certa, pois cada mensagem carrega carimbos de tempo de eventos de mensagem 
recentes: os tempos locais de quando a mensagem NTP anterior entre o par foi 
enviada e recebida e o tempo local de quando a mensagem corrente foi 
transmitida. 
 
 
O NTP ajusta o relógio do sistema da seguinte forma: 
 
1. Destinatário da mensagem NTP anota o tempo local ao receber a mensagem. Os 
quatro tempos, Ti – 3, Ti – 2, Ti – 1, e Ti mostrados acima para as mensagens m e m' 
enviadas entre os servidores A e B. No modo simétrico pode haver um atraso não 
desprezível entre a chegada de uma mensagem e o envio da próxima. 
 
 
2. Para cada par de mensagens enviadas entre dois servidores, o NTP calcula uma 
compensação ci, que é uma estimativa da compensação real entre os dois 
relógios, e um atraso ai, que é o tempo de transmissão total das duas mensagens. 
Se o valor real da compensação do relógio em B, relativa à de A, for c e, se os 
tempos de transmissão reais de m e m' forem t e t' respectivamente, então temos: 
 
Ti – 2 = Ti – 3 + t + c e Ti = Ti – 1 + t' – c 
Isso leva a: 
ai = t + t' = Ti – 2 – Ti – 3 + Ti – Ti – 1 
e: 
c = ci + (t' – t)/2, onde ci = (Ti – 2 – Ti – 3 + Ti – 1 – Ti)/2 
 
3. Os servidores NTP aplicam um algoritmo de filtragem de dados em sucessivos 
pares <ci,ai>, para fazer uma estimativa da compensação c e calcular a 
qualidade dessa estimativa com base em uma quantidade estatística chamada 
filtro de dispersão. Uma dispersão relativamente alta representa dados 
relativamente não confiáveis. Os oito pares <ci,ai> mais recentes são mantidos. 
 
 
16 - Faça um resumo explicando o funcionamento dos algoritmos para 
sincronização estudados: Cristian, Berkeley, NTP. 
R: Algoritmo de Cristian: Resume-se na possibilidade de consultar servidores de 
tempo equipados com um receptor WWV ou um relógio de alta precisão, ocorrem 
variações na estimativa do atraso entre as maquinas. Basicamente o processo 
ocorre da seguinte forma: 
1 – Um computador A qualquer consulta a hora num computador B. 
2 – Computador B inclui na resposta o valor do seu relógio. 
3 – Computador A atualiza o seu relógio com o valor do relógio em B 
adicionado ao retardo da mensagem entre B e A. 
O problema desse algoritmo é que atrasos de mensagens farão com que a hora 
fornecida seja desatualizada. 
 
Algoritmo de Berkeley: É um algoritmo usado para a sincronização interna de 
um grupo de computadores. O 'Servidor de tempo' é ativo (máster) e coleta os 
valores de relógios de outros (slaves). Master usa estimativas do RTT para 
estimar o valor dos relógios dos computadores dentro dos grupos, a hora atual e 
resultante de uma média. Por fim o Master envia aos slaves o total de tempo em 
que os relógios devem adiantar/atrasar. Caso o máster falhe, um novo 
computador máster é eleito. 
 
NTP: Os servidores NTP formam uma topologia hierárquica, dividida em 
camadas ou estratos (em inglês: (strata) numerados de 0 (zero) a 16 (dezesseis). 
O estrato 0 (stratum 0) na verdade não faz parte da rede de servidores NTP, mas 
representa a referência primária de tempo, que é geralmente um receptor do 
Sistema de Posicionamento Global (GPS) ou um relógio atômico. O estrato 16 
indica que um determinado servidor está inoperante. O estrato 0, ou relógio de 
referência, fornece o tempo correto para o estrato 1, que por sua vez fornece o 
tempo para o estrato 2 e assim por diante. O NTP e então, simultaneamente, 
servidor (fornece o tempo) e cliente (consulta o tempo). De forma geral, quanto 
mais perto da raiz, ou seja, do estrato 0, maior a exatidão do tempo. O estrato ao 
qual o servidor pertence e a principal métrica utilizada pelo NTP para escolher 
dentre vários, qual o melhor servidor para fornecer o tempo. 
 
 
 
17 - Explique como funciona o método de ordenação de Lamport que utiliza 
o conceito da relação “acontece antes”. 
R: Segundo Lamport, não é possível sincronizar perfeitamente os relógios em um 
sistema distribuído, em geral não é possível usar o tempo físico para descobrir a 
ordem de qualquer par de eventos arbitrários que ocorram dentro dele. 
 
Em geral, é possível utilizar um esquema semelhante à causalidade física,mas 
aplicada aos sistemas distribuídos, para ordenar alguns dos eventos que ocorrem 
em diferentes processos. Essa ordenação é baseada em dois pontos simples e 
intuitivamente óbvios: 
 
• Se dois eventos ocorreram no mesmo processo pi (i = 1, 2,..., N), então 
eles ocorreram na ordem em que pi os observou – essa é a ordem →i que 
definimos anteriormente. 
• Quando uma mensagem é enviada entre processos, o evento de envio da 
mensagem ocorreu antes do evento de recepção da mensagem. 
 
Lamport chamou a ordenação parcial obtida pela generalização desses dois 
relacionamentos de relação acontece antes - happened-before. Às vezes, ela 
também é conhecida como relação de ordenação causal - causal ordering ou 
ordenação causal potencial – potential causal ordering. 
 
Podemos definir a relação acontece antes (AA), denotada por →, como segue: 
 
AA1: Se ∃ processo pi: e →i e', então e → e'. 
AA2: Para qualquer mensagem m, send(m) → receive(m) – onde send(m) 
é o evento de envio da mensagem e receive(m) é o evento de sua recepção. 
AA3: Se e, e' e e" são eventos tais que e → e' e e' → e", então e → e". 
 
Assim, se e e e' são eventos e se e → e', então, podemos encontrar uma série de 
eventos e1, e2,..., en que ocorrem em um ou mais processos, tal que e = e1 e e' = 
en e, para i = 1,2,..., N – 1, AA1 ou AA2 se aplica entre ei e ei+1. Isto é, ou eles 
ocorrem sucessivamente no mesmo processo ou existe uma mensagem m tal que 
ei = send(m) e ei+1 = receive(m). A sequência de eventos e1, e2,..., en não 
precisa ser única. A relação → está ilustrada abaixo para o caso de três processos 
p1, p2, p3. 
 
Pode-se notar que a → b, pois os eventos ocorrem nessa ordem no processo p1 
(a →i b) e, semelhantemente, c → d. Além disso, b → c, pois esses eventos são o 
envio e a recepção da mensagem m1 e, semelhantemente, d → f. Combinando 
essas relações, também é possível dizer que, por exemplo, a → f. 
 
 
 
 
 
18 - O que é um Estado Global em um SD e como os “cortes” se 
relacionam a esse conceito? 
R: Estados globais captam o conjunto de eventos que foram executados até o 
momento. Em sistemas distribuídos e complicado avaliar o estado global, e preciso 
cuidado ao se estabelecer o que ocorreu durante a execução. Alguns problemas 
relacionados são: coleta de lixo distribuída, detecção de deadlock distribuída e 
detecção de término distribuída. Para achar estados globais consistentes é preciso 
utilizar a técnica de cortes, que é uma divisão na execução do sistema, ou seja, um 
subconjunto do histórico global. Eventos a direita do corte estão fora do corte 
global, já eventos a esquerda estão dentro do mesmo. Cortes ainda podem ser 
consistentes (Obedecem a casualidade) e inconsistente (não obedecem a 
casualidade). 
 
19 - A figura abaixo mostra eventos ocorrendo para cada um de dois 
processos, p1, p2 e p3. As setas entre os processos denotam transmissão 
de mensagens. 
 
 
 
 
 
 
 
(a) Marque o relógio de Lamport dos eventos 
 
 
(b) Mostre os valores de Relógio Vetorial para os mesmos eventos 
 
 
 
BIBLIOGRAFIA 
 
AMAZON, Aws <https://aws.amazon.com/pt/message-queue/ > Filas de mensagens: Sistemas 
de mensagens assíncronas para trabalhos em lote e aplicativos dissociados © 2018, Amazon 
Web Services. Acessado em 19/10, às 6h00. 
 
COULOURIS, G.; DOLLIMORE, J.; KINBERG, Tim. Sistemas Distribuídos: Conceitos e 
Projetos. 4a. edição. Bookmann, 2007

Outros materiais