![Page 1: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/1.jpg)
Sistemas Distribuídos
INF2545
1
![Page 2: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/2.jpg)
•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.
Sistemas Distribuídos
2
![Page 3: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/3.jpg)
Received: by jumbo.dec.com (5.54.3/4.7.34) id AA09105; Thu, 28 May 87 12:23:29 PDT Date: Thu, 28 May 87 12:23:29 PDT From: lamport (Leslie Lamport) To: src-t Subject: distribution There has been considerable debate over the years about what constitutes a distributed system. It would appear that the following definition has been adopted at SRC:
A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.
The current electrical problem in the machine room is not the culprit--it just highlights a situation that has been getting progressively worse. It seems that each new version of the nub makes my FF more dependent upon programs that run elsewhere. Having to wait a few seconds for a program to be swapped in is a lot less annoying than having to wait an hour or two for someone to reboot the servers. ... I will begin the effort by volunteering to gather some data on the problem. If you know of any instance of user's FF becoming inoperative through no fault of its own, please send me a message indicating the user, the time, and the cause (if known). Leslie
3
![Page 4: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/4.jpg)
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
![Page 5: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/5.jpg)
... 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
![Page 6: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/6.jpg)
arquiteturas de interesse
•multicomputadores: cada um com sua memória e processador(es?), 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
Internet 6
![Page 7: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/7.jpg)
sistemas operacionais 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
Internet 7
![Page 8: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/8.jpg)
middleware
•serviços e abstrações que facilitam o desenvolvimento de aplicações distribuídas
aplicação distribuída
middlleware
kernel SO kernel SO
Internet8
![Page 9: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/9.jpg)
outros cenários
9
![Page 10: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/10.jpg)
IoT: arquiteturas
Internet
10
• interesse como sistema distribuído:
• limitação de recursos traz “mistura de camadas”
• insegurança
• falhas
![Page 11: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/11.jpg)
estudo de sistemas distribuídos
• livros clássicos de sistemas distribuídos • comunicação entre processos • sincronização • sistemas de arquivos • segurança • confiabilidade
•nesse curso, ênfase também na programação de SDs e em graus de acoplamento distintos
11
![Page 12: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/12.jpg)
programação
•requisitos de diferentes ambientes • redes locais e geográficas • baixo e alto acoplamento
• linguagens e bibliotecas • protocolos abertos
•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, ... • comportamento diante de falhas • escala e acoplamento
12
![Page 13: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/13.jpg)
programa do curso• Introdução: processos e concorrência. threads. eventos.
• Comunicacão: troca de mensagens. chamada remota de procedimentos e métodos. publish/subscribe. comunicação em grupo. código móvel
• Arquiteturas: clliente-servidor, p2p, eventos.
• Sincronização e Coordenação: relógios lógicos. ordenação de eventos, exclusão mútua. roteamento
• Replicação e consistência: multicast confiável e ordenado
• Tolerância a Falhas: comunicação confiável. recuperação de falhas.
• Outros: • nomes • segurança
13
![Page 14: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/14.jpg)
discussão
• facilidade de desenvolvimento
•desempenho
• transparência
•escalabilidade
• flexibilidade
14
![Page 15: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/15.jpg)
avaliação
• 3 trabalhos (implementação) – grupo • cliente-servidor • RPC • roteamento/coordenação
• 4 resumos e críticas de artigos – individuais
• 1 trabalho final (implementação, texto e apresentação)
• sobre prazos de entrega: • Cada aluno terá direito a 8 dias de atraso por semestre. Depois de gastos esses dias, trabs
serão desconsiderados.
15
![Page 16: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/16.jpg)
Bibliografia
• livros SDs: • K. Birman. Reliable Distributed Systems. Springer, 2005. • A. Tanenbaum e M. van Steen. Distributed Systems: Principles and Paradigms.
Prentice-Hall, 2007. • surveys e artigos
• alguns “clássicos”: » Andrews, Gregory. Paradigms for Process Interaction in Distributed Programs. ACM Computing Surveys ,
23(1), mar 91.
» Valeria Cardellini, Emiliano Casalicchio, Michele Colajanni, and Philip S. Yu. 2002. The state of the art in locally distributed Web-server systems. ACM Computing Surveys, 34(2), jun 2002.
» outros um pouco mais recentes ☺
16
![Page 17: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/17.jpg)
• processos e concorrência
introdução
17
![Page 18: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/18.jpg)
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
» escalonamento » diferença para processos de livros de SO
bloqueado
pronto
em execução
finalizado
18
![Page 19: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/19.jpg)
concorrência
•concorrência • como lidar com diversas atividades simultaneamente • concorrência versus paralelismo
•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
19
![Page 20: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/20.jpg)
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
20
![Page 21: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/21.jpg)
threads em Java
public void MyThread extends Thread { public void run() { ... } ... Thread thr = new MyThread(); thr.start();
21
![Page 22: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/22.jpg)
threads em Java
public void MyThread extends Thread { public void run() { ... } ... Thread thr = new MyThread(); thr.start();
transferência de controle im
plícita!
(preempção)
22
![Page 23: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/23.jpg)
condições de corrida (1)class Conta { private int saldo; public Conta (int ini) { saldo = ini; } public int veSaldo() { return saldo; } public void deposita(int dep) { saldo += dep; } }
23
![Page 24: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/24.jpg)
condições de corrida (2)public class ThreadsEnxeridas { public static void main(String[] args) { Conta cc = new Conta(0); (new ThreadEnxerida("1", cc)).start(); (new ThreadEnxerida("2", cc)).start(); (new ThreadEnxerida("3", cc)).start(); (new ThreadEnxerida("4", cc)).start(); } }
24
![Page 25: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/25.jpg)
acessos concorrentes à conta
25
![Page 26: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/26.jpg)
condições de corrida (1.1...)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++; } } }
26
![Page 27: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/27.jpg)
condições de corrida (3)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++) { saldo++; } } }
27
![Page 28: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/28.jpg)
modelo semelhante em pthreads#include <pthread.h> #include <stdio.h> #include <math.h>
void* umathread (void* arg) { int i; double a; for (i=0;i<10000000;i++) a = sin(i); printf ("alo \n"); }
void* outrathread (void* arg) { int i; double a; for (i=0;i<10000000;i++) a = sin(i); printf ("mundo!\n"); }
int main(int argc, char *argv[]) { pthread_t pid1, pid2;
pthread_create(&pid1, NULL, umathread, NULL); pthread_create(&pid2, NULL, outrathread, NULL);
pthread_join(pid1, NULL); pthread_join(pid2, NULL);
return 0; }
28
![Page 29: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/29.jpg)
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
• Lua e outros
4. multithreading com troca de mensagens • Erlang, Scala, ...
29
![Page 30: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/30.jpg)
alternativas p/ concorrência•eventos - descrição Ousterhout:
30
![Page 31: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/31.jpg)
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! por outro lado...
•só usamos um processador
•temos que controlar a transferência
co-rotinas em Lua
31
![Page 32: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/32.jpg)
erlang
• troca de mensagens: • envio:
pid! msg
• recebimento: receive
padrão ->
ação
end
32
![Page 33: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/33.jpg)
loop(... ) -> receive {From, Request} -> Response = F(Request), From! {self(), Response}, loop(...)end.
33
erlang
![Page 34: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/34.jpg)
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) • conjunto de slides (procurar no google)
• von Behren, R., Condit, J., and Brewer, E. 2003. Why events are a bad idea (for high-concurrency servers). In Proceedings of the 9th Conference on Hot Topics in Operating Systems - Volume 9 (Lihue, Hawaii, May 18 - 21, 2003).
• capítulo de co-rotinas - livro de Lua • Roberto Ierusalimschy. Programming in Lua. 4a edição. lua.org, 2016.
» 1a ediçãodisponível em www.lua.org/pil/
*inf.puc-rio.br/~noemi/sd-17/
34
![Page 35: Sistemas Distribuídos - PUC-Rionoemi/sd-17/01-intro.pdfReferências • notas de aula Ihor Kuz, Manuel M. T. Chakravarty & Gernot Heiser (intro-notes.pdf, na página do curso*) •](https://reader034.vdocuments.com.br/reader034/viewer/2022042910/5f4070a4d9e8804e1c500190/html5/thumbnails/35.jpg)
Tarefa
•Resumo 1: • ler os slides de Ousterhout e o trabalho de von Behren (e opcionalmente outras
coisas) • escrever um resumo (em torno de duas páginas):
» explicar em que situações eventos podem substituir threads e como » discutir vantagens e desvantagens de cada estilo de programação
• enviar via sistema ead (ead.puc-rio.br) até 22/03
» nunca entregar documentos word! pdf por favor!
35
AtulAdya,JonHowell,MarvinTheimer,WilliamJ.Bolosky,andJohnR.Douceur.2002.CooperativeTaskManagementWithoutManualStackManagement.InProceedingsoftheGeneralTrackoftheannualconferenceonUSENIXAnnualTechnicalConference(ATEC’02).até3.2(inclusive).