You are on page 1of 56

Sistemas Distribudos

Universidade Federal do ABC


Turma:
Cincia da Computao
Prof. Dr. Francisco Isidro Massetto

Bibliografia
z

Andrew S. Tanembaum, Sistemas Distribudos,


Princpios e Paradigmas 2a edio, 2008
Andrew S. Tanenbaum, Distributed Operating
Systems. Prentice-Hall, 1995
Andrew S. Tanenbaum, Distributed Systems:
Principles and Paradigms. Prentice Hall, 2002
George Coulouris, Jean Dollimore, Tim Kindberg,
Distributed Systems - Concepts and Design, 3rd Ed.,
Addison Wesley, September 2001
1

Critrio de Avaliao
z

A definir

Plano de Ensino: Contedo


Previsto
z
z
z
z
z
z
z
z
z
z
z
z

Comunicao entre Processos


Evoluo, Conceito e Caracterizao dos Sistemas Distribudos;
Modelo Cliente Servidor;
Comunicao por passagem de mensagem Sockets;
RPC - Remote Procedure Call;
Java RMI - Remote Method Invocation;
Sincronizao em SD
Transaes Distribudas
Sistemas de Arquivos Distribudos / Case
Comunicao de Grupos / P2P
WebServices
Tecnologia GRID, Cluster e Cloud;
3

Introduo
Comunicao entre Processos

Introduo
z

Sistema Operacional
z
z

Gerenciador de Recursos
Mquina Abstrata/Estendida/Virtual

Multitarefa
z

z
z

Capacidade de executar ao mesmo tempo vrios


processos
Alternncia entre processos troca de contexto
Escalonamento Dispatching Execuo
5

Introduo

Comunicao entre Processos


z

Vrios processos precisam trocar informaes


z

Memria/Arquivos

reas de memria especficas


z

Sistema Operacional (buffers, pipes, rea de


transferncia)
Determinadas m cdigo
z

Primitivas de sistema Operacional para Determinar


reas comuns

Exemplos em Cdigo C (Windows)


7

Comunicao entre Processos


int main(int argc, char *argv[]) {
int op, *valor;
void *sharedMemoryLoc;
HANDLE sharedVar;
sharedVar = CreateFileMapping(INVALID_HANDLE_VALUE, // use paging file
NULL, // no security attributes
PAGE_READWRITE, // read/write access
0, // size: high 32-bits
sizeof(int), // size: low 32-bits
"variavel");
sharedMemoryLoc = MapViewOfFile(sharedVar,FILE_MAP_WRITE,0,0,0);
valor = (int*)sharedMemoryLoc;
do{
scanf("%d",&op);
if (op == 1) {
printf("Digite um valor\n");
scanf("%d",valor);
}
else if (op == 2) {
printf("o valor atualizado vale: %d\n",*valor);
}
} while (op != 3);
UnmapViewOfFile(sharedMemoryLoc);
CloseHandle(sharedVar);
return 0;
}
8

Comunicao entre Processos


z

Linux / Windows
z

Pipe
z
z
z

bash$ comando1 | comando2


Redireciona a sada do comando1 para a entrada do
comando2
stdout e stdin

stdout sada padro (geralmente vdeo)


stdin entrada padro (geralmente teclado)
arquivos especficos do sistema operacional

rea de memria do prprio Sistema Operacional para


transferncia de dados I/O entre processos
9

Comunicao entre Processos


z

Spooling
z

rea de impresso de documentos


z Implementao: FILA de arquivos
z Todos os processos enviam documentos para o controlador
do spool que os organiza para, ento, imprimi-los

rea de Transferncia do Windows


z

z
z

Buffer para armazenamento de objetos (texto, grficos,


tabelas)
Imprescindvel para as operaes CTRL+C e CTRL+V
Implementaes semelhantes em outros Sistemas
Operacionais (Linux, Solaris)
10

Pipes Remotos
z

Linux
z

maq1$ comando1 | rsh maquina2 comando2


bash

comando1

rsh

bash

maquina1
comando2

maquina2

11

Problemas da Comunicao
z

Suponha a seguinte situao


z

Dois processos necessitam gravar dados em uma


mesma rea de memria (atualizar um arquivo ou
varivel, por exemplo)
Se ambos acessarem simultaneamente essa
memria??
z
z

z
z

Inconsistncia
Valor final da varivel / Contedo do arquivo??

Condio de Corrida
Seo Crtica
12

Necessidade
z

Sincronizao
z

z
z

Mecanismo que garanta que apenas um nico


processo ir acessar um determinado recurso por
vez
Enquanto um processo utilizar o recurso, os
demais esperam
Exemplo: Cruzamento
z
z
z

Processos: automveis
Recuros: ruas
Recurso compartilhado: trecho de cruzamento das ruas
13

Solues
z

Semforos
z

Mecanismos do SO que garantem acesso


exclusivo (Excluso mtua) a um recurso
Para utilizar o recurso, o processo deve solicitar ao
semforo
z

Caso o semforo esteja liberado, ele travado para


que o processo use o recurso e os demais esperem
Caso o semforo esteja travado, o processo deve ficar
em modo de espera, at que ocorra um evento de
liberao do semforo
14

Exemplo
z

Programa A
shared semaphore s
while(1) {
lock(s);
seo crtica();
unlock(s);
seo no crtica();
}

Programa B
shared semaphore s
while(1) {
lock(s);
seo crtica();
unlock(s);
seo no crtica();
}

15

Conceitos Gerais

Evoluo, Conceito
e Caracterizao dos Sistemas
Distribudos

Introduo: Sistemas
Distribudos
z
z

Sistemas Distribudos, h mais de uma dcada, deixaram de ser


apenas uma promessa;
Vrios exemplos bem-sucedidos de implementaes
z Meio acadmico
z Comrcio
z Indstria
z Residncias;
Novos desafios:
z Diversidade dos ambientes computacionais envolvidos;
z Necessidade de troca de mensagens atravs da rede;
z Compreenso do que vem a ser uma aplicao distribuda.
Ferramentas de apoio construo dessas aplicaes
17

Sistemas Distribudos:
Evoluo
z

De 1945 a 1985
z Computadores de grande porte e alto custo
z Trabalhavam de modo independente no havia confiabilidade na
comunicao
De 1985 em diante
z Microcomputadores com maior poder computacional
z
z
z

CPU 8, 16, 32 e 64 bits


HyperThreading e MultiCore (devido limitao de 3.4 GHz na
freqncia)
Nota: Lanado esta semana processador de 80 core (1.01 TFlops)

Pentium M 1.4GHz 149 MFlops

Redes de alta velocidade


z
z

Local Area Network LAN


Wide Area Network WAN
18

Investimentos de Empresas
z

Hardware
z
z
z
z

Intel
AMD
Sun
SGI

Software
z
z
z
z

IBM
Microsoft
Iniciativas de Software Livre (RedHat)
Oracle
19

Sistemas Distribudos:
Conceito
z

Definio de Tanenbaum aperfeioada por


Mullender:
z

Um sistema distribudo aquele que se apresenta aos seus


usurios como um sistema centralizado, mas que, na
verdade, funciona em diversas CPUs independentes;

Alm disso, um sistema distribudo no deve ter pontos


crticos de falha, ou seja, se um componente do mesmo
quebrar, isto no deve fazer com que o sistema como um
todo falhe;

Essa caracterstica de estabilidade uma de suas principais


vantagens em relao a um sistema centralizado.
20

Sistemas Distribudos:
Conceito
z

Definio de Coulouris enfatiza:


z
z
z
z

Devem estar conectados atravs de uma rede


No precisam estar localizados em uma nica sala, ou
mesmo prximos entre si
No h limite para a rea abrangida por um sistema desse
tipo;
Computadores devem estar equipados com software de
sistemas distribudos
z Usurios vem o sistema como uma entidade nica,
integrada
z Embora esteja funcionando em computadores diferentes,
situados em locais diversos.
21

Sistemas Distribudos:
Definies
z

Definio em 2 aspectos
z
z

Hardware: Mquinas independentes e autnomas


Software: O sistema apresenta-se ao usurio
como uma nica mquina

22

Esquema
email server

Desktop
computers

print and other servers


Local area
network

Web server

email server
File server

print
other servers

the rest of
the Internet
router/firewall
23

Sistemas Distribudos:
Caractersticas
z

Comunicao por Trocas de Mensagens:


z

Utilizao de meios de comunicao introduz caractersticas


diferentes no modelo de comunicao;
A comunicao fica sujeita a um conjunto de fatores que
podem afetar sua confiabilidade perdas/interferncias;
Protocolos
z Garantir confiabilidade e ordem das mensagens
Interligao de vrias redes
z Atraso
z Falha na Transmisso
z Tempo mximo de espera por uma mensagem
24

Sistemas Distribudos:
Caractersticas
z

Modelo de Falhas:
z
z

Maior probabilidade de falhas maior quantidade de


equipamentos
Falhas individuais no podem afetar o sistema como um
todo
z Algoritmos de deteco e recuperao de falhas
z Replicaes, Redundncias
Fatores que levam a falhas
z Elementos de interligao

Interferncias, cabeamento mal estruturado, intempries naturais


Falta de alimentao eltrica nos equipamentos

Nodos (Ns) do sistema

Falhas de software (erro de programao)


Falhas fsicas (crash em equipamento)
25

Sistemas Distribudos:
Caractersticas
z

Sincronismo:
z

Sistema centralizado
z Sistema de sincronismo concentrado em um nico ncleo
com regras
Sistema Distribudo
z Informao est necessariamente dividida por diversas
mquinas e discos;
Problemas com cada Nodo do sistema
z No compartilham relgio global no possuem mesmos
horrios
z Disputa por recursos algoritmos mais complexos e que
podem ser afetados pela comunicao entre os
processadores
26

Sistemas Distribudos:
Caractersticas
z

Segurana:
z

Vulnerabilidade de Redes
z Observao das Mensagens sniffing
z Ataques DoS, DDoS, Buffer Overflow
Validao da identidade dos usurios
z Usurio vlido
z Credenciais para utilizar recursos
Interligao de servios pblicos e privados
z Internet
z Polticas de segurana diversas (nveis de acesso)
z Sistemas Heterogneos
27

Sistemas Distribudos:
Caractersticas
z

Heterogeneidade:
z
z

Sistema amplo
Variedade de Arquiteturas
z CISC, RISC, Vetoriais
z 32, 64 bits
z Intel, Mac, Sparc, Mainframes, etc
Variedade de Sistemas Operacionais
z Linux, Windows, MacOS, Solaris, AIX, HP-UX, BSD
Representao interna de valores.
z O primeiro octeto o de peso mais significativo (big endian);
z O primeiro octeto o de peso menos significativo (little
endian).
28

Sistemas Distribudos:
Caractersticas
z

Desempenho:
z

z
z
z

Desempenho de um SD deve ser compatvel com


um Sistema Centralizado
Diviso do processamento entre os diversos ns
Custo da comunicao
Com SD possvel atingir desempenhos jamais
imaginveis com Sistemas Centralizados

29

Sistemas Distribudos:
Caractersticas
z

Custo:
z

Pode-se obter um SD com a mesma quantidade


de processadores de um SC com um custo muito
menor
Utilizao de mltiplos processadores de baixo
custo interligados em rede
Capacidade de se obter um desempenho muito
maior com o mesmo investimento do que em um
Sistema Centralizado
30

Sistemas Distribudos:
Caractersticas
z

Distribuio Geogrfica:
z
z

Componentes fisicamente distantes uns dos outros


Aplicaes Inerentemente Distribudas
z
z
z

Venda de passagens areas


Sistema integrado de gesto empresarial
Internet...

31

Sistemas Distribudos:
Caractersticas
z

Compartilhamento de Recursos:
z

Perifricos de alto custo


z

Dados em um ambiente centralizado


z

Impressoras laser coloridas, discos RAID com interface


SCSI
Bases de dados de transaes financeiras

Problema
z
z

Controle de acesso e concorrncia


Mecanismos mais complexos
32

Sistemas Distribudos:
Caractersticas
z

Capacidade de Expanso (Scalability):


z

Sistema Centralizado
z
z

Limite fsico para o nmero mximo de processadores


Limite para discos, memria

Sistema Distribudo
z

Necessidade de mais desempenho acoplar mais


mquinas
Em funo da demanda, aumenta-se o nmero de ns
do sistema
Problema interligao congestionamento
33

Sistemas Distribudos:
Caractersticas
z

Disponibilidade:
z
z
z

z
z

Tempo em que o sistema utilizvel


Desejvel = 100%
Mquinas independentes podem continuar mantendo o
sistema em operao no caso de falhas em outras
mquinas
Sistema deve ser projetado para tal
Exemplos
z Sistema bancrio
z Web Servers
Garantia de Disponibilidade
z Redundncia (software, hardware)
z Algoritmos de recuperao
34

Sistemas Distribudos:
Caractersticas
z

Concorrncia:
z

z
z

Mais complexo do que em um Sistema


Centralizado
Mecanismos de controle de concorrncia devem
ser revistos (semforos, mutexes)
Maior nmero de mquinas maior concorrncia
Rede influencia o acesso aos recursos

35

Sistemas Distribudos:
Caractersticas
z

Transparncia
z

Localizao: o usurio no precisa saber onde esto os


recursos
Replicao: no necessrio saber quantas cpias do
recurso existem
Migrao: recursos podem mudar de lugar sem a alterao
de nomes
Concorrncia: recursos podem ser disputados sem
conhecimento do usurio
Paralelismo: vrias atividades podem ocorrer
simultaneamente sem o conhecimento dos usurio
36

Vantagens
z
z
z

z
z
z

z
z

Compartilhamento de dados: base de dados comum;


Compartilhamento de dispositivos: acesso compartilhado a
perifricos;
Comunicao: torna-se mais simples e mais rpida a
comunicao entre pessoas. Alm disso, possvel:
transferncia de arquivos entre ns, login remoto, etc;
Flexibilidade: dividir a carga de trabalho entre os ns da rede;
Confiabilidade: se um n falha os demais podero continuar
operando;
Velocidade de computao: maior poder computacional obtido
atravs de concorrncia. H a possibilidade de distribuir uma
computao particionada a vrios ns para executarem
concorrentemente;
Performance a baixo custo: preo baixo dos PCs;
Escalabilidade: aumentar o nmero de ns
37

Desvantagens (Desafios)
z

Software
z
z
z
z

Rede
z
z
z

Falta de experincia
Mudana de Paradigma
Conhecimento sobre a distribuio
Quanto deve ser feito pelo sistema e quanto pelo usurio?
Perda de mensagens
Sobrecarga na comunicao
Dimensionamento da rede

Segurana
z

Autenticao, credenciais, bloqueios


38

Conceitos de Hardware
z

Taxonomia de Flynn
(SD)
Single Data

(MD)
Multiple Data

(SI)
Single Instruction

SISD
Mquinas de Von
Newmann
convencionais

SIMD
Mquinas Vetoriais
(CM-2, MasPar)

(MI)
Multiple Instruction

MISD
Sem representante (at
o momento)

MIMD
Multiprocessadores e
Multicomputadores
(nCUBE, Intel Paragon,
Cray T3D)

39

SISD
z

Computadores com um
nico processador

40

SIMD
z

Mquinas vetoriais e
matriciais que executam
a mesma instruo em
paralelo sobre vrios
conjuntos de dados

41

MISD
z
z

Modelo Conceitual
No existem
implementaes como
produtos
Pesquisas
desenvolvidas (Flynn)

42

MIMD
z

Memria
Compartilhada:
mquinas SMP
Memria Distribuda:
clusters

43

Conceitos de Software
z

Acoplamento
z

Fortemente Acoplados
z

Grau de dependncia entre os diversos componentes do


sistema
Tambm define como o usurio v o sistema
Os diversos processadores cooperam na execuo de uma
tarefa (processamento paralelo)

Fracamente Acoplados
z

Mquinas independentes, com sua prpria memria, HD,


processador que se comunicam quando necessrio
44

Sistema Operacional de Rede


z
z
z

Software Fracamente Acoplado


Hardware Fracamente Acoplado
Rede de Estaes de Trabalho conectadas por uma LAN
z Cada estao de trabalho pode ter ou no disco rgido
z Cada estao de trabalho tem o seu prprio sistema operacional
z Todos os comandos so normalmente executados localmente
z Eventualmente possvel fazer uma conexo remota com outra
estao de trabalho
Forma mais conveniente de comunicao e compartilhamento de
informao: Sistema de Arquivo Global Compartilhado (NFS)
z Implementado em uma ou mais mquinas chamadas Servidores
de Arquivos
z Servidores de Arquivos aceitam requisies de programa de
usurios (chamados clientes)
45

Sistema TimeSharing
Multiprocessadores
z
z
z

z
z
z
z

Software Fortemente Acoplado


Hardware Fortemente Acoplado
Mquinas voltadas para propsitos especficos, como
bases de dados dedicadas e processamento de
imagens;
Todo o projeto pode ser centralizado => viso de um
nico processador.
Existncia de uma nica fila de espera (processos
que no esto bloqueados e prontos para execuo);
Memria compartilhada por todos os processadores;
nico sistema de arquivos;
46

Sistema Distribudo
z
z
z
z
z
z
z
z
z

Software Fortemente Acoplado


Hardware Fracamente Acoplado
Cada usurio tem a mesma imagem do sistema.
Impresso de um nico processador Virtual
Um mecanismo de comunicao interprocesso nico e global qualquer processo pode se comunicar com qualquer outro;
Gerenciamento de processos precisa ser o mesmo no sistema
todo (criao, destruio, comeo, interrupo de processos);
nico conjunto de chamadas de sistema;
Sistema de arquivo tambm precisa ter as mesmas
caracteristicas;
Cpias identicas do kernel executam em todas as CPUs do
sistema (escalonamento, swapping, paginao, etc).
47

Diferenas
Parece um nico
processador virtual?
Tem o mesmo SO?
Nmero de cpias do
SO
Como sua
comunicao?

SO de Rede

Sistema Distribudo

Sistema Timesharing
Multiprocessadores

No

Sim

Sim

No

Sim

Sim

Mensagens

Memria Compartilhada

Arquivos
Compartilhados

Protocolos Requeridos?

Sim

Sim

No

Uma nica fila de


execuo?

No

No

Sim

Arquivos tem a mesma


semntica?

Usualmente no

Sim (para ter uma


imagem nica do
sistema)

Sim

48

Aspectos de Projeto
z

Transparncia
z

Esconder o fato do usurio estar tratando com um


sistema Distribudo
z

Ex.: Make no Unix compilaes em paralelo

Transparncia para programadores (nvel mais


baixo)
z

Interface das chamadas do sistema oculta a existncia


de mltiplos processadores

49

Aspectos de Projeto
z

Flexibilidade
z

Kernel Monoltico
z

Concentra todas as funcionalidades, embora no sejam


totalmente utilizadas

MicroKernel
z

Kernel com funcionalidades mnimas, para que


mquinas com propsitos especficos tenham servios
configuradas

50

Aspectos de Projeto
z

Confiabilidade
z

Teoria: se uma mquina falha, outra pode realizar


seu trabalho
Prtica: cooperao de alguns servidores
especficos

Confiabilidade: probabilidade do sistema estar


operando normalmente em um intervalo de
tempo
51

Aspectos de Projeto
z

Disponibilidade
z
z

Frao do tempo em que o sistema usvel


Pode ser aumentada por meio de redundncia
z
z

z
z

Partes de software ou hardware podem ser replicadas


Maior nmero de rplicas maior probabilidade de
inconsistncias

Segurana: integridade das informaes


Tolerncia a Falhas: capacidade do sistema se
recuperar e esconder a falha do usurio
52

Aspectos de Projeto
z

Desempenho
z
z

No pode ser pior do que um sistema Centralizado


Medidas
z Tempo de resposta
z Throughput nmero de jobs por intervalo de tempo
z Quantidade de recursos consumidos na rede
z Resultados de Benchmarks
Comunicao
z Paralelismo de Granularidade Fina

Pouca computao
Muita interao

Paralelismo de Granularidade Grossa

Muita computao
Pouca interao
53

Aspectos de Projeto
z

CGM
z
z

Coarse-Grained Multiprocessor
Ideal sempre manter o processador ocupado e a
rede pouco utilizada
Dificuldade
z

Encontrar o equilbrio entre comunicao e


processamento
Dificuldade em encontrar aplicaes que faam uso
desta abordagem

54

Aspectos de Projeto
z

Escalabilidade
z

Com 10 processadores
z
z

Com 50 processadores
z
z

Sistema Ok
Desempenho comea a ficar comprometido

Com 100 processadores


z

Sistema OK
Desempenho proporcional quantidade de mquinas

Sistema falha

Desafio: Conciliar desempenho com escalabilidade


55

You might also like