1 / 14

Shared Variables Analyser (SVA)

Shared Variables Analyser (SVA). Ferramenta desenvolvida pelo Computing Laboratory (Oxford University) Analisa programas concorrentes com variáveis compartilhadas Simula programas através de uma rede processos CSP Análise é realizada por FDR de forma transparente

yamal
Télécharger la présentation

Shared Variables Analyser (SVA)

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. Shared Variables Analyser (SVA) • Ferramenta desenvolvida pelo Computing Laboratory (Oxford University) • Analisa programas concorrentes com variáveis compartilhadas • Simula programas através de uma rede processos CSP • Análise é realizada por FDR de forma transparente • Front-end da ferramenta implementado em Java

  2. Fluxo de SVA Programa + propriedades (Shared Variables Language) input.sva Java Parser Representação intermediária (CSPM) output.csp Compilador escrito em CSPM + Análise de refinamentos com FDR share2priorities.csp Resultado das análises (GUI/log) results

  3. Rodando SVA • Pré-requisitos: Java 1.6 e FDR2 no PATH • Pacote da ferramenta (sva.tar) • Compilador share2priorities.csp deve estar no diretório • Rodando interface • java InterpreterGUI in.sva • Traduz in.sva para output.csp e roda GUI. Resultados armazenados em results

  4. GUI Lista de propriedades Informações de debug Verificar propriedades

  5. Programa em SVL • Tipos são inteiros e booleanos • Setup: • atomicidade de expressões • tamanho máximo dos arrays (estáticos) • faixa de valores (se ultrapassado exceção é lançada) • Contém variáveis, constantes e sinais • É uma lista de processos que podem ser parâmetrizados por inteiros • Processo é uma lista de comandos separados por ; • cada comando é delimitado entre { }

  6. Exclusão Mútua de Hyman (Setup de SVL) • se expressões • são atômicas %%atomic_exprs = false %%sba = 3 %%sia = 0 %%MinI = 0 %%MaxI = 3 %%InitI = MinI %%InitB = false • tamanho de arrays booleanos e inteiros • mínimo e máximo para inteiros • valor default para inteiros e booleanos declarações precedidas por %% não são traduzidas pelo compilador

  7. Exclusão Mútua de Hyman em SVL variáveis inteiras int count,t=1; bool[] b; sig mutexerror; P(i) = {iter {b[i] := true; while !(t = i) do {while b[3-i] do skip; t := i }; count := count + 1; if count > 1 then sig(mutexerror); count := count -1; b[i] := false; } } Prog = <P(1),P(2)> array de booleanos sinal (evento) processo mesmo que: while true do {} programa

  8. Exclusão Mútua de Hyman (Representação intermediária) b[i] := true while !(t = i) ... P(i) = Iter.Sq.( Bassign.(BA.1.i,True), Sq.(While.(Not.Eq.IVar.I.2.Const.i, Sq.(While.(BVar.BA.1.(3-i),Skip), Iassign.(I.2,Const.i)) ), Sq.(Iassign.(I.1,Plus.IVar.I.1.Const.1), Sq.(Cond.(Gt.IVar.I.1.Const.1, Sig.mutexerror,Skip), Sq.(Iassign.(I.1, Minus.IVar.I.1.Const.1), Bassign.(BA.1.i,False))) ) ) ) Prog = Compile((<<P(1),P(2)>>, (<(IVar.I.2,1)>,<>))) while b[3-i] ... t := i count := count + 1 if count > 0 ... count := count =1 b[i] := true t = 1

  9. Verificando Propriedades do Programa • Validade de expressões booleanas (BEXPR) • assert always BEXPR in PROGRAM • assert never BEXPR in PROGRAM • Presença de sinais durante a execução • assert nosignal { SIGNALS } in PROGRAM • Sinal outofrange • exceção levantada quando o valor de uma expressão inteira extrapola os limites especificados

  10. Exclusão Mútua de Hyman (Propriedades) • Propriedadeem SVL assert nosignal {outofrange, mutexerror} in Prog • Propriedade em CSPM assert CHAOS(diff(Events,{|outofrangeT, mutexerrorT|})) [T= Prog

  11. Exclusão Mútua de Hyman (Propriedades) Pelo log vemos: (1) expressões não são atômicas, (2) leitura e escrita de variáveis são atômicas Checking output.csp Checking CHAOS(diff(Events,{|outofrangeT,mutexerrorT|})) [T= Prog xfalse BEGIN TRACE example=0 process=1 bvwriteT.BA.1.2.true.0 breq.BE.1 ivevalT.I.2.1.0 beval.BE.1.true bvevalT.BA.1.1.false.0 ... mutexerrorT.1 END TRACE example=0 process=1 Debug do log Log de FDR (results)

  12. Exclusão Mútua de Hyman (Propriedades) • Propriedadeem SVL assert never (count > 1) in Prog • Propriedade em CSPM assert CHAOS(diff(Events, {|assertionfailedT|})) [T= Compile((<<P(1), P(2), Atomic.Cond.(Not.Gt.IVar.I.1.Const.1,Skip,Sig.assertionfailed)>>, (<(IVar.I.2,1)>,<>)))

  13. Exclusão Mútua de Hyman (Propriedades)

  14. Referências • A. W. Roscoe. Compiling Shared Variable Programs into CSP. In Proceedings of PROGRESS workshop 2001, 2001. • A. W. Roscoe and D. Hopkins. Sva, a tool for analysing shared-variable programms. In Proceedings of AVoCS 2007, pages 177–183, 2007. • Ferramenta e artigos em http://web.comlab.ox.ac.uk/activities/concurrency/tools/sva/

More Related