Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre...

28
Programação Concorrente e Distribuída/Especifica ção de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br

Transcript of Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre...

Page 1: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

gCSP

Page 16: Programação Concorrente e Distribuída/Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm, acas}@cin.ufpe.br.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.