Pós-Graduação em Computação Aplicada
Michele Alves de Freitas Batista
Prof. José Carlos Becceneri
São José dos Campos, 2004
Por que construir sistemas distribuídos?
Pessoas são distribuídas, informações são distribuídas
Fatores que contribuíram para o aumento do DDP
 aumento do número de computadores pessoais
baratos e poderosos
 aumento do número de usuários
Onde processadores, dados e outros aspectos de um
sistema de processamento de dados são importantes
dentro de uma organização.
Distributed Data Processing (DDP)
Um sistema DDP envolve uma divisão de funções no sistema e
pode envolver uma organização distribuída das bases de
dados, do controle de dispositivo e da rede.
Os computadores pessoais são usados para suportar uma
variedade de aplicações, abrigando:
 base de dados
 gerenciador da base de dados
 sistemas operacionais
DDP - Capacidades
O desenvolvimento do sistema operacional distribuído
deu-se pela evolução de suas capacidades:
 Arquitetura de comunicações
 Sistema operacional de rede
 Sistema operacional distribuído
DDP - Capacidades
Arquitetura de comunicações
Software que suporta uma rede de computadores
independentes.
Fornece a sustentação para aplicações distribuídas, tais como
correio eletrônico, transferência de arquivo e acesso ao
terminal remoto.
Cada computador tem seu próprio sistema operacional
separado, e uma mistura heterogênea de computadores e de
sistemas operacionais é possível, já que todas as máquinas
suportam a mesma arquitetura de comunicações.
DDP - Capacidades
Sistema operacional de rede
Esta é uma configuração em que há um aplicativo de rede, estações de
trabalho e um ou mais servidores.
Os servidores fornecem serviços em rede ou aplicativos, tais como o
armazenamento de arquivo e o gerenciamento da impressora.
Cada computador tem seu próprio sistema operacional privado.
A função do sistema operacional da rede é permitir que as estações de
trabalho interajam com o servidor.
O usuário está ciente que há múltiplos computadores independentes e
deve tratá-los explicitamente.
Tipicamente, uma arquitetura comum de comunicações é usada para
suportar estas aplicações da rede.
DDP - Capacidades
Sistema operacional distribuído
É um sistema operacional comum compartilhado por uma
rede dos computadores.
Enxerga seus usuários como um sistema operacional
centralizado, mas fornece ao usuário o acesso transparente
aos recursos de um número de máquinas.
Um sistema operacional distribuído pode confiar em uma
arquitetura de comunicações para funções básicas de
comunicação.
Sistemas Cliente/Servidor
Termos utilizados
Applications Programming Interface (API)
Aplicativos que permitem que os clientes e servidores se
comuniquem.
Cliente
Um solicitante de informação da rede, geralmente um PC ou uma
estação de trabalho, que possa perguntar a base de dados e/ou
outra informação de um servidor.
Middleware
Um conjunto de drivers, APIs, ou outro software que melhora a
conectividade entre uma aplicação do cliente e um servidor.
Sistemas Cliente/Servidor
Termos utilizados
Base de dados relacional
Uma base de dados em que o acesso de informação é limitado à
seleção das fileiras que satisfazem a todos os critérios da busca
Servidor
Um computador, geralmente uma estação de trabalho potente, um
minicomputador ou um mainframe, que abriga informação para
manipulação dos clientes na rede.
Structured Query Language (SQL)
Uma linguagem desenvolvida pela IBM para criar, atualizar ou
consultar bases de dados relacionais.
Sistemas Cliente/Servidor
Ambiente Genérico do Cliente/Servidor
As máquinas do cliente são
geralmente PCs ou estações
de trabalho que fornecem
uma relação user-friendly
ao usuário.
LAN ou WAN ou
Internet
Server
Workstation (client)
Como o termo sugere, um
ambiente cliente/servidor
está povoado por clientes e
por servidores.
A estação de trabalho
apresenta geralmente o tipo
de relação gráfica que é a
mais confortável aos
usuários, incluindo o uso de
janelas e mouse.
Sistemas Cliente/Servidor
Cada servidor no ambiente cliente/servidor fornece um
conjunto de serviços compartilhados aos clientes.
Atualmente, o tipo mais comum de servidor é o servidor
de base de dados, controlando geralmente uma base de
dados relacional.
O servidor permite:
 que muitos clientes compartilhem a mesma base de
dados;
 que um sistema de alto desempenho controle a base
de dados.
Sistemas Cliente/Servidor
Além dos clientes e dos usuários, o terceiro ingrediente
essencial do ambiente cliente/servidor é a REDE.
Sistemas cliente/servidor são sistemas distribuídos. Os
usuários, as aplicações e os recursos são distribuídos em
resposta às exigências do negócio e ligados por um único
LAN ou WAN ou por redes de Internet.
Sistemas Cliente/Servidor - Características
Características que diferem uma configuração cliente/servidor
de outras soluções de processamento distribuído:
 Há um esforço em trazer aplicações user-friendly ao
usuário. Isto dá ao usuário o controle sobre o sincronismo
e o estilo do uso de computador e dá aos gerenciadores a
responsabilidade de suas necessidades locais. O usuário
não possui a consciência de que está em um ambiente de
rede.
 O usuário tem acesso a múltiplos servidores.
Sistemas Cliente/Servidor - Características
 Embora as aplicações sejam dispersadas, há uma
ênfase em centralizar as bases de dados e o
gerenciamento da rede. Isto permite ao gerenciador
manter o controle total em sistemas de computação
e de fornecer a interoperabilidade de modo que os
sistemas sejam amarrados junto.
 O networking é fundamental à operação. Assim, a
gerência e a segurança de rede têm uma prioridade
elevada em sistemas operacionais.
Aplicações Cliente/Servidor
A característica central de uma arquitetura cliente/servidor
é o alocamento de tarefas entre clientes e servidores.
No cliente e no servidor, o software básico é um sistema
operacional rodando numa plataforma de hardware.
A plataforma e o sistema operacional do cliente e do
servidor podem diferir.
Aplicações Cliente/Servidor
Arquitetura Genérica do Cliente/Servidor
Client Workstation
Server
Presentation services
Application logic
(client portion)
Communications
software
Client
operating system
Hardware platform
Request
Response
Protocol
interaction
Application logic
(server portion)
Communications
software
Server
operating system
Hardware platform
Assim, se um
cliente e um
servidor
compartilham
os mesmos
protocolos de
comunicação e
suporta as
mesmas
aplicações,
estas diferenças
lower-level são
irrelevantes.
Aplicações Cliente/Servidor
É o software de comunicação que permite a
interoperabilidade entre o cliente e o servidor.
O principal deste software de sustentação (sistema
operacionais e de comunicações) é fornecer uma base
para aplicações distribuídas.
Idealmente, as atividades executadas pela aplicação
podem ser divididas entre o cliente e o servidor de uma
maneira que otimize recursos da plataforma e da rede e
que otimize a habilidade dos usuários de executar várias
tarefas e usar recursos compartilhados.
Aplicações Cliente/Servidor
Um fator essencial no sucesso de um ambiente
cliente/servidor é a maneira em que o usuário interage
com o sistema como um todo. Na maioria de sistemas
cliente/servidor, há uma ênfase em fornecer uma interface
de usuário gráfica (GUI) que seja fácil de se usar, fácil de
aprender, contudo poderoso e flexível.
Assim, nós podemos pensar em um módulo de serviços da
apresentação na estação de trabalho do cliente
responsável por fornecer uma interface user-friendly às
aplicações distribuídas disponíveis no ambiente.
Aplicações Database
Neste ambiente, o servidor é essencialmente um
servidor da base de dados.
A interação entre o cliente e o servidor está nas
transações em que o cliente faz um pedido à
base de dados e recebe uma resposta.
Aplicações Database
Arquitetura de Cliente/Servidor para Aplicações Database
Client Workstation
Presentation services
Application logic
Server
Request
Database logic
Database logic
Communications
software
Client
operating system
Hardware platform
Response
Protocol
interaction
Communications
software
DB management
system
Server operating system
Hardware platform
A ligação entre o cliente e o servidor é o software que permite ao
cliente fazer pedidos para o acesso à base de dados do servidor.
Um exemplo popular de tal lógica é o SQL.
Classes de Aplicações Cliente-Servidor
Em uma estrutura cliente/servidor, há implementações
que dividem o trabalho entre o cliente e o servidor
diferentemente. As principais opções para aplicações
database são:
 Host-based processing
 Server-based processing
 Client-based processing
 Cooperative processing
Classes de Aplicações Cliente-Servidor
Host-based processing
Refere-se ao ambiente de mainframe tradicional em que
todo ou virtualmente todo o processamento é feito num host
central. Freqüentemente, a interface do servidor é através
de um terminal mudo. Mesmo se o usuário estiver usando
um microcomputador, a estação do usuário é geralmente
limitada ao papel de um terminal emulador.
Presentation logic
(a)
Application logic
Database logic
DBMS
Client
Server
Classes de Aplicações Cliente-Servidor
Server-based processing
O cliente é o principal responsável por fornecer uma interface gráfica
ao usuário, enquanto virtualmente todo o processamento é feito no
servidor. A estação de trabalho do usuário fornece uma interface userfriendly e as bases de dados e as aplicações podem fàcilmente ser
mantidas em sistemas centrais. Embora o usuário ganhe a vantagem de
uma interface melhor, este tipo de configuração não representa nenhum
ganho significativo na produtividade.
(b)
Presentation logic
Application logic
Database logic
DBMS
Client
Server
Classes de Aplicações Cliente-Servidor
Client-based processing
No outro extremo, virtualmente todo o processamento da
aplicação pode ser feito no cliente, com exceção das rotinas
de validação de dados e de outras funções lógicas da base de
dados que são executadas no servidor.
Presentation logic
Application logic
(c)
Application logic
Database logic
DBMS
Client
Server
Classes de Aplicações Cliente-Servidor
Cooperative processing
O processamento da aplicação é executado de uma forma
otimizada, extraindo vantagem do desempenho de máquinas
do cliente e do servidor e da distribuição dos dados. Tal
configuração é mais complexa, mas a longo prazo este tipo
de configuração pode oferecer ganhos maiores da
produtividade do usuário e uma eficiência maior da rede.
Presentation logic
(d)
Application logic
Database logic
Database logic
DBMS
Client
Server
Classes de Aplicações Cliente-Servidor
As figuras (c) e (d) correspondem às configurações em
que uma fração considerável da carga está no cliente. É
chamado de modelo cliente gordo.
Traz como principal benefício a vantagem do
processamento de aplicação offloading nos servidores,
aumentando a eficiência e diminuindo prováveis
engarrafamentos. Porém o aumento de funções
sobrecarrega rapidamente a capacidade da máquina.
Classes de Aplicações Cliente-Servidor
A figura (b) representa um cliente magro. Refere-se a
camada de software que suporta uma interface para o
usuário baseado em janelas no cliente enquanto a
execução da aplicação é feita em um servidor.
Arquitetura Cliente-Servidor Three-Tier
A arquitetura cliente/servidor tradicional envolve duas
camadas, ou tiers: uma camada do cliente e uma do
servidor. A arquitetura de três-camadas vem se tornando
cada vez mais comum.
Nesta arquitetura, o software de aplicação é distribuído
entre três tipos de máquinas:uma máquina do usuário,
um servidor middle-tier, e um servidor backend. A
máquina do usuário é o cliente e, no modelo three-tier,
temos um cliente magro. As máquinas middle-tier são
essencialmente passagens entre os clientes magros do
usuário e uma variedade de servidores backend da base
de dados. As máquinas middle-tier podem converter
protocolos e mapear um tipo de pergunta da base de
dados a outro.
Consistência do Arquivo Cache
Quando um arquivo do servidor é usado, o desempenho do
arquivo I/O pode ser degradado no acesso local do arquivo
devido o atraso imposto pela rede.
Para reduzir esta penalidade do desempenho, os sistemas
individuais podem usar arquivos cache para acessar
registros recentemente acessados.
Por causa do princípio de localidade, o uso de um arquivo
cache local deve reduzir o número de acessos remotos do
servidor que devem ser feitos.
Consistência do Arquivo Cache
Quando os caches contêm cópias exatas de dados remotos,
nós dizemos que os caches são consistentes. Os cachês
tornam-se inconsistentes quando os dados remotos são
mudados e as cópias locais antigas não estão rejeitadas.
Problema da consistência do cache:
Manter cópias locais dos caches de dados remotos.
Para evitar este problema, deve-se usar técnicas para
impedir o acesso simultâneo a um arquivo por mais de um
cliente. Isto garante a consistência à custa do desempenho
e flexibilidade.
Middleware
É uma camada adicional de software usada não só
para ocultar a heterogeneidade da coleção de
plataformas, mas também para melhorar a
distribuição de transparência.
Ela é colocada entre as aplicações e o sistema
operacional de rede, oferecendo um alto nível de
abstração. Assim, tais aplicações não fazem uso direto
da interface de programação.
Arquitetura Middleware
A finalidade básica do middleware é
permitir que uma aplicação ou um usuário
em um cliente acesse uma variedade dos
serviços no servidor sem que haja
preocupação sobre diferenças entre
usuários.
Client Workstation
Presentation services
Application logic
Middleware
interaction
Middleware
Middleware
Communications
software
Client
operating system
Hardware platform
Server
Protocol
interaction
Communications
software
Aplications
services
Server operating system
Hardware platform
Bibliografia
Livros
Stallings, William. Operating Systems – Internals and Design Principles.
Prentice Hall, 2001.
Distributed Systems. Edited by Sape Mullender.
Sites
http://www.cs.montana.edu/courses/current/418/cs418-15.pdf
http://discolab.rutgers.edu/users/muralir/cs519-fall98/
http://www.din.uem.br/~cfmoro/download/coulouris_cap2.PDF
http://wwwhome.cs.utwente.nl/~pires/publications/sbrc2001-p1.pdf
http://www.dc.ufscar.br/~paulovic/MidSDs.pdf
Download

Sistemas Operacionais Distribuídos (Michele)