1 / 16

Concorrência em LI2 Monitor e Rendevouz

Concorrência em LI2 Monitor e Rendevouz. Projeto de PLP – 2 a fase Daniel Pereira – {dtvp} Petrus Bastos – {prb} Rafael Ribeiro – {rar}. Programação Concorrente. Lembram do Race Condition? x := x + 1 Exclusão mútua resolve! synch (a) { a := a + 1; }

ros
Download Presentation

Concorrência em LI2 Monitor e Rendevouz

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. Concorrência em LI2Monitor e Rendevouz Projeto de PLP – 2a fase Daniel Pereira – {dtvp} Petrus Bastos – {prb} Rafael Ribeiro – {rar}

  2. Programação Concorrente Lembram do Race Condition? x := x + 1 • Exclusão mútua resolve! synch (a) { a := a + 1; } Mas será que é suficiente?

  3. Programação Concorrente • Qual o valor da variável global x no final da execução de duas tarefas concorrentes com exclusão mútua? Task 1 Task 2 x := x + 1; x := x + 2; • E agora? Task 1 Task 2 x := x + 1; x := x * 2;

  4. Programação Concorrente • Definições • Interleaved Concurrency • Overlapped Concurrency • Vantagens • Desempenho e uso efetivo do hardware • Realidade naturalmente concorrente • Simulações • Uso de I/O

  5. Mecanismos de Comunicação • Memória compartilhada • A linguagem deve prover mecanismos que providenciem exclusão mútua • Objetos protegidos • Encapsulam as regras de acesso • Rendezvous • Sincronismo entre linhas de execução

  6. task Soma is entry sum(); end Soma; task body Soma is null; begin accept sum() do null; end sum; x := x + 1; end Soma; task Multiplica is entry mult(); end Multiplica; task body Multiplica is null; begin accept mult() do null; end mult; x := x * 1; end Multiplica; Determinismo em ADA95

  7. Inter1 Inter2 Inter3 Int. N-1 InterN Inter1 Inter2 Inter3 Int. N-1 InterN Rendezvous–Aplicações • Produtor – Consumidor • Join no Diagrama de Atividades UML

  8. Rendezvous

  9. Nosso Rendezvous

  10. Alterações na BNF • Inserção de blocos de execução: Comando ::= ComandoSimples | Paralelismo ComandoSimples ::= …….. | SequenciaComando ……. PSequenciaComando ::= <LBRACE> ( ComandoSimples <SEMICOLON> )* <RBRACE>

  11. Alterações na BNF • Para implementação do Rendezvous PComandoSimples ::= .... | Sleep | Wait | Notify | ChamadaProcedimento | WaitRendezvous | ChamadaRendezvous

  12. Classes do Projeto • Criadas: • SequenciaComandos.java • ChamadaRendezvous.java • DeclaracaoRendezvous.java • DefRendezvous.java • Rendezvous.java • ExecucaoRendezvous.java • WaitRendezvous.java • RendezvousJaDeclaradoException.java • RendezvousNaoDeclaradoException.java

  13. Classes do Projeto • Modificadas: • Imperative2.jj • AmbienteCompilacaoImperativa2.java • AmbienteExecucaoImperativa2.java • ContextoCompilacaoImperativa2.java • ContextoExecucaoImperativa2.java

  14. Referências • [1] Burns, Alan; Wellings, Andy - Concurrency in Ada, Second Edition, Cambridge University Press 1998; • [2] Cohen, Norman H. – Ada as a Second Language, McGraw-Hill 1996; • [3] Watt, D; Wichmann, B.; Findlay, W. – ADA: Language and Methodology, Prentice-Hall 1987.

  15. Demonstração

More Related