• Nenhum resultado encontrado

Sistemas Distribuídos

N/A
N/A
Protected

Academic year: 2022

Share "Sistemas Distribuídos"

Copied!
26
0
0

Texto

(1)

Sistemas Distribuídos

INF2545

(2)

Sistemas Distribuídos

• 

o que são: "coleção de máquinas independentes que aparecem para o usuário como um único sistema

coerente"

•  que tipo de usuário?

»  programador é usuário?

•  o que é "coerente"?

»  o conceito de transparência

• 

um sistema distribuído é uma coleção de máquinas independentes que são usadas em conjunto para executar uma tarefa ou prover um serviço.

(3)

para que queremos SDs?

• 

custo e desempenho

•  paralelismo e computação distribuída

• 

escalabilidade

•  facilidade de aumentar recursos

• 

distribuição inerente

•  dispersão geográfica e social

•  compartilhamento de recursos

• 

confiabilidade

•  redundância

(4)

mas...

• 

rede tem que ser levada em consideração

•  desempenho e falhas

• 

segurança

•  distribuição introduz problemas inexistentes em sistemas centralizados

• 

complexidade de software

(5)

arquiteturas de interesse

• 

multicomputadores: cada um com sua memória e processador, interligados por redes

•  construção de aplicação distribuída sobre recursos de redes de SO pode ser árdua

kernel SO kernel SO

aplicação distribuída

(6)

SOs distribuídos

• 

interesse especial nos anos 80

• 

sistemas que controlariam o conjunto de recursos de várias máquinas

•  remanescentes importantes:

»  servidores de arquivos, técnicas de segurança, ...

kernel SO

aplicação distribuída

kernel SO

sistema operacional distribuído

(7)

Middleware

• 

serviços e abstrações que facilitam o desenvolvimento de aplicações distribuídas

aplicação distribuída middlleware

kernel SO kernel SO

(8)

estudo de SDs

• 

livros clássicos de sistemas distribuídos

•  comunicação entre processos

•  sincronização

•  sistemas de arquivos

•  segurança

•  confiabilidade

• 

nesse curso, maior ênfase na programação de SDs

(9)

programação

• 

requisitos de diferentes ambientes

•  redes locais e geográficas

•  baixo e alto acoplamento

• 

facilidades de programação importantes para diferentes classes de aplicações

•  ou mesmo para diferentes interações dentro da mesma aplicação

• 

necessidades

•  modelos de programação suportados:

»  cliente-servidor, p2p, computação móvel, ...

•  interesse especial em Lua e contribuição de linguagem interpretada

(10)

programa do curso

•  Introdução

•  processos e concorrência. threads. eventos.

•  Comunicacão

•  troca de Mensagens. abstrações. chamada remota de procedimentos e métodos. publish/subscribe. comunicação em grupo.

•  código móvel

•  Arquiteturas

•  cliente-servidor

•  p2p

•  agentes móveis

•  eventos...

•  Sincronização e Coordenação

•  multicast confiável e ordenado

•  exclusão mútua

•  Outros

•  nomes

•  segurança

•  replicação

•  tolerância a falhas

(11)

discussão

• 

facilidade de desenvolvimento

• 

desempenho

• 

transparência

• 

escalabilidade

• 

flexibilidade

(12)

Avaliação

• 

4 trabalhos (implementação) - grupo

• 

resumos e críticas de artigos - individuais

• 

1 prova – individual

(13)

Bibliografia

• 

A. Tanenbaum e M. van Steen. Distributed Systems:

Principles and Paradigms. Prentice-Hall, 2002.

• 

G. Andrews. Foundations of Multithreaded, Parallel,

and Distributed Programming. Addison-Wesley, 2000.

• 

surveys e artigos

•  alguns “clássicos”:

»  Andrews, Gregory. Paradigms for Process Interaction in

Distributed Programs. ACM Computing Surveys , 23(1), mar 91

»  Briot, J., Guerraoui, R., and Lohr, K. 1998. Concurrency and

distribution in object-oriented programming. ACM Comput. Surv.

30 (3). set 98.

•  outros

• 

Roberto Ierusalimschy. Programming in Lua. lua.org, 2006.

(14)

introdução

• 

processos e concorrência

(15)

Processos e Concorrência

• 

processo: modelo de execução sequencial

•  "programa em execução"

•  código, dados globais, pilha de execução

•  estrutura presente em qualquer sistema operacional

• 

concorrência

•  modelo de linhas "simultâneas" de execução

• 

concorrência e distribuição

•  aplicações distribuídas envolvem a execução concorrente de processos em várias máquinas

•  uso de concorrência local:

»  atendimento a comunicações concorrentes

»  sobreposição de comunicação e processamento

(16)

alternativas p/ concorrência

1. 

multithreading

•  várias linhas de execução compartilham globais com escalonamento preemptivo

•  surgido de estudos de sistemas operacionais

•  dificuldades de sincronização

•  exemplos: threads em C (posix) e em Java

(17)

exemplo em Java

public class ThreadsDorminhocas {

public static void main(String[] args) { new ThreadDorminhoca("1");

new ThreadDorminhoca("2");

new ThreadDorminhoca("3");

new ThreadDorminhoca("4");

} }

(18)

threads em Java

class ThreadDorminhoca extends Thread { int tempo_de_sono;

public ThreadDorminhoca(String id) { super(id);

tempo_de_sono = (int) (Math.random() * 5000);

System.out.println("Tempo de sono da thread "+id+

": "+tempo_de_sono+"ms");

start();

} public void run() { try {

sleep(tempo_de_sono);

} catch(InterruptedException exception) { System.err.println(exception);

}

System.out.println("thread "+getName()+" acordou!");

} }

transferência de controle implícita!

(preempção)

(19)

condições de corrida

class Conta {

private int saldo;

public Conta (int ini) { saldo = ini;

} public int veSaldo() { return saldo;

} public void deposita(int dep) {

for (int i=0; i<dep; i++) { // artificial!!

saldo++;

} } }

(20)

condições de corrida

public class ThreadsEnxeridas {

public static void main(String[] args) { int repet = 20;

Conta cc = new Conta(0);

(new ThreadEnxerida("1", cc, repet)).start();

(new ThreadEnxerida("2", cc, repet)).start();

(new ThreadEnxerida("3", cc, repet)).start();

(new ThreadEnxerida("4", cc, repet)).start();

} }

(21)

condições de corrida

class Conta {

private int saldo;

public Conta (int ini) { saldo = ini;

} public int veSaldo() { return saldo;

} synchronized public void deposita(int dep) { for (int i=0; i<dep; i++) {

try {

Thread.sleep(10); // para escalonador agir!

}

catch(InterruptedException exception) { System.err.println(exception);

}

saldo++;

} } •  }

(22)

alternativas ao modelo multithread clássico

2. 

modelos orientados a eventos

•  cada evento tratado até o final

programa como máquina de estado

3. 

multitarefa sem preempção

co-rotinas em Lua

4. 

multithreading com troca de mensagens

•  Erlang

(23)

alternativas p/ concorrência

• 

eventos - descrição Ousterhout:

(24)

orientação a eventos: ALua

• 

assincronismo e distribuição geográfica

• 

ALua: sistema para programação distribuída

•  baseado em Lua

•  chegada de mensagem é um evento

•  tratamento é execução da mensagem recebida

alua.send(B, [[send(A, “print(‘.. c..’)”)]])

A B

[[send(A, “print(‘.. c..’)”)]]!

send(A, “print(‘.. c..’)”)!

c

“print(10)”!

print(10)!

10!

alua.inf.puc-rio.br

(25)

co-rotinas em Lua

function boba () for i=1,10 do

print("co", i)

coroutine.yield() end

end co = coroutine.create(boba) coroutine.resume(co) -> co 1 coroutine.resume(co) -> co 2

… coroutine.resume(co) -> co 10

coroutine.resume(co) -> nada… (acabou) transferência de controle explícita!

Menos problemas com condições de corrida!

(26)

Referências

• 

notas de aula Ihor Kuz, Manuel M. T. Chakravarty &

Gernot Heiser (intro-notes.pdf, na página do curso*)

• 

J. Ousterhout. Why threads are a bad idea (for most purposes)

• 

capítulo de co-rotinas - livro de Lua

•  Roberto Ierusalimschy. Programming in Lua. lua.org, 2006.

»  disponível na secretaria do DI

»  1a ediçãodisponível em www.lua.org/pil/

*inf.puc-rio.br/~noemi/sd-09/

Referências

Documentos relacionados

In this work, improved curves are the head versus flow curves predicted based on the correlations presented in Table 2 and improved by a shut-off head prediction

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,

Foi ainda emitida confirmação de que não são utilizadas quaisquer substâncias químicas tóxicas, cancerígenas, tóxicas para a reprodução e mutagénicas da

&#34;tendo em vista a estrutura da incorporação pretendida, a Companhia entende que não se faz necessário o atendimento integral ao Artigo 264 da Lei 6.404/76 e à ICVM

No entanto, ao contrário da autora, o pensador italiano não espera na criação a partir do vazio o nascimento de uma nova obra (um novo começo), mas, justamente, pretende

são responsáveis pela diferença na nota entre os piores e melhores alunos, em razão disto, este trabalho tem como objetivo encontrar quais determinantes de desempenho

a) há um continuum de padrões de liderança dado pelo grau de autoridade utilizado pelo líder e o grau de liberdade disponível para os subordinados. c) para tarefas rotineiras