On the Design and Implementation of a Virtual Machine for Process Calculi
Luís Lopes
Departamento de Ciência de Computadores & LIACC
Faculdade de Ciências, Universidade do Porto
Rua do Campo Alegre, 823 4150 Porto, Portugal
Dezembro de 1999
Resumo
Existe um interesse crescente no estudo de cálculos de processos como
modelos formais para linguagens de programação com concorrência,
distribuição e orientação a objectos. Actualmente, estas linguagens
assumem uma especial importância pela adequação do seu modelo de
programação ao desenvolvimento de grandes projectos de
software, em especial no domínio das aplicações em rede ou para
a Internet. O cálculo-
pi assíncrono constitui um instrumento
poderoso no estudo de mecanismos de concorrência e interacção entre
processos. No entanto, não é um modelo adequado para a implementação
de linguagens orientadas a objectos pois as codificações existentes de
objectos no cálculo são pouco eficientes. O trabalho realizado na
implementação de linguagens baseadas em cálculos de processos tem
sido, até à data, infrutífero na obtenção de um modelo de computação
unificado sob a forma de uma máquina virtual.
Esta tese introduz uma especificação e implementação de uma máquina
virtual para uma forma do cálculo-pi -- o cálculo TyCO. O TyCO
tem, para além de nomes, objectos e mensagens assíncronas como
abstracções fundamentais. Desta forma, contrariamente a outros
cálculos como o pi, os objectos não necessitam de codificação.
Inicia-se este trabalho com a definição de uma pequena linguagem de
programação baseada no TyCO. A semântica estática da linguagem é
definida por um sistema de inferência de tipos ao passo que a
semântica dinâmica é introduzida sob a forma de uma máquina abstracta.
Este modelo formal proporciona os alicerces para o desenvolvimento
da máquina virtual e compilador da linguagem. A máquina virtual
executa programas TyCO compilados para um formato byte-code, é
compacta, independente da arquitectura de hardware
subjacente e exibe uma performance que se compara favoravelmente com
outras implementações. A máquina foi optimizada para o TyCO podendo
no entanto ser utilizada na implementação de outros cálculos com
pequenas alterações ou extensões à sua semântica.
Finalmente, define-se uma extensão ortogonal ao cálculo TyCO que
proporciona o suporte para computações distribuídas e mobilidade de
código. Neste modelo, a comunicação remota e a migração de código
são induzidas pelo contexto léxico dos nomes no cálculo base. O modelo
pode ser aplicado sem alterações a uma grande variedade de cálculos
para os quais se verifiquem algumas pre-condições fracas.