VXt: UM AMBIENTE DIDÁTICO PARA ENSINO DE CONCEITOS BÁSICOS DE SISTEMAS OPERACIONAIS E ARQUITETURA DE COMPUTADORES

June 12, 2017 | Autor: Mauro Mattos | Categoria: Computer Architecture, OPERATING SYSTEM, Software Implementation, Levels of Abstraction
Share Embed


Descrição do Produto

VXt: UM AMBIENTE DIDÁTICO PARA ENSINO DE CONCEITOS BÁSICOS DE SISTEMAS OPERACIONAIS E ARQUITETURA DE COMPUTADORES Mauro Marcelo Mattos, Dr. [email protected]

Antônio Carlos Tavares,Esp [email protected]

Jorge Sampaio Farias [email protected]

Filipe Renaldi [email protected]

Resumo O presente artigo descreve a versão 3.0 do projeto VXt - um ambiente didático de apoio ao ensino de disciplinas de Arquitetura de Computadores e Sistemas Operacionais. O projeto vem sendo desenvolvido na FURB - Universidade Regional de Blumenau e caracteriza-se por implementar em software a arquitetura do processador Intel 8086. O ambiente permite vários tipos de análises de acordo com a necessidade e disponibilidade do aluno, através da estratificação em vários níveis de abstração, desde os componentes de hardware, passando pelo sistema operacional até a visão de usuário final.

Abstract This work describes the third VXt project - an auxiliary tool in teaching Computer Architecture and Operating Systems classes. This project is being developed at FURB - University of Blumenau. It is a software implementation of a 8086 Intel processor. The tool enables the student to get several levels of abstraction, since hardware components, passing by operating systems until the final user view of the architecture. The framework enables several kinds of analysis depending on the needs and availability of the students. PALAVRAS-CHAVE: Arquitetura de Computadores, Sistemas Operacionais, Software Básico, Simuladores, Ambientes Didáticos.

1. Introdução A aprendizagem é um processo no qual experiências fomentam modificação do comportamento e aquisição de hábitos. Segundo Wechsler (1993), “Piaget ao estudar a gênese do desenvolvimento da inteligência, demonstrou a importância da maturação do sistema nervoso, da ação sobre os objetos e dos fatores sociais como variáveis influenciantes na compreensão do processo intelectual. Em seus estudos, demonstrou como os processos de assimilação e acomodação de novos conhecimentos se incorporam à estrutura do pensamento”.

Segundo Grinkraut (1996), os métodos de transmissão de conhecimento cada vez mais vem sofrendo grandes modificações em virtude da evolução dos recursos audiovisuais. A disponibilidade cada vez maior destes recursos faz com que os alunos acabem perdendo o interesse pelas maçantes aulas e exercícios tradicionais, e por outro lado, também os professores sentem muita dificuldade em prender a atenção dos primeiros. Com o processo crescente no uso de tecnologias aplicadas à educação, é importante ressaltar não só a contribuição dos recursos computacionais existentes, mas também, a necessidade de estudar-se a forma ideal para sua aplicação. Dentro deste contexto, a tecnologia de ambientes de comunicação mediados por computador podem vir a permitir a criação de grupos de trabalho com interesses em comum, que venham a desenvolver atividades de formação acadêmica, síncrona ou assincronamente às atividades tradicionais de ensino desenvolvidas atualmente.

2. Contextualização O conceito de qualidade vem evoluindo desde a muito tempo quando começou a tornar-se um assunto de importância. Hoje, mais do que nunca, busca-se cada vez mais a excelência dos produtos e serviços produzidos. Mas e na Universidade? Como são conduzidos os procedimentos de aprendizagem? Não basta a aquisição e disponibilização de computadores em laboratórios. Da mesma forma que a área administrativa da Universidade possui um CPD (Centro de Processamento de Dados), que tem por objetivo agilizar o processamento de informações (e em última instância facilitar a gerência do negócio), a área de ensino deve passar a utilizar o recurso de informática como uma ferramenta auxiliar no processo de aprendizagem. Segundo Grinkraut (1996), o ambiente de aprendizado deve estimular o raciocínio (levando o aluno a pensar, não apenas memorizar), permitir ao aluno autonomia, considerando que este possa explorar o ambiente livremente, traçando um percurso conforme seu interesse e desenvolvimento do assunto. Através de ferramentas de multimídia, tem-se construído aplicações educacionais onde conceitos discutidos e apresentados em aula, podem ser detalhados e apresentados de forma gráfica. O uso deste recurso, quando convenientemente explorado, permite a construção de elementos extremamente ricos com relação a uma comunicação eficaz entre o aluno e o professor. Após apresentado em aula, um determinado tópico pode ser revisto pelos alunos tantas vezes quantas forem necessárias para a efetiva compreensão. Apoiado pelos recursos computacionais atualmente disponíveis surge o conceito de educação à distância.

2.1. Educação à distância A modalidade de aprendizagem de cada indivíduo é uma combinação de como percebe, organiza e processa a informação. Embora se possa chamar de várias formas os diversos estilos de aprendizagem, pode-se, de uma maneira simples, separar as duas principais categorias de aprendizagem (GUILLON e MIRSHAWKA,1994): (i) a modalidade, definida como a forma de compreender a informação mais facilmente, e (ii) a dominância cerebral, definida como a forma de organizar e processar a informação. Instrução, no contexto da escola, é um processo oferecido por instrutores humanos e envolve o professor e o aprendiz. Segundo Cronbach apud Wu (1995), os melhores instrutores são aqueles que podem fornecer adaptação intuitiva baseada na experiência e nas impressões de cada estudante. Neste

sentido, a possibilidade para realizar experiências teóricas ou especialmente práticas com as mãos, de uma forma não constrangida pela presença de inspetores ou instrutores, ou a disponibilidade de recursos, incluindo tempo, tem proporcionado um interesse crescente por ferramentas de apoio ao ensino baseadas em tecnologias de ensino à distância. Apesar do seu grande potencial, e de estar sendo anunciado como novidade, o conceito de educação à distância é antigo e sempre esteve associado a formação profissional. Oriundo do ensino por correspondência, passou pelo rádio e mais recentemente está na televisão. Atualmente o recurso de educação à distância faz uso de toda a tecnologia disponível: computadores, redes e multimídia, e extrapolando a idéia original, já começa a ser utilizado dentro das universidades. Naturalmente, o emprego deste conceito em ambiente acadêmico implica em novas estratégias com respeito a combinação racional de recursos, meios, formas de trabalho acadêmico e formas de direção e organização do processo. No entanto, o que se observa atualmente, é que tanto os softwares disponíveis no mercado, como os programas de educação à distância, em sua maioria, constituem-se em uma versão informatizada dos livros e antigos procedimentos didáticos presenciais. Desta forma, não permitem o grau de interação que, por um lado os recursos disponibilizam, e por outro, seria conveniente para complementar os requisitos de aprendizagem. Apesar de um sistema multimídia possibilitar a ilustração de idéias através da combinação de meios visuais, auditivos e textuais, permitindo ao professor criar novos modos de comunicação, a simples utilização dos recursos de multimídia não garantem um maior grau de absorção do conteúdo por parte do aluno. Um outro fator muito importante a ser considerado neste contexto é que, apesar dos recursos disponíveis ainda não estarem sendo utilizados adequadamente sob o aspecto didático-pedagógico, a tecnologia já está disponibilizando um outro recurso ainda mais avançado – o conceito de virtual: as comunidades virtuais e os ambientes de realidade virtual, e dentro deste contexto, as classes virtuais. Portanto, o projeto de um sistema de aprendizagem que permita a formalização do ensino de tal forma a possibilitar uma fácil manipulação de seus passos e procedimentos definidos, enquanto preserve a capacidade de manipulação, sem a criação de dependências errôneas é um dos objetivos principais do projeto VXt.

2.2. O conceito de virtual O conceito de aprendizado virtual ocorre através da aplicação de pedagogias de aprendizado a distância e presencial, suportado pelas mesmas tecnologias de informações e telecomunicações que possibilitam outras operações consideradas virtuais tais como: laboratórios virtuais e escritórios virtuais. Já é consenso no meio acadêmico que, uma comunidade de aprendizado virtual é constituída pelo que poderia ser considerado nos moldes tradicionais como estudantes, professores, especialistas, gerentes, executivos, auditores, consultores e, qualquer outra categoria de pessoas interessadas em ensino. Enquanto o aprendizado tradicional é apresentado para habilidades específicas do indivíduo, a maioria das competências virtuais necessitam ser desenvolvidas em equipes, através de uma rede. Cada um torna-se um professor, e cada um torna-se um aprendiz. Todos compartilham conhecimento e aprendizado através do trabalho cooperativo e com a infra-estrutura comum – a rede.

Cabe salientar ainda que os membros de uma comunidade virtual ainda retém suas identidades e papéis reais em suas organizações reais. O sistema de aprendizado deve não somente ligá-los com suas equipes virtuais, mas ligá-los de volta para usas especializações envolvendo suas organizações e papéis reais. A escola, como um espaço privilegiado para a apropriação e construção de conhecimento, tem como papel fundamental instrumentalizar seus estudantes e professores para pensar de forma criativa soluções tanto para os antigos, como para os novos problemas emergentes desta sociedade em constante renovação. Todos tem os mesmos instrumentos para chegar ao conhecimento, mas não os utilizam com a mesma intensidade. Normalmente, os processos educacionais baseiam-se, quase que exclusivamente, no desenvolvimento da inteligência lingüística e da lógico-matemática, deixando de lado as outras formas de acesso ao conhecimento. É justamente pela abordagem abstrata no ensino de algumas disciplinas-chave no curso de Computação que justifica-se a pesquisa e o desenvolvimento de ferramentas e/ou aplicações tecnológicas para auxiliar no processo de aprendizado. Os aspectos cognitivos relacionados a captação de conteúdos comprovam a eficácia de processos que relacionam a ferramenta computador em benefício da produtividade intelectual.

2.2.1. O projeto VXt O currículo do curso de Ciências da Computação da Universidade Regional de Blumenau estabelece como obrigatórias as disciplinas de Arquitetura de Computadores (2o Semestre) e Sistemas Operacionais (4o semestre). 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 permitisse exemplificar os conceitos de modo mais claro, estimulou o desenvolvimento do VXt. O projeto VXt pode ser caracterizado como a implementação em software do processador Intel 8086. Alguns dos aspectos mais importantes do projeto serão discutidos neste texto. No entanto, uma especificação mais detalhada pode ser obtida em Mattos e Tavares (1997), Mattos e Tavares (1999a) e Mattos e Tavares (1999b). Além disso, analisando-se o perfil dos alunos, verificou-se que em sua maioria, são oriundos do 2o grau, e, portanto, possuem conhecimentos abstratos sobre áreas científicas (matemática, física, biologia, etc.). Porém, quando se deparam com os conceitos apresentados nas disciplinas em questão, geralmente encontram dificuldades em abstrair detalhes de implementação e concentrar-se nos conceitos propriamente ditos. Um outro aspecto importante a destacar refere-se ao fato de que os alunos dedicamse em tempo parcial ao curso, ou seja, mesclam atividades profissionais com atividades acadêmicas. A ausência de uma ferramenta didática que permita exemplificar mais detalhadamente alguns conceitos importantes no ensino das disciplinas anteriormente citadas, conduziu a especificação do VXt. Em função disto, iniciou-se um projeto em sala de aula, com o intuito de construir-se uma ferramenta que permitisse suprir as dificuldades acima citadas através do emprego, na medida do possível, dos conceitos

anteriormente abordados. Esta ferramenta deveria implementar um processador, a partir do qual fosse possível demonstrarem-se conceitos básicos das duas disciplinas em questão. Para a escolha do processador foram considerados os seguintes aspectos: a) 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) 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) Processador alvo deveria executar um sistema operacional que fosse de conhecimento do públicoalvo, tendo em vista evitar o esforço desnecessário (em função dos objetivos do trabalho) no aprendizado da utilização do mesmo; d) Deveria 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 atendia ao requisito (a) acima descrito na medida em que os alunos da disciplina de Arquitetura de Computadores geralmente desenvolvem pequenas aplicações utilizando a linguagem assembly deste processador; b) Ele atendia ao requisito (b), na medida em que há toda uma estrutura que suporta o desenvolvimento de aplicações para a plataforma Intel; c) Ele atendia 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 dispunha (e dispõe) de literatura suficiente para permitir aos alunos o desenvolvimento da referida aplicação.

3. A metodologia de desenvolvimento Adotou-se uma metodologia de aprendizado ativa, através de sucessivos refinamentos, na qual os conceitos básicos seriam implementados gradualmente, e a medida em que o projeto avançasse, maiores níveis de abstração seriam obtidos, sem a perda do que já foi assimilado. Um requisito importante foi o de que a cada semestre, os novos alunos incorporados ao projeto teriam acesso a toda documentação (especificação + código-fonte da aplicação) disponível de tal forma a revisar o que já havia sido construído e continuar o desenvolvimento do projeto. Paralelamente ao desenvolvimento do plano de ensino das respectivas disciplinas, os alunos foram sendo engajados ao projeto de implementação, de tal forma a desencadear um processo de reflexão e tomada de consciência de seu próprio processo de aprendizagem. A partir da liberação da primeira versão em fins de 1997/1, deu-se o início ao ciclo de testes (e correções) e incorporações de novos módulos tanto de software como de "hardware" (virtual). A ferramenta passou a ser usada pelas turmas de 2o semestre, atuando como auxiliar ao aprendizado dos conceitos de aritmética binária, componentes de hardware e linguagem assembly. Erros encontrados durante o uso eram reportados para as turmas responsáveis pela implementação para correção. Durante os 3 primeiros semestres, o processo não apresentou um rendimento muito rápido tendo em vista que as turmas ainda não estavam ambientadas com os conceitos e a filosofia de desenvolvimento

do projeto. A partir do momento em que as turmas de 2o semestre (que já haviam tido contato com a ferramenta) começaram a chegar ao 4o semestre, o processo de desenvolvimento passou a ser mais rápido. Cabe salientar que, toda a comunicação entre equipes e com os professores coordenadores ocorria (e ocorre) através de e-mail e, somente dúvidas e orientações gerais são discutidas em aulas especiais.

3.1.1. O desenvolvimento da primeira versão 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. A especificação do trabalho foi conduzida buscando o referencial teórico existente na literatura referente a arquitetura do microcomputador PC XT, tais como proposto por Rector e Alexy(1980), Biggerstaff (1986), Willen e Krantz (1987), Choisser (1989), Eggebrecht (1995). Algumas equipes desenvolveram a aplicação utilizando a linguagem Pascal e o ambiente de desenvolvimento Turbo Pascal da Borland. Outras equipes desenvolveram a aplicação utilizando o ambiente de desenvolvimento Delphi (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. A primeira versão possibilitava somente 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. Entretanto o código necessita ser montado “a mão”, uma vez que não havia sido implementado um carregador de arquivos executáveis. Uma vez carregado, era 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, apresentava uma interface muito semelhante àquela do programa Turbo Debugger da Borland. Como resultado da implementação da 1a versão do VXt, pode-se constatar vários aspectos relacionados a questão de aprendizado, quais foram: •

metodologia de desenvolvimento : os alunos do semestre regular ainda não haviam tido 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 tendo em vista os já conhecidos problemas amplamente discutidos pela área de Engenharia de Software, quais sejam: documentação, modularização, etc. 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 (considerando-se o perfil das equipes envolvidas). Portanto, apesar de não possuírem muita experiência em desenvolvimento, os alunos já tiveram contato com os problemas que serão desenvolvidos em semestres posteriores, nas disciplinas da área de Eng. de Software. Esta experiência anterior contribuiu para uma melhor assimilação dos conceitos a serem desenvolvidos nesta disciplina.



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; •

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;



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) ;



ficou evidente por parte dos alunos a necessidade de documentação do projeto e uso de padrões de escrita de código fonte (endentaçã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.

3.1.2. O desenvolvimento das versões posteriores Posteriormente a liberação da primeira versão, o projeto foi dividido em frentes de trabalho, as quais foram alocadas nas turmas de acordo com o grau de dificuldade e de condições de aprendizado exigidas. As turmas de 2o semestre (Arquitetura de Computadores) passaram a utilizar o VXt como ferramenta auxiliar ao estudo dos conceitos básicos da mesma. Já nas disciplinas de Sistemas Operacionais adotouse a estratégia de depuração e desenvolvimento gradual de novos módulos. Assim, a cada início de semestre letivo, as turmas recebem a versão desenvolvida no semestre anterior, e como atividade de “ambientação”, são incumbidas de executar aplicações com a finalidade de depuração do código implementado. Como atividade de “contribuição”, na fase final do semestre, as turmas são engajadas no desenvolvimento de novos módulos tendo em vista agregar novas funcionalidades a versão em uso. Esta atividade além de fixar os conceitos anteriormente desenvolvidos (arquitetura, aritmética binária, etc.) também introduz um novo nível de dificuldade na medida em que os alunos deverão aprender a “realizar atividades de manutenção” em código escrito por outras pessoas. Novamente a questão da Engenharia de Software volta a tona.

3.1.3. O processo de reengenharia Não obstante o caráter de aprendizagem de como os componentes internos de um processador funcionam estarem sendo implementados, havia um aspecto frustrante: o VXt não podia executar completamente programas compilados com compiladores tradicionais tendo em vista que, não havia um sistema operacional instalado na máquina virtual. Assim, toda chamada de sistema (que no DOS ocorre através da instrução INT 21h) fazia com que o programa do aluno encerrasse sua execução de forma anormal. No segundo semestre de 2003, iniciou-se um processo de reengenharia no projeto, de tal forma a substituir o código que implementava as instruções por um equivalente desenvolvido no projeto X86 (Sourceforge,2003). Dessa forma, foi possível conjugar os esforços no sentido de obter-se um simulador fiel, e de desenvolver-se uma ferramenta didática. Além disso, o projeto foi totalmente remodelado,

sendo atualmente estruturado conforme o diagrama de classes apresentado na figura 1.Assim sendo, o VXt passou a apresentar uma nova arquitetura, a qual será descrita na próxima seção.

4. VXt versão 2004 A versão atual do VXt apresenta algumas características importantes em relação às versões anteriores, quais sejam: a) modelo cliente-servidor; b) isolamento entre a interface com o usuário e a implementação do processador; c) possibilidade de execução de vários exemplos em paralelo através do congelamento de contextos; d) possibilidade de armazenar e resgatar o contexto de execução de um programa em outro momento; e) possibilidade de salvar o “log” de execução do programa em arquivo para posterior análise. A arquitetura baseada no modelo cliente-servidor permitiu que seja possível ao professor disparar o servidor (que implementa o processador), e sua instância da interface com o usuário. Permite também aos alunos dispararem suas instâncias de interface com o usuário para “assistirem” a execução passo a passo conduzida pelo professor. Esta arquitetura permite também, que, em determinado momento, trabalhos práticos sejam conduzidos dentro de pequenos grupos, onde o líder do grupo dispara o módulo servidor, e seus colegas conectam-se a ele através do endereço IP do servidor. Este processo possibilita as seguintes variações: a) o professor conduz a aula e os alunos acompanham a execução; b) o professor dispara um trabalho em grupo e pode conectar-se na estação do líder para acompanhar o andamento do trabalho; c) cada aluno individualmente pode executar sua própria cópia do servidor e da interface cliente em uma máquina local podendo executar exercícios individuais. Como resultado do processo de reengenharia, foi possível dispararem-se novas frentes de desenvolvimento em paralelo graças a instalação de um servidor CVS. O CVS é um sistema de controle de versões concorrente que possibilita o trabalho paralelo de várias equipes. Assim, duas novas frentes estão sendo desenvolvidas neste momento, quais sejam: a) Desenvolvimento de um núcleo de sistema operacional didático, o qual apresenta as seguintes características: 1. Implementar um núcleo de sistema operacional sobre o hardware virtual; i. Implementar o conceito de thread e processo; ii. Implementar o conceito de primitivas de sincronização; iii. Implementar o conceito de primitivas de intercomunicação entre processos; 2. Sincronizar o código fonte em assembly com a instrução sendo executada pelo hardware; 3. Permitir a inspeção do estado do núcleo ; 4. Permitir a inspeção do estado de um processo em particular. b) Desenvolvimento de dispositivos de hardware e de uma BIOS (Basic Input-Output System) para o sistema.

5. Características do VXt O vxt em sua versão atual apresenta as seguintes características: • A atual versão do VXt apresenta uma interface de baixo nível tendo em vista que, um dos objetivos da proposta VXt é o de permitir ao aluno manipular código executável gerado pelos compiladores

• • • • • • • •



da máquina real, a implementação do hardware está buscando, na medida do possível ( e limitado em determinadas situações a qualidade e disponibilidade de informações técnicas precisas) , aproximarse com máxima fidelidade à implementação do hardware real. Em função disto, sua aplicabilidade torna-se eminentemente didática, na medida em que é possível utilizá-lo para o ensino de conceitos básicos de linguagem de programação assembly, conceitos de hardware e alguns conceitos básicos de sistemas operacionais. Possui uma interface com o usuário (figura 2) bastante amigável; Apresenta informações sobre o passo de relocação de arquivos .EXE tanto ao nível de header quanto ao nível de tabela de relocação; Permite a manipulação de arquivos binários puros, o que possibilita a construção de estruturas muito simples para teste de algum conceito/instrução sem a necessidade de elaboração de um programa completo; Permite a alteração da base numérica para representação das informações na tela, sendo possível optar-se por: decimal, hexadecimal e binário; Apresenta um log da seqüência de execução realizada, de tal forma que o aluno pode analisar o fluxo de execução de um determinado programa ou rotina, mesmo após o término da execução; A medida em que instruções do tipo INT são detectadas, as mesmas são filtradas e apresentadas em uma janela específica (figura 3), sendo possível ao aluno analisar efetivamente o que ocorre. São apresentados: a descrição da função, os parâmetros de entrada e o valor de retorno da mesma. Permite a análise por parte do aluno, do opcode da instrução sendo executada (figura 2); Apresenta dicas explicativas (hints) sobre os conceitos teóricos que sustentam todo o funcionamento da CPU bem como das instruções de máquina; Identifica quais são os registradores de referência; clicando-se na área de código destacam-se os registradores CS:IP, clicando-se na janela de área de pilha, destacam-se os registradores SS:SP, e assim por diante, induzindo desta forma o aluno ao entendimento da função dos registradores de segmento e deslocamento; A facilidade de help on-line (atualmente em construção), além das informações tradicionais de uso da ferramenta, deve incorporar um curso de assembly, de tal forma a fundamentar conceitualmente e através de exemplos o funcionamento detalhado dos diversos elementos eu compõe o VXt.

6. Considerações finais Como citado anteriormente, além da experiência em programação e desenvolvimento de um software aplicativo de média complexidade, o VXt como ferramenta didática apresenta as seguintes vantagens em relação a adoção de outras ferramentas comerciais disponíveis no mercado: • Possui um caráter eminentemente didático, na medida em que procura apresentar informações que em outros ambientes sequer são consideradas; • Permite a utilização de pequenos programas de teste que não necessitam ser compilados formalmente, ou seja, é possível montar literalmente "na mão" as instruções e testá-las no VXt, sem passar por um passo formal de compilação, o que facilita sua aplicação em disciplinas introdutórias de cursos de computação; • Permite a análise das seqüências de chamadas de interrupções por software, permitindo uma análise do funcionamento tanto do mecanismo de interrupções, quanto da aplicabilidade do mesmo em sistemas operacionais;

• • •

Possibilita ao aluno revisar os conceitos desenvolvidos em aula na velocidade adequada as características individuais de cada um; Permite uma análise macroscópica através da execução automatizada das instruções bem como uma análise microscópica através da facilidade de execução passo-a-passo, disponibilizando ao aluno dicas didáticas sobre o contexto em estudo. Permite, através da análise do código-fonte, o entendimento de como os conceitos abstratos podem ser implementados em software e, através deste entendimento, levar o aluno a construir analogias com o hardware real a partir da experiência obtida.

7. Conclusões Os resultados obtidos através da avaliação da aplicação da ferramenta em sala-de-aula atingiu aos objetivos inicialmente propostos e permitiu o lançamento 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. Embora apresentando resultados que talvez possam parecer incipientes numa primeira análise, pretendese que o VXt possa vir a executar todo o processo de carga (boot) do Sistema Operacional MS-DOS, permitindo aos alunos monitorarem todo um ciclo de vida de uma instância de sistema operacional executando sobre este hardware virtual. Constantes avaliações do projeto por parte dos alunos envolvidos tem apresentado resultados que estimulam a continuidade do projeto. Os alunos responsáveis por uma versão, no semestre seguinte envolvem-se ou na implementação de novos componentes, ou com o uso da ferramenta. Esta continuidade nos trabalhos permitiu que se obtivesse um maior grau 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 desta aplicação está disponível para download 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.

8. Bibliografia BIGGERSTAFF, Ted J. Systems Software Tools. Prentice-Hall, Austin, 1986. CHOISSER,Foster. The XT-AT handbook. Annabooks, San Diego, 2 ed. 1989. EGGEBRECHT, Lewis C. Interfacing to the IBM Personal Computer. Sams, Indiana, 9 ed. 1995. GUILLON, A.B.B., MIRSHAWKA,V. Reeducação. Qualidade, produtividade e criatividade: caminho para a escola excelente do século XXI. Makron Books do Brasil. São Paulo, 1994. GRINKRAUT,M.L., Computador: uma ferramenta a mais a disposição do professor. Informativo Sociedade de Psicologia de São Paulo, São Paulo: Ano 1, Vol 1,n.1, setembro/1996. MATTOS, Mauro M. e TAVARES, Antonio C. VXT 1.0: Uma ferramenta didática para apoio ao ensino de software e hardware. Anais XIV SEMINCO, Blumenau,1997.

MATTOS,Mauro .M., TAVARES, Antônio C. VXt: Experiência de desenvolvimento cooperativo de um ambiente didático. VII CIESC - Congreso Iberoamericano de Educacion Superior en Computacion – 30 aug/3 set 1999. Asunción – Paraguay. MATTOS, M.M., TAVARES, A.C. Desenvolvimento Cooperativo de um Ambiente de Apoio ao Ensino de Conceitos Básicos de Hardware e Software VII WEI99-SBC99- Workshop de Ensino em Informática19-21Jul 1999. Rio de Janeiro – RJ. RECTOR, Russel; ALEXY, G. The 8086 Book. Osborne/McGraw-Hill, Berkeley, 1980 SOURCEFORGE. www.sourceforge.net. 2003.

WECHSLER, S. M. Criatividade: descobrindo e encorajando. Ed. Psy,Campinas, 1993. WILLEN, David C.; KRANTZ, Jeffrey I. 8088 Assembler language programming: the IBM PC. Sams, Indianapolis, 2 ed. 1987. WU,Binghui H. A framework for intelligent tutoring systems. In The 7th World Conference on Artificial Intelligent in Education (AI-ED 95), page 599. AACE and GMU, Aug. 1995.

Figura 1 – Estrutura das classes do VXt.

• • • • • • •

Destaque de opcode,mod,reg/rm Representação em diferentes bases Vários contextos de execução Modelo Cliente-Servidor Visualização de área de dados,código e pilha Filtragem de interrupções Protótipo de dispositivo CGA

Figura 2 – Modelo de interface do projeto VXt

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.