1 / 28

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

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

idalia
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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)

  4. Conceitos fundamentais

  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) Programaçã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 Programação Concorrente e Distribuída

  7. 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

  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 Programaçã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 Programaçã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 Programaçã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 Programação Concorrente e Distribuída

  12. Concorrência com Memória Compartilhada • Seção crítica/exclusão mútua • Spin locks • Barreiras • Semáforos • Monitores

  13. Desenvolvendo Sistemas Concorrentes e Seguros

  14. CSP • Notação conveniente para modelar sistemas concorrentes • Alto nível de abstração • Ferramentas para analisar propriedades automaticamente • Possui biblioteca para Java (JCSP)

  15. gCSP

  16. ProBE (Animador de CSP)

  17. FDR (Analisador de CSP)

  18. FDR (Analisador de CSP)

  19. 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

  20. Jantar dos Filósofos em CSP

  21. 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 refinamento Ou UML-RT…

  22. 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

  23. Jantar Filósofos em JCSP

  24. Jantar Filósofos em JCSP

  25. Jantar Filósofos em JCSP

  26. Desenvolvendo o Sistema … Análise Projeto Projeto Implementação (JCSP) (JCSP) (CSP) (CSP) (CSP) (UML-RT) (Java) (CSP.Net) (CSP.Net) Análise automática de propriedades {deadlock, livelock, determinismo} Projeto baseado em Refinamento

  27. Avaliação • Projeto CSP (A) • Projeto JCSP (B) • Prova (C) • Nota = ((A+B)/2+C)/2 Presença requisitada Definir projeto até 20/08/09

  28. 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.

More Related