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

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...

Leia mais

Simulador para a Prática de Sistemas Operacionais

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...

Leia mais

Um framework construtivista no aprendizado de Sistemas

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...

Leia mais