ASIMAV: Ambiente de SImulação
de Máquinas Virtuais

Evandro de Barros Costa e Edmundo Tojal Donato Junior
Departamento de Informática e Matemática Aplicada, Universidade Federal de Alagoas
Robério José Rogério dos Santos
Centro de Processamento de Dados, Fundação de Amparo à Pesquisa do Estado de Alagoas
Walfredo da Costa Cirne Filho
Parque Tecnológico da Paraíba
Brasil



A falta de motivação observada nos estudantes dos cursos de informática, quando estes estão envolvidos com temas que fundamentam os sistemas de computação, causa grandes dificuldades para o aprendizado dos mesmos. Isto se deve, por exemplo, a uma forte carga de conceitos abstratos que permeiam todo esse conhecimento; afinal, o computador é essencialmente uma máquina abstrata. Ademais, a sequencialidade de disciplinas que é imposta nas grades curriculares normalmente impede o estudante de perceber que todo o conhecimento distribuído nas disciplinas gira em torno de uma única essência. Ora, essa perda do todo, leva o estudante a seguir uma linha altamente imediatista, passando o mesmo a dedicar-se a um mínimo de disciplinas que estão num plano mais concreto.

Uma alternativa para amenização do problema citado é colocar disponível aos estudantes ferramentas de software que sirvam para aproximar o abstrato do concreto. A proposta de ASIMAV representa uma contribuição nesta direção. ASIMAV é um ambiente computacional que visa prover os estudantes com ferramentas que objetivam favorecer as atividades de aprendizagem e promover o interesse dos mesmos em temas como Arquitetura e Organização de Computadores, Construção de Compiladores e Linguagens de programação.

O ASIMAV foi definido para, através do uso de simuladores, apresentar os conceitos fundamentais envolvidos nos temas supracitados, numa visão unificada e estruturada em níveis de abstração. A apresentação desses conceitos é suportada pelo uso da noção de máquinas virtuais [Tanenbaum 92]. Essas máquinas consistem em níveis de abstração diferentes que têm correspondência na prática, pois geralmente são utilizadas pelos projetistas de software e hardware. Estes níveis são: linguagem de alto nível, linguagem de montagem (assembly) e linguagem de controle da micro-arquitetura (micro-assembly).

A idéia de construir um simulador do funcionamento interno de um computador objetiva justamente aproximar a teoria da prática, fornecendo ferramentas para os alunos "experimentarem" os conceitos que são apresentados em sala de aula.

Com o uso destes três níveis de abstração, o ASIMAV disponibiliza ferramentas explorat"rias dos conhecimentos normalmente apresentados para os alunos em disciplinas que tratam de linguagens de programação, linguagem assembly e arquitetura de computadores (no que tange a parte de funcionamento da "CPU" propriamente dita).

Para proporcionar uma maior visão de conjunto ao usuário (atacando, assim, um dos problemas descritos acima), o ASIMAV integra dois tradutores que permitem traduzir o que está representado em uma linguagem para a de nível abstracional imediatamente inferior.

Como já foi mencionado acima, visa-se em ASIMAV um ambiente computacional que forneća ao aluno a visualização das principais camadas de abstração envolvidas na execução de um programa escrito em uma linguagem de alto nível. O usuário pode "navegar" no funcionamento do computador em qualquer nível, dando-lhe visão sistêmica e agregando ordenadamente as informaćões de diferentes disciplinas.

Os componentes da arquitetura que suporta (abstratamente) a execução das máquinas virtuais nas diversas camadas, em ASIMAV, constituem-se por simuladores, tradutores, sincronizador e interface, descritos a seguir.

ASIMAV possui dois tipos de tradutores: compiladores e interpretadores, de acordo com a forma de implementação de cada máquina virtual. A visualização dos processos de compilação e interpretação (execução do programa propriamente dita) são obtidas em momentos distintos.

O sincronizador é um módulo bastante simples, encarregado apenas de passar o controle do ambiente para o módulo adequado quando o usuário desejar mudar de nível de abstração.

O módulo de interface apenas isola o resto do programa de detalhes de hardware e sistema operacional, contribuindo para tornar o projeto do ambiente mais simples.

Bibliografia

[1] [Bianchi 92] Bianchi, Paulo. "Ferramentas para ensino de Informática: uma experiêcia". Anais do II Congresso Ibero-Americano de Educação Superior em Educação, Rio de Janeiro, 1992.

[2] [Reis 92] Reis, Ricardo et al. - ILA9200: Um Esforćo de Integração Iberoamericano. Anais do II Congresso Ibero-Americano de Educação Superior em Educação, Rio de Janeiro, 1992.

[3] [Tanenbaum 92] Tanenbaum, A. "Organização Estruturada de Computadores", 2a edição. Editora Prentice-Hall do Brasil Ltda., 1992.