Os sistemas Distribuídos estão em toda parte. A internet permite que
usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização gerencia uma intranet, a qual fornece serviços locais e serviços internet para usuários locais e remotos. Sistemas distribuídos de pequena escala podem ser construídos a partir de computadores moveis e outros dispositivos computacionais portáteis interligados através de redes sem fio.
O compartilhamento de recursos é o principal fator de motivação para a
construção de sistemas distribuídos. Recursos como impressoras, arquivos, paginas web ou registros de banco de dados são gerenciados por servidores de tipo apropriado, por exemplo; os clientes dos servidores web geralmente são chamados de navegadores.
A maioria dos sistemas distribuídos é organizada com base em um,
entre vários, modelos de arquitetura de sistema. O modelo cliente-servidor predomina a web e outros serviços de internet.
Focalizamos os conceitos e técnicas para a interligação de rede
necessários a compreensão de sistemas distribuídos e os abordamos do ponto de vista de um projetista desse tipo de sistema. As redes de pacotes e os protocolos em camada fornecem a base da comunicação em sistemas distribuídos.
Os protocolos internet fornecem dois blocos básicos a partir dos quais os
protocolos em nível de aplicativos podem ser construídos. Há um compromisso interessante entre os dois protocolos: o protocolo UDP fornece um recurso simples de passagem de mensagem, que sofre de falhas por omissão, mas não tem penalidades de desempenho incorporadas.
A programação distribuída e a inovação a método remoto e os sistemas
baseados em eventos. Esses dois paradigmas consideram os objetos distribuídos como entidades independentes que podem se comunicar. O sistema operacional suporta a camada de middleware no fornecimento de inovações a recursos compartilhados. O SO fornece um conjunto de mecanismos nos quais diversas politicas de gerenciamento de recursos podem ser implementadas para atender aos requisitos locais e para tirar proveito dos aprimoramentos tecnológicos. O SO permite que os servidores encapsulem e protejam os recursos, enquanto deixa que os clientes os compartilhem de forma concorrente.
As ameaças à segurança dos sistemas distribuídos são generalizadas. E
fundamental proteger os canais de comunicação e as interfaces de qualquer sistema que manipule informações que possam ser objeto de ataques. Correspondência pessoal, comercio eletrônico e outras transações financeiras, todos são exemplos de tais informações. Os protocolos de segurança são cuidadosamente projetados para evitar brechas.
Os principais problemas para projetos distribuídos são:
O uso eficiente de cache no cliente para obter um desempenho
igual ou melhor do que dos sistemas de arquivos locais; A manutenção da consistência entre varias copias de arquivos de cliente colocadas em cache, quando essas copias são atualizadas; A recuperação após uma falha do cliente ou servidor; Alto desempenho de saída para leitura e escrita de arquivos de todos os tamanhos; Capacidade de mudança de escala.
O projeto e a implementação de serviços de nomes em sistemas
distribuídos. Os serviços de nomes armazenam atributos de objetos em um sistema distribuído em particular, seus endereços e retornam esses atributos quando é fornecido um nome textual para ser pesquisado.
As arquiteturas peer-to-peer foram mostradas pela primeira vez para
suportar compartilhamento de dados em grande escala, como uso do Napster e de seus derivados para compartilhamento de musica digital. O fato de que grande parte de seu uso conflitava com as leis de direitos autorais não diminui sua importância técnica, embora tivessem inconvenientes que restringiam sua implantação em aplicações nas quais garantias da integridade dos dados e disponibilidade não eram importantes.
O grau de precisao da sincronização que pode realmente ser obtido
atende a muitos requisitos, mas não e suficiente para determinar a ordem e dois eventos arbitrários ocorrendo em diferentes computadores. A relação do acontecido e uma ordem parcial dos eventos, que reflete um fluxo de informações entre eles, dentro de um processo, ou por meio de mensagens entre processos.
Os bloqueios nem sempre são implementados pelos servidores que
gerenciam os recursos compartilhados e, então, e exigido um serviço separado de exclusão mutua distribuída. Foram considerados três algoritmos que obtém exclusão mutua: um empregando um servidor central, um algoritmo baseado em anel e um algoritmo baseado em multicast, usando relógios lógicos. Nenhum desses mecanismo, conforme os descrevemos, pode suportar falhas embora possam ser modificados para tolerar algumas delas.