|
Os Sistemas Distribuídos têm,
por seu maior objetivo, melhorar a comunicação
entre os computadores, ou melhor, propiciar a
integração destes num sentido amplo que pode
envolver facilidade de mudanças futuras,
rapidez nas
Trocas de
Informações, confiabilidade na execução
dos processos.
Porém, no desenvolvimento de um sistema
distribuído encontramos um pequeno problema :
software. Devido ao elevado tamanho e
complexidade de sistemas distribuídos, o seu
desenvolvimento exige um conhecimento bastante
profundo dessa área e a utilização de técnicas
adequadas de concepção e projeto de sistemas.
Sistemas distribuídos são compostos por vários
processadores independentes.
Sistemas distribuídos se
diferenciam dos demais computadores pelo
acoplamento fraco entre os processadores, ou
seja, os computadores não tem acesso a uma memória
comum. Toda a interação deve ser realizada por
troca de mensagens através de canais de
comunicação.
Sistemas distribuídos apresentam um problema
intrínseco, qual seja, o de garantir a
integridade e consistência dos dados distribuídos
pelos vários processadores. Esse problema força
a aplicação de técnicas de tolerância a
falhas, mesmo quando não existe qualquer outra
exigência mais forte quanto a confiabilidade e
disponibilidade imposta pela aplicação.
Entretanto, sistemas distribuídos apresentam
uma redundância natural, extremamente
proveitosa para o emprego de tolerância a
falhas. Defeito em um processador não precisa
provocar necessariamente o colapso de todo o
sistema. O serviço pode ser mantido em um
sistema, que pode ser reconfigurado usando os
demais processadores disponíveis.
Sistemas distribuídos não possuem memória
compartilhada nem relógio global. Uma melhor análise
das características de um sistema distribuído
pode ser conduzida considerando um modelo
físico e um modelo lógico. No modelo físico
os componentes são a rede de comunicação e
os nodos (processador, relógio local, memória
local volátil, armazenamento não volátil,
interface de rede, software).
No modelo lógico a aplicação é vista como
distribuída, a rede é considerada
completamente conectada e os canais entregam
mensagens na ordem que foram enviadas, mas não
existe ordenação total de mensagens, apenas
ordenação parcial.
Os sistemas distribuídos são classificados
como síncronos ou assíncronos, dependendo se
existe um limite de tempo finito e conhecido
para troca de mensagens.
É usual também o conceito de time out
associado aos sistemas síncronos.
Sistemas síncronos e assíncronos
correspondem a dois extremos no modelo de
comportamento temporal de sistemas. Um
comportamento intermediário chamada assíncrono
temporizado vem adquirido importância. Esse
modelo se baseia no fato que computadores reais
possuem relógios locais com pequeno desvio em
relação ao tempo real.
A ordenação de eventos relaciona a dificuldade
de determinar relações temporais devido à
inexistência de relógio global, ou seja,
determinar a ordenação temporal de eventos que
ocorrem em nodos diferentes, medidos por relógios
diferentes. Relógios lógicos (introduzidos por
Lamport em 1978) são um meio de assinalar um número
a um evento. Não possuem nenhuma relação com
o tempo físico. Podem ser implementados através
de timestamps. O relógio lógico pode ser usado
para ordenação total de eventos (mas não
temporal) e é suficiente para a maior parte das
aplicações que não exigem respostas críticas
quanto ao tempo.
O objetivo do sistema
distribuído é criar na cabeça de seus usuários
a ilusão de que toda rede de computadores nada
mais é do que um único sistema de tempo
compartilhado (time-sharing), em vez de um
conjunto de máquinas distintas. Portanto um
Sistema Distribuído é aquele que roda em um
conjunto de máquinas sem memória
compartilhada, máquinas que mesmo assim
aparecem como um único computador para seus usuário
|