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

Post on 19-Apr-2015

130 views 14 download

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.