VIRTUAL XT: UM AMBIENTE DE APOIO AO ENSINO DE CONCEITOS BÁSICOS DE HARDWARE E SOFTWARE

June 12, 2017 | Autor: Mauro Mattos | Categoria: Computer Architecture, OPERATING SYSTEM, Bottom Up, Hardware architecture
Share Embed


Descrição do Produto

VIRTUAL XT: UM AMBIENTE DE APOIO AO ENSINO DE CONCEITOS BÁSICOS DE HARDWARE E SOFTWARE Mauro Marcelo Mattos,MSc [email protected] Antônio Carlos Tavares [email protected] FURB - Universidade Regional de Blumenau Departamento de Sistemas e Computação

RESUMO O presente artigo descreve o estágio atual de desenvolvimento de uma proposta de um sistema didático que deverá servir de apoio as disciplinas de Arquitetura de Computadores e Sistemas Operacionais no curso de Bacharelado em Ciência da Computação da FURB - Universidade Regional de Blumenau. O objetivo do projeto é construir um processador em software, e fazer com que o mesmo execute código binário nativo do processador Intel 8086, de modo a permitir aos alunos obterem uma visão bottom-up tanto em termos de arquitetura de harwdare quanto em termos de arquitetura de sistemas operacionais.

ABSTRACT This work describes the actual stage on development a software to be used as an auxiliary tool in a Computer Architecture and Operating Systems courses in FURB - University of Blumenau. The main goal is to construct a processor (CPU) in software, enabling it to run Intel 8086 native code. This will to permit that students a bottom-up approach in terms of hardware architecture and operating systems. PALAVRAS-CHAVE: Arquitetura de Computadores, Sistemas Operacionais, Software Básico.

1.

INTRODUÇÃO

O estudo de sistemas operacionais pressupõe o conhecimento de conceitos básicos de arquitetura de computadores. Analisando-se o resultado dos trabalhos realizados na disciplina de Sistemas Operacionais, observou-se que havia uma deficiência no entendimento de como realmente as ações eram executadas por um processador, e quais as implicações disto em termos de arquitetura de um sistema operacional. A ausência de uma ferramenta didática que permita exemplificar os conceitos de modo mais claro, estimulou o desenvolvimento do VXt.

2. O PROCESSADOR VIRTUAL Em função disto, iniciou-se um projeto em sala de aula, com o intuito de complementar os conhecimentos básicos sobre arquitetura de computadores, o qual culminou com a implementação em software do processador Intel 8086. Para a escolha do processador foram considerados os seguintes aspectos: a) o processador a ser implementado deveria ser de conhecimento dos alunos, tendo em vista evitar um esforço a mais para conhecer um novo conjunto de instruções b) o processador alvo, deveria possuir todo um aparato de ferramentas de desenvolvimento tais como, compiladores, montadores, depuradores e ambientes de desenvolvimento adequados, para evitar o esforço desnecessário na construção de tais ferramentas; c) o processador alvo deveria executar um sistema operacional que fosse de conhecimento do público-alvo, tendo em vista evitar o esforço desnecessário (em função dos objetivos do trabalho) no aprendizado da utilização do mesmo; d) deve haver disponibilidade de literatura tendo em vista permitir a implementação do conjunto de instruções do processador. A partir destes requisitos, selecionou-se o processador Intel 8086, tendo em vista que: a)

ele atende ao requisito (a) acima descrito na medida em que os alunos da disciplina de arquitetura de computadores desenvolvem pequenas aplicações utilizando a linguagem assembly deste processador;

b)

ele atende ao requisito (b), na medida em que há toda uma estrutura que suporta o desenvolvimento de aplicações para a plataforma Intel;

c)

ele atende ao requisito (c ), na medida em que o sistema operacional MS-DOS, já é de conhecimento dos alunos, não necessitando um esforço de treinamento adicional para esta plataforma;

d)

a biblioteca da Universidade dispõe de literatura suficiente para permitir aos alunos o desenvolvimento da referida aplicação.

3.

O AMBIENTE DE DESENVOLVIMENTO

Uma vez que o principal objetivo na etapa inicial do projeto era a obtenção de uma primeira versão do processador, estabeleceu-se que a linguagem alvo para a implementação da aplicação poderia ser escolhida pelas equipes. 3 equipes desenvolveram a aplicação utilizando a linguagem Pascal e o ambiente de desenvolvimento Turbo Pascal da Borland. Outras 3 equipes desenvolveram a aplicação utilizando o ambiente de desenvolvimento Delphi versão 1.0 também da Borland. Após uma avaliação das versões finais entregues pelas equipes, optou-se pela continuidade do projeto a partir da implementação em Pascal, tendo em vista que nem todos os alunos do semestre regular em que ocorre a disciplina de Sistemas Operacionais tem conhecimento de Delphi, mas, todos tem conhecimento de Pascal.

4.

OS REQUISITOS INICIAIS DA PRIMEIRA VERSÃO

Implementar através de um programa Pascal, o conjunto de instruções do Chip Intel 8086, de modo que fosse possível a execução simulada de código binário nativo. A implementação do programa deverá atender as seguintes restrições: •

tamanho da memória : 64Kb



operações de interrupções e acesso aos endereços de I/O: deverão ser implementadas nesta versão



interface com o usuário: deverão ser apresentadas as seguintes informações: •

o conteúdo de todos os registradores



o conteúdo da pilha de execução •



o conteúdo da área de dados •

• 5.

apresentar sempre do topo da pilha para a base; apresentar a partir de um endereço dado e um número de bytes;

uma área para comandos.

COMO FUNCIONA A VERSÃO 1.0

Nesta versão é possível a carga e execução de código binário (gerado a partir de um programa auxiliar) nativo em qualquer posição do espaço de endereçamento de 64Kb. O código necessita ser montado “a mão” , uma vez que não foi implementado um loader de arquivos executáveis. Cabe salientar que o código pode ser carregado em qualquer ponto da memória acima de 1K ( área reservada para a tabela de vetores de interrupções). Uma vez carregado, é possível a execução passo-a-passo de cada instrução, a visualização do conteúdo dos registradores, da pilha de execução e da área de dados. Na verdade, esta primeira versão , apresenta uma interface muito semelhante àquela do programa Turbo Debugger da Borland.

6.

A AVALIAÇÃO DA VERSÃO 1.0

Conforme citado anteriormente, foram obtidas várias versões do VXt. Algumas em pascal, outras em Delphi. A liberdade na escolha do ambiente de desenvolvimento levou em consideração que o objetivo principal desta primeira fase do projeto era a obtenção de uma versão executável do processador virtual. A escolha de um ou outro ambiente de desenvolvimento pelos alunos deveu-se ao domínio do ambiente. As versões em Pascal apresentaram como característica principal, um maior número de instruções implementadas e efetivamente testadas, e uma interface de comunicação com o usuário em modo caracter. O tamanho do código fonte girou em torno de 3000 linhas. As versões em Delphi apresentaram como característica principal, uma interface de comunicação com o usuário mais rebuscada (em função dos recursos disponibilizados pelo ambiente ) , mas um menor número de instruções efetivamente depuradas. O tamanho do código fonte girou em torno de 6000 linhas. Como resultado da implementação do VXt, foram exercitados vários conceitos secundários ao objetivo principal do trabalho, quais foram: a) metodologia de desenvolvimento : os alunos do semestre regular ainda não tiveram contato com as técnicas de desenvolvimento de aplicações (leia-se metodologias de desenvolvimento de sistemas). Portanto, durante o período de desenvolvimento da aplicação, houve necessidade de reorganização dos projetos (por parte dos alunos) tendo em vista os já conhecidos problemas de desenvolvimento de aplicações (que culminaram com a ênfase de Engenharia de Software). Deve-se salientar que as aplicações produziram código fonte (entre 3000 e 6000 linhas) cujo tamanho e complexidade já atingiram um patamar que pode ser classificado como não trivial em termos de desenvolvimento e depuração. Portanto, apesar de não possuírem muita experiência em desenvolvimento, os alunos já tiveram contato com os problemas que serão citados no semestre seguinte, na disciplina de Eng. de Software, o que permitirá aos mesmos um melhor entendimento dos conceitos a serem desenvolvidos nesta disciplina.

b) a ausência de uma ferramenta de controle de versões e de desenvolvimento em equipes, também gerou problemas durante o desenvolvimento da aplicação, fazendo com que os alunos verificassem na prática os problemas associados ao desenvolvimento de aplicações em workgroup; c) durante o desenvolvimento da aplicação foram fixados na prática os conceitos básicos de aritmética binária (e hexadecimal), na medida em que todas as operações realizadas pelo processador são efetivamente binárias; d) também foram utilizados recursos de Pascal que, poderiam ser considerados como avançados para os alunos do semestre regular, na medida em que houve a necessidade de utilização de código assembly in-line, o uso de definições absolute e a utilização de units (conduzindo a modularização do sistema) ; e) ficou evidente por parte dos alunos a necessidade de documentação do projeto e uso de padrões de escrita de código fonte (identação, nomes de variáveis, uso de variáveis locais/globais, ...) , uma vez que o número de componentes das equipes era relativamente grande (5 integrantes) e haviam problemas quando os módulos desenvolvidos por cada integrante tinham que ser agrupados para gerar a versão final. 7.

A VERSÃO ATUAL

Atualmente existem duas frentes abertas no projeto VXt: uma de depuração, outra de desenvolvimento. As turmas envolvidas na fase de depuração (Sistemas Operacionais I) receberam o código fonte de todas as aplicações desenvolvidas (tanto em Delphi como em Pascal) no semestre anterior, com o intuito de testar e documentar adequadamente todas as instruções do processador. Esta atividade além de fixar os conceitos anteriormente relacionados (arquitetura, aritmética binaria, etc.) também introduz um novo nível de dificuldade na medida em que os alunos deverão aprender a “dar manutenção” em código escrito por outras pessoas. Novamente a questão da Engenharia de Software volta a tona. As turmas envolvidas na fase de desenvolvimento (Sistemas Operacionais II) estão incumbidas de acrescentar ao atual VXt1.0 um PIC (Programmable Interrupt Controller) tendo em vista permitir ao processador comunicar-se com o mundo externo. 8.

CONCLUSÕES

O desenvolvimento do VXt 1.0 foi apenas um primeiro passo de um projeto multidisciplinar, que objetiva integrar disciplinas de Computação Gráfica, Orientação por Objetos, Engenharia de Software, Estrutura de Dados, Organização de Arquivos, de modo a permitir a criação de um laboratório onde cada disciplina venha a desenvolver seus conteúdos e utilizar o VXt como exemplo prático. Desse modo, torna-se mais fácil o entendimento dos conceitos porque os alunos aos poucos vão desenvolvendo uma base de referência que os permite construir analogias com situações experimentadas na prática. Uma primeira avaliação do projeto por parte dos alunos envolvidos na versão 1.0 apresentou resultados que estimulam a continuidade do projeto. Os alunos responsáveis

pela versão 1.0, neste semestre encontram-se engajados na implementação da versão 2.0. Esta continuidade nos trabalhos permite que se obtenha um grau maior na qualidade do material produzido, uma vez que é de conhecimento público que o mesmo será reutilizado (senão por quem produziu, mas por outros que os seguirão ). Isto contribui para desenvolver no aluno um senso maior de responsabilidade e um espírito empreendedor - o que vem ao encontro dos objetivos da Universidade - não somente desenvolver os conteúdos teóricos mas contribuir para a formação do indivíduo. Cabe salientar que o código fonte desta aplicação está disponível para donwload a partir do endereço http://www.inf.furb.rct-sc.br/~mattos. Qualquer dúvida, crítica e/ou sugestão será bem-vinda. 7-

BIBLIOGRAFIA

[BER86]

BERRY, K. A multitasking kernel. Dr. Dobb’s Journal: 16-80, Dec. 1986.

[BIG86]

BIGGERSTAFF, T.J. Systems software tools. Englewood Cliffs, PrenticeHall, 1986.

[CLA86]

CLAFF, W.J. Writing assembly language interrupt routines. Byte, 11(11): 249-62, 1986.

[DUN85]

DUNPHY, P.M. IBM PC interrupt service routines. Byte, 10(11):7, Fall 1985.

[FOA86]

FOARD, R.M. Premptive sheduling DOS. PC Tech Journal: 99-122, Apr. 1986.

[HOL83]

HOLTER, J. Add multiple tasks to your communication and control program. Byte, 8(9): 445-78, Sept. 1983.

[IBM83]

IBM CORPORATION. Technical reference. Boca Raton, 1983.

[INT81]

INTEL CORPORATION. IAPX 88 BOOK. Santa Clara, 1981.

[NOR83]

NORTON, P. Inside the IBM P.C. Bowie, Robert J. Brandy, 1983.

[SAR84]

SARGENT, M. & SHDEMAKER, R. L. The IBM personal computer from the inside out. Reading, Addison-Wesley, 1984.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.