programação concorrente e distribuída/especificação de sistemas distribuídos alexandre...
TRANSCRIPT
![Page 1: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/1.jpg)
Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos
Alexandre Mota/Augusto Sampaio
{acm, acas}@cin.ufpe.br
![Page 2: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/2.jpg)
Motivação
Lidar simultaneamente com várias tarefas não é simples Memória compartilhada ou troca de
mensagens Deadlock, livelock e não-determinismo
Especificação muito longe da implementação
Programação é complicada devido aos detalhes e possíveis erros
![Page 3: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/3.jpg)
Objetivo Introduzir alguns conceitos fundamentais Concorrência com memória compartilhada Modelar sistema concorrente e/ou
distribuído usando linguagem de especificação CSP
Analisar suas propriedades Detalhar (refinar) a especificação até chegar
em implementação (JCSP/UML-RT)
![Page 4: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/4.jpg)
Conceitos fundamentais
![Page 5: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/5.jpg)
11/04/23Programação Concorrente e
Distribuída 5
Conceitos Fundamentais
Programa concorrente 2 ou mais processos trabalham
simultaneamente para realizar tarefa Processo
É um programa seqüencial (seqüência de comandos executados um após o outro)
![Page 6: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/6.jpg)
11/04/23Programação Concorrente e
Distribuída 6
Programas Concorrentes Processos comunicam-se através de
Variáveis compartilhadas Passagem de mensagens
E sincronizam por Exclusão mútua
Seções críticas não devem executar ao mesmo tempo
Sincronização condicional Retarda um processo até uma dada condição ser
true
![Page 7: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/7.jpg)
Comunicação
Passagem de mensagens Modelo de mais alto nível Erros são mais simples de resolver Baixa performance em geral
Compartilhamento de memória Modelo de mais baixo nível Erros são mais delicados de resolver Alta performance
![Page 8: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/8.jpg)
11/04/23Programação Concorrente e
Distribuída 8
Conceitos Fundamentais
Ação Atômica Ações indivisíveis que acessam ou
alteram o estado do programa Load/store (memória) Instrução de máquina que não pode ser
interrompida Processo: seqüência de comandos Comando: seqüência de ações
atômicas
![Page 9: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/9.jpg)
11/04/23Programação Concorrente e
Distribuída 9
Conceitos Fundamentais História (trace)
Execução particular de um Prog. Conc. pode ser vista como uma história
Interleaving de seqüências de ações executadas por cada processo
Sejam s0 um estado inicial, sn um estado subseqüente e uma transição causada por uma açao atômica
s0 s1 ... sn Execução paralela pode ser modelada como
uma história linear
![Page 10: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/10.jpg)
11/04/23Programação Concorrente e
Distribuída 10
Propriedades
Fato verificado em todas as histórias
Tipos Propriedades de segurança
Nunca entra em um estado ruim Propriedades de liveness
Eventualmente um estado bom é alcançado
![Page 11: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/11.jpg)
11/04/23Programação Concorrente e
Distribuída 11
Propriedades Segurança
Corretude Parcial Estado final está correto Se o programa terminar
Liveness Terminação
Todo laço e chamada de procedimento terminam (toda história é finita)
Corretude Total Combina a parcial com terminação Sempre termina com uma resposta correta
![Page 12: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/12.jpg)
Concorrência com Memória Compartilhada
Seção crítica/exclusão mútua Spin locks Barreiras Semáforos Monitores
![Page 13: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/13.jpg)
Desenvolvendo Sistemas Concorrentes e Seguros
![Page 14: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/14.jpg)
CSP
Notação conveniente para modelar sistemas concorrentes
Alto nível de abstração Ferramentas para analisar
propriedades automaticamente Possui biblioteca para Java (JCSP)
![Page 15: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/15.jpg)
gCSP
![Page 16: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/16.jpg)
ProBE (Animador de CSP)
![Page 17: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/17.jpg)
FDR (Analisador de CSP)
![Page 18: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/18.jpg)
FDR (Analisador de CSP)
![Page 19: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/19.jpg)
Projeto 1 Escolher sistema concorrente para
ser especificado A partir da modelagem, estudar as
seguintes propriedades clássicas: deadlock, livelock e determinismo
Na presença indesejável, ajustar o modelo
Resultado: modelo e análises básicas
![Page 20: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/20.jpg)
Jantar dos Filósofos em CSP
![Page 21: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/21.jpg)
JCSP
Biblioteca para Java que suporta CSP
Programação concorrente elegante Possível usar memória
compartilhada/passagem de mensagens
Todos os recursos de Java Talvez requeira refinamentoOu UML-RT…
![Page 22: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/22.jpg)
Projeto 2 A partir do modelo em CSP,
implementar em JCSP Adicionar à implementação requisitos
não-funcionais Portanto, o projeto deve ser desafiador
e não meramente teórico Pode usar dos conceitos usados nos
fundamentos Resultado: documentação de descrição
e programa
![Page 23: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/23.jpg)
Jantar Filósofos em JCSP
![Page 24: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/24.jpg)
Jantar Filósofos em JCSP
![Page 25: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/25.jpg)
Jantar Filósofos em JCSP
![Page 26: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/26.jpg)
Desenvolvendo o Sistema
Análise Projeto Projeto Implementação
(CSP) (CSP)
…
(CSP)(JCSP) (JCSP)
(UML-RT) (Java)
Projeto baseado em Refinamento
Análise automática de propriedades{deadlock, livelock, determinismo}
(CSP.Net) (CSP.Net)
![Page 27: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/27.jpg)
Avaliação
Projeto CSP (A) Projeto JCSP (B) Prova (C) Nota = ((A+B)/2+C)/2
Presença requisitadaDefinir projeto até 20/08/09
![Page 28: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br](https://reader036.vdocuments.mx/reader036/viewer/2022081505/552fc142497959413d8df5de/html5/thumbnails/28.jpg)
Referências Andrews, G.R. Multithreaded, Parallel, and
Distributed Programming. Addison-Wesley, 2000. Roscoe, A.W. The Theory and Practice of
Concurrency. Prentice-Hall, 1998. Hoare, C.A.R.
Communicating Sequential Processes. Prentice-Hall, 1985.
Welch, P. Communicating Sequential Processes for Java. 2003.
CSP.Net QuickStone. JCSP Network Edition. 2004. QuickStone. xCSP Technology. 2004.