Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre...
Transcript of Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre...
Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos
Alexandre Mota/Augusto Sampaio
{acm, acas}@cin.ufpe.br
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
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)
Conceitos fundamentais
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)
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
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
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
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
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
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
Concorrência com Memória Compartilhada
Seção crítica/exclusão mútua Spin locks Barreiras Semáforos Monitores
Desenvolvendo Sistemas Concorrentes e Seguros
CSP
Notação conveniente para modelar sistemas concorrentes
Alto nível de abstração Ferramentas para analisar
propriedades automaticamente Possui biblioteca para Java (JCSP)
gCSP
ProBE (Animador de CSP)
FDR (Analisador de CSP)
FDR (Analisador de CSP)
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
Jantar dos Filósofos em CSP
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…
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
Jantar Filósofos em JCSP
Jantar Filósofos em JCSP
Jantar Filósofos em JCSP
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)
Avaliação
Projeto CSP (A) Projeto JCSP (B) Prova (C) Nota = ((A+B)/2+C)/2
Presença requisitadaDefinir projeto até 20/08/09
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.