simulador para o aprendizado de sistemas operacionais
Transcrição
simulador para o aprendizado de sistemas operacionais
SIMULADOR PARA O APRENDIZADO DE SISTEMAS OPERACIONAIS1 TONINI, Gustavo Alexssandro2; LUNARDI, Sediane Carmem· Universidade Comunitária Regional de Chapecó, Curso de Bacharel em Ciência da Computação, Chapecó - SC, Brasil, 89809000 [email protected], [email protected] RESUMO Este trabalho apresenta o desenvolvimento de uma aplicação simuladora para o aprendizado da disciplina de sistemas operacionais (SO), o qual visa fornecer uma alternativa aos professores da disciplina de sistemas operacionais para que utilizem aulas práticas no ensino do conteúdo. Desta forma, o aluno poderá observar o funcionamento computacional de alguns componentes dos sistemas operacionais modernos de uma forma limpa e acessível. O protótipo foi desenvolvido utilizando a linguagem Java e o construtivismo foi indicado como estratégia pedagógica mais adequada. PALAVRAS-CHAVE: Sistemas operacionais Simulação; Ensino. ABSTRACT This work presents the development of a simulator application for the learning of the discipline of operating systems, which seeks to supply an alternative to the teachers of the discipline of operating systems so that they use practical classes in the teaching of the content. This way, the student can observe the computational operation of some components of the modern operating systems in a clean and accessible way. The prototype was developed using the Java language and the construtivismo was indicated as more adjusted pedagogical strategy. KEYWORDS: Operating Systems; Simulation; Education. INTRODUÇÃO Algoritmos, conceitos e teorias sobre como são construídos os sistemas operacionais são tópicos essenciais num curso de Ciência da Computação. Os estudantes alegam não aprender de forma eficaz os conteúdos ministrados por diversas razões [JONES, NEWMAN, 2002, p. 2]. Um problema comum encontrado pelos professores do curso de ciência da computação é a dificuldade de fazer com que o aluno entenda alguns conceitos abstratos e complexos que algumas disciplinas do currículo enfatizam. Atualmente, a técnica de ensino consiste em fornecer ao aluno alguns livros, artigos, tutoriais sobre o assunto, propor discussões, questionários e aplicar uma prova para testar a assimilação do conteúdo. Depois que o semestre acaba, se nada mais é visto acerca do assunto, as teorias aprendidas (muitas vezes fundamentais) são esquecidas. A dificuldade de ministrar Sistemas Operacionais (SO) tem sido tema de discussões na literatura especializada [BEM-ARI, 1998 apud JONES, NEWMAN, 1 Trabalho desenvolvido com o apoio do Artigo 170 da Constituição Estadual de Santa Catarina na UNOCHAPECÓ. 2 Atualmente aluno do curso de Ciência da Computação da Universidade Federal de Santa Catarina. 2002, p. 1]. Por isso, a teoria construtivista tende a substituir o modelo teórico atual, o que é solicitado há anos pelos estudantes do curso. O construtivismo “é uma técnica que consiste em aprender implementando, observando ou modificando algoritmos que executam algumas funções do software completo” [JONES, NEWMAN, 2002, p. 2]. É inegável a participação fundamental dos sistemas simulados neste processo. Primeiramente, o aluno pode experimentar ele mesmo os reflexos que determinados algoritmos causam no conjunto. Depois, com o avanço das linguagens de programação, o sistema fica independente da máquina e pode ser executado em qualquer plataforma. Assim, a idéia principal é desenvolver um conjunto de mecanismos que possibilitem ao aluno de Sistemas Operacionais opinar e sugerir modificações aos modelos utilizados atualmente. Todo esse processo será documentado através de tutoriais que servirão como complemento a implementação da ferramenta. O ponto chave do projeto está no código-fonte do simulador e na documentação do mesmo. Nestes, serão criados mecanismos que permitam ao usuário unir a teoria e prática facilmente. Este artifício representa a conexão entre o simulador, bem como as teorias acerca de sistemas operacionais com a lição pedagógica da teoria construtivista que nos motiva. No entanto, sistema operacional é um termo muito amplo. Isso torna o conteúdo da disciplina do curso muito extenso e teórico. Constata-se que poucos esforços têm sido empreendidos no sentido de tornar a disciplina mais didática, prática e intuitiva[MACHADO, MAIA, 2004]. Desta forma, este artigo apresenta parte da implementação de um simulador em Java baseado na teoria construtivista para auxiliar os acadêmicos dos cursos Computação no aprendizado de Sistemas Operacionais. O artigo é dividido como segue. Na seção 1 é explanado sobre construtivismo. Simulação é apresentada na seção 2, bem como uma comparação de simuladores. O protótipo é descrito na seção 3 e algumas considerações finais na seção 4. 1CONSTRUTIVISMO Atualmente, o construtivismo representa uma mudança nos conceitos de ensino aprendizagem e é tomada como estado de arte quando se aplica a outras áreas de conhecimento. Trata-se de um fenômeno descrito pelos pedagogos como evolução conceitual. Apesar da variedade de diferentes abordagens e visões, que aparecem na literatura sob o mesmo rótulo, há pelo menos duas características principais que parecem ser compartilhadas [SASTRE, 2002]: 1) a aprendizagem se dá através do ativo envolvimento do aprendiz na construção do conhecimento; 2) as idéias prévias dos estudantes desempenham um papel importante no processo de aprendizagem. Portanto, conclui-se que o sucesso de um empreendimento baseado na teoria construtivista depende, não somente do empenho do aluno em aprender, mas, da fusão entre o que este está aprendendo com suas idéias originais acerca do assunto. É importante ressaltar também que além desses dois conceitos, um orientador (facilitador do aprendizado) é ponto fundamental no estudo, pois é ele que indicará o caminho a ser seguido independentemente da teoria de aprendizado aplicada. O conhecimento é construído pelo aluno não pela exposição de livros-texto como no modelo instrucionista comumente utilizado, mas pela fusão entre a experiência adquirida na utilização prática dos conceitos e o conhecimento previamente adquirido pelo sujeito. O construtivismo não representa somente a definição de uma metodologia de ensino, mas uma proposta de mudança de conceitos quanto ao modelo instrucionista, a abolição do modelo pedagógico que define um mestre ativo e um aprendiz passivo. 2.1EXPERIMENTOS COM CONSTRUTIVISMO NO ENSINO DE SISTEMAS OPERACIONAIS Um Sistema Operacional é apenas um conjunto de rotinas executadas pelo processador de forma semelhante aos programas de usuários. As rotinas são executadas em função de eventos assíncronos, ou seja, eventos que podem ocorrer a qualquer momento [TANENBAUM, 2003]. Muitos simuladores foram utilizados no ensino da disciplina de SO; mas, poucos utilizando a metodologia construtivista. O modelo pedagógico descrito por Machado e Maia (2004) intitulado “Um framework construtivista no aprendizado de sistemas operacionais” foi utilizado, experimentalmente, no curso de Bacharelado em Sistemas de Informação da PUC-Rio no ano de 2003. O simulador SOSim foi utilizado nas aulas práticas e alguns dos pontos positivos levantados pelos alunos estão listados a seguir [MAIA, 2003]: o simulador ajuda o aluno a sair um pouco da teoria; a visualização dos conceitos teóricos; maior e melhor aprendizado; o simulador ajuda muito na fixação dos conceitos. A experiência mostra o contraste entre o modelo construtivista e o instrucionista vivenciado pelos alunos. 2SIMULAÇÃO Simulação é uma metodologia de resolução de problemas que consiste na imitação de um processo real ou sistema completo envolvendo a montagem de uma situação artificial do sistema, observação e conclusão sobre o desempenho do sistema simulado [BANKS, 1998]. 3.1 SIMULADORES DE SISTEMAS OPERACIONAIS Existem vários simuladores de sistemas operacionais no meio acadêmico. Apresenta-se abaixo alguns dos mais conhecidos como forma de elucidar as características comuns e seus objetivos. Cada simulador tem características e funcionalidades diferentes. É importante entender quais características são necessárias para o alcance dos objetivos de cada aplicação. RCOS E RCOS.Java RCOS é um sistema operacional simulado escrito em C++ com fins educacionais. Neste sistema, a simulação acontece através de linhas de comando em um interpretador (shell). A representação das operações é visualizada graficamente pelo usuário. A implementação do RCOS foi realizada de uma forma que permite a compatibilização com diferentes plataformas, através de uma camada chamada PAL (camada de abstração de plataforma). O RCOS pertence ao grupo de simuladores de horizonte finito simulando gerência de processos (com suporte à troca de mensagens), gerenciamento de memória, acessos a disco rígido, entre outros [JONES, 2002b]. A forma como algumas das funcionalidades são implementadas é baseada nos sistemas UNIX e Microsoft Windows NT. RCOS.Java é a versão do RCOS escrita em linguagem Java. A aplicação executa num “applet” através de navegador Web. Seu objetivo é auxiliar os estudantes no aprendizado, análise, avaliação e resolução de problemas em sistemas operacionais. RCOS.Java apresenta um conjunto de dispositivos simples como: unidades de disco, processador, memória e terminais. O SO simulado possui interface para comunicação interprocessos através de troca de mensagens e é baseado em micro-kernel [JONES, 2002b]. Foi desenvolvido tendo como principal motivação a dificuldade dos alunos em aprender conceitos de sistemas operacionais [JONES, 2002a]. O simulador permite, ainda, a criação de processos e exame de cenários. É constituído de 250 classes e há módulos animados para a representação do escalonamento de processos, da comunicação interprocessos e da unidade centrar de processamento (UCP). Apesar de apresentar um ambiente gráfico e características avançadas dos sistemas operacionais, RCOS deixa a desejar no que se refere à simulação de sistemas de arquivos e do gerenciamento de memória. Também se pode citar como desvantagem do simulador o fato de ser necessária a utilização de um servidor web para executar a aplicação. NACHOS Nachos é uma ferramenta de ensino de sistemas operacionais, disponível em ambiente UNIX, que permite a simulação de vários módulos de um sistema operacional. Os componentes de hardware simulados pela ferramenta têm arquitetura parecida com a máquina MIPS, possuindo detalhes de implementação de registradores, memória e UCP. Há suporte para memória virtual com tabelas de página e tabelas Translation Lookaside Buffer (TLB) [NARTEN, 2005]. A manipulação de interrupções é uma característica importante ao simulador. É implementada através de threads e manipula vários níveis de prioridade. Os dispositivos simulados são de Console e Disco. O primeiro oferece uma abordagem de um interpretador de comandos para a manipulação instrucional do teclado. O segundo simula um dispositivo de disco genérico com todas as interrupções e particularidades de acesso. Há diretivas para leitura e escrita de dados e verificação de latência [NARTEN, 2005]. Quanto a processos, o escalonador Nachos tem suporte a subprocessos (threads), utilizando o algoritmo de escalonamento circular com preempção por tempo para evitar a monopolização da UCP. O simulador também fornece uma estrutura de semáforos para a definição de exclusão mútua entre subprocessos [NARTEN, 2005]. Há duas implementações de sistema de arquivos no Nachos, a primeira suporta manipulação de arquivos Unix File System. Já a segunda permite a implementação de um sistema de arquivos simulado para o aprendizado. A implementação é realizada através de várias camadas de objetos contendo: definição de dispositivo (Disk), sincronização de acesso (SynchDisk) e chamadas de sistema para acesso (FileSystem). Já ocorreram experimentos com o aprendizado de SO utilizando Nachos. Os estudantes ficam “perdidos” no início, mas com pequenos auxílios do professor os conteúdos são fixados de forma adequada [NARTEN, 2005[. Pode-se notar que o simulador Nachos permite simulações de partes específicas de um sistema, como: subprocessos e memória virtual. Mas, deixa a desejar no que se refere a algumas funcionalidades básicas, como: algoritmos de escalonamento e manipulação de dispositivos genéricos. Outra desvantagem da ferramenta é a necessidade de um sistema baseado somente em UNIX para a execução. SOSIM O simulador “SOsim” foi desenvolvido pelo professor Luiz Paulo Maia como ferramenta de suporte ao ensino de sistemas operacionais. Seu objetivo é dinamizar o ensino da disciplina. O simulador emula os principais módulos de um SO multiprogramável, como gerência de processos, escalonamento e gerência de memória [MACHADO, MAIA, 2004]. Existe versão gratuita disponível para o ambiente Windows. O ambiente gráfico e intuitivo facilita o aprendizado e permite ao usuário a assimilação dos conceitos de forma simples e eficaz. Apesar da intuitividade e facilidade da simulação, SOSim apresenta como desvantagens: a falta da simulação do gerenciamento de dispositivos e de sistemas de arquivos. 3.1 COMPARAÇÃO ENTRE OS SIMULADORES DE SO Este item permite uma abordagem comparativa dos simuladores de SO descritos, de acordo com alguns quesitos importantes para os objetivos deste trabalho. Na Tabela 1 estão relacionadas às aplicações mencionadas levando em conta aspectos relevantes como multiplataforma, quesito educacional, gerenciamento de arquivos, entre outros. Quesito Multiplataforma Educacional Gerência de processador Gerência de memória Gerência de dispositivos genéricos Sistema de arquivos IPC Subprocessos Interoperação de hardware Interrupções Tabela 1 - Comparação dos simuladores de SO Nachos RCOS RCOS.Java Não Sim Sim Sim Sim Sim Sim Sim Sim SOSIM Não Sim Sim Sim Sim Sim Sim Não Não Não Não Sim Sim Sim Sim Sim Sim Não Sim Sim Sim Não Sim Não Não Não Não Sim Não Não Não Pode-se notar que os módulos mais importantes do SO: gerência de processador e memória são simulados e os demais são, as vezes, deixados de lado no estudo. O quesito multiplataforma também é importante, pois permite a execução da simulação em ambientes quaisquer, levando em conta que cursos diferentes utilizem SO diferentes nas aulas. 3O PROTÓTIPO O método de simulação implementado é o discreto, ou seja, a simulação do comportamento do sistema a partir de várias entradas reais. O software é distribuído na forma de pacote “jar”, que quando executado exibe o frame principal com as opções do menu. Numa mesma instância do simulador, é possível manter vários projetos de simulação. O menu simulação fornece as opções necessárias para criar/manter um projeto de simulação. Também é possível acessar as funções de persistência e carga dos projetos. Quando a criação de um projeto de simulação é executada, o simulador exibe as caixas de diálogo para a configuração dos itens da simulação, onde são coletadas as informações necessárias sobre o tipo do sistema que será simulado e sua configuração. Para facilitar a tarefa de configuração, a criação utiliza janelas do tipo assistente para o preenchimento dos dados relativos à simulação. Em seguida, ocorre a instanciação dos objetos da simulação. Inicialmente são criados os objetos referentes ao hardware do sistema (processadores, memória). Depois são instanciados e configurados os objetos do núcleo do SO simulado: Núcleo, GerenciadorArquivos, GerenciadorMemoria, entre outros. Depois que todos os objetos foram inicializados, a interface principal do projeto de simulação é lançada. Nela é possível manipular os componentes da simulação e acessar as rotinas específicas de cada módulo do SO. O frame de simulação possui cinco subframes, cada um deles pertinente a um módulo do sistema operacional. A Figura 1 exibe o frame principal com os frames de cada módulo: Figura 1. Frame de manutenção da simulação Cada subframe implementa os requisitos pertinentes ao módulo do SO que representa. Todas as operações e atividades executadas no projeto são armazenadas no arquivo de log dos módulos, este arquivo pode ser visualizado através do “Interpretador de log” da ferramenta de simulação. Os frames permitem a visualização dos eventos que acontecem nas classes de regras de negócio da simulação. O frame do escalonador anima os eventos do gerenciador de processos (Figura 2). É formado pelos grupos de processos e suas interconexões com os dispositivos de processamento. Cada tipo de escalonador deve implementar um frame específico para a visualização de seu esquema de gerenciamento Figura 2. Frame do escalonador O usuário visualiza os eventos do gerenciador de memória através de um frame específico que exibe o layout de memória do sistema de simulação mostrando os segmentos alocados para cada processo. Nesta janela é possível alocar espaço para um determinado processo ou liberar uma área de memória previamente alocada. O frame gerenciador de memória encontra-se na Figura 3. Figura 3. Frame do Gerenciador de memória Os dois últimos módulos tratados pelo simulador são: gerenciador de arquivos e dispositivos. A janela do gerenciador de arquivos exibe os sistemas de arquivos presentes no sistema e sua situação atual (montado ou desmontado), ao selecionar um sistema de arquivos, o simulador exibe a árvore de diretórios e o espaço físico ocupado por cada arquivo, permitindo o usuário visualizar os eventos que ocorrem. Por fim, o frame do gerenciador de dispositivos mostra as interações entre as camadas envolvidas na interface SO/hardware permitindo o usuário verificar os logs de cada evento ocorrido. As atividades de persistência da simulação estão divididas em duas operações: gravação e carga do arquivo de simulação. Na gravação, os objetos da simulação são gravados (serializados) em um arquivo binário. A carga consiste em criar uma simulação a partir do arquivo gerado pelo usuário. Desta forma, os objetos são restaurados a partir de uma simulação anterior permitindo ao usuário continuar seu trabalho posteriormente. 5.1. DETALHES DA IMPLEMENTAÇÃO A implementação do simulador foi baseada num projeto que utilizou o processo de desenvolvimento RUP (Rational Unified Process). A análise de requisitos e os artefatos gerados nessa etapa podem ser solicitados diretamente com o autor via mensagem de correio eletrônico. 4CONSIDERAÇÕES FINAIS O aprendizado efetivo da disciplina de sistemas operacionais exige a visualização prática do funcionamento e dos resultados produzidos pelos algoritmos que compõem os sistemas. Desta forma, este artigo apresentou uma alternativa viável para a produção de uma ferramenta de apoio ao ensino que destaca justamente a interatividade entre o conteúdo e o aluno necessária para a efetivação do processo ensino/aprendizagem. O foco principal foi disponibilizar uma aplicação fácil de utilizar simulando todos os módulos de um sistema operacional moderno, permitindo o estudo animado dos algoritmos, facilitando o aprendizado dos alunos. Uma característica interessante do produto final é a possibilidade de extensão. Isso permite a continuidade do projeto e incentiva os estudantes da disciplina a continuar seus estudos na forma de implementações que contribuam para a utilização futura do protótipo. Conclui-se, desta forma, que a produção da ferramenta de apoio ao ensino de sistemas operacionais é totalmente viável e possui grande campo de aplicação nos cursos de graduação. REFERÊNCIAS BANKS, Jerry. Handbook of simulation. Atlanta: EMP Books, 1998. BEN-ARI, Moderchai. Construtivism in computer science education. ACM SIGCSE Bulletin. 1998. JONES, Andrew; NEWMAN, David. A construtivism-based tool for operating systems education. Central Queensland University. 2002a. JONES, Andrew; NEWMAN, David. RCOS.java: A Simulated Operating System with Animations. CLIBS’01. 2002b. MACHADO, F.B.; MAIA, L.P. Um Framework Construtivista no Aprendizado de Sistemas Operacionais - Uma Proposta Pedagógica com o uso do Simulador SOSim. In: XII Workshop de Educação em Computação (WEI), XXIV Congresso da Sociedade Brasileira de Computação (SBC), 2004, Salvador. MAIA, Luiz Paulo. A simulator supporting lectures on operating systems. ASEE/IEEE Frontiers in Education Conference. 2003. NARTEN, Thomas. A Road Map Through Nachos. Disponível por www em www.cs.duke.edu(20,04,2005). SASTRE, G. Por que o construtivismo. In: Sapere Audare. Disponível por www em www.cs.duke.edu (14, 08, 2002). TANENBAUM, Andrew S. Sistemas operacionais modernos. Tradução Ronaldo A. L. Gonçalves, Luís A. Consularo; 2. ed. São Paulo : Prentice Hall, 2003.
Documentos relacionados
Simulador Web de Algoritmos para Escalonamento de Processos
de recursos baseados nas teorias construtivistas de Piaget (1932), segundo as quais
mestre e aluno devem ter uma relação interativa no processo ensino-aprendizagem. É
possível descrever algumas ten...
Simulador para a Prática de Sistemas Operacionais
apenas os processos que estão na fila de “Prontos” podem ser executados. Ainda
dependendo da política de escalonamento escolhida, um processo pode ser interrompido
durante sua execução para que ou...
Um framework construtivista no aprendizado de Sistemas
Os trabalhos envolvendo alteração do código fonte de um sistema operacional podem
utilizar dois tipos de ambientes: sistemas reais de código aberto e sistemas educacionais.
Os sistemas operacionais...