| Description: |
Tese de mestrado em Engenharia Informática, apresentada à Universidade de Lisboa, através da Faculdade de Ciências, 2013 ; A necessidade de aumentar o poder de computação exigiu a produção de hardware com maior capacidade de processamento. Esta situação levou os fabricantes a abandonar o modelo tradicional de Von Neumann e a adotar sistemas com múltiplos processadores/ núcleos. Para que o software acompanhasse a evolução do hardware, as linguagens de programação concorrente ganharam protagonismo, mas com este regressaram os problemas bem conhecidos dos sistemas concorrentes e distribuídos, condições de corrida e impasses. O mecanismo mais popular que suporta programação concorrente é o uso de múltiplos fios de execução, que partilham variáveis. Neste contexto, propomos o desenvolvimento de uma máquina virtual para a linguagem MIL que imponha, estaticamente, que programas bem tipificados são livres de condições de corrida e não entrem em impasses. A primeira propriedade é conseguida através da imposição de uma disciplina no uso de trincos através de tipos singulares; a segunda é alcançada através de anotações polimórficas sobre a ordem pela qual os trincos são fechados. O sistema de tipos recusa programas cujos fios de execução dependam, ciclicamente, uns dos outros no fecho de trincos. No entanto, a introdução de anotações sobre trincos pode introduzir uma complexidade desnecessária no processo de geração de código. De forma a resolver este problema propomos um algoritmo para inferir as anotações polimórficas sobre trincos. A inferência faz-se da recolha de restrições locais sobre a ordem pela qual os trincos são fechados. As restrições são passadas a um SMT que averigua a sua consistência. Implementámos o algoritmo e experimentámo-lo extensivamente em programas MIL, nomeadamente, em código de alguma dimensão, obtido através da compilação de programas escritos numa linguagem de objetos concorrentes. Para além disso, pretendemos potenciar a integração da linguagem MIL, quer com linguagens de alto nível que tenham ... |