Simulador para a Prática de Sistemas Operacionais
Denise Schimitz de Carvalho, Glauber da Rocha Balthazar, Carlos Rodrigo Dias,
Marco Antônio Pereira Araújo, Paulo Henrique Rezende Monteiro
Bacharelado em Sistemas de Informação – Faculdade Metodista Granbery (FMG)
Rua Batista de Oliveira, 1145 - 36010-532 - Juiz de Fora – MG
{dcarvalho,gbalthazar}@si.granbery.edu.br,
{crdias,maraujo,phrmonte}@granbery.edu.br
Resumo. Nesse artigo é apresentado o trabalho de pesquisa que vem sendo realizado
com o objetivo de desenvolver uma ferramenta de apoio para o ensino e aprendizagem
da disciplina Sistemas Operacionais de cursos de graduação nas diferentes áreas da
Computação. Esta ferramenta trata-se de um simulador das principais funcionalidades
de um sistema operacional e permitirá uma interação com o usuário/aluno de forma a
facilitar a assimilação dos conceitos ensinados na disciplina.
Palavras-chave: Sistemas Operacionais, Simulador, Aprendizado, S²O.
Abstract. This paper presents the research that has been done in order to develop a tool
to be used in the process of teaching and learning Operating Systems classes in
graduation courses of different areas in Computer Science. This tool is a simulator of
the operating system main functions, and it will allow an interaction with the
user/student that will make the assimilation of the concepts taught in class easier.
Keywords: Operational Systems, Simulator, Learning, S²O.
1. Introdução
O presente artigo tem como objetivo apresentar o desenvolvimento do S²O
(CARVALHO et al. 2006), um software para auxílio no aprendizado da disciplina
Sistemas Operacionais. A motivação para o desenvolvimento do software surgiu a partir
da constatação da necessidade de agregar aspectos práticos à disciplina do Curso de
Sistemas de Informação, o que pode ser realizado através da utilização pelos alunos de
um software simulador das principais funções implementadas em um Sistema
Operacional (SO).
A partir da realização de um estudo preliminar, não foi encontrado nenhum
simulador de sistemas operacionais que possuísse funcionalidades como a exibição
gráfica e gradual de Gerência dos Processos por diferentes políticas de escalonamento,
importantes no processo de aprendizagem do funcionamento de um sistema operacional.
O S²O (Simulador de Sistemas Operacionais) está sendo desenvolvido para que estas
funcionalidades possam estar disponíveis de acordo com as necessidades do professor
responsável pela disciplina, alinhada às necessidades dos alunos. Para que o S²O possa
ser utilizado como suporte no contexto da aprendizagem da disciplina, está sendo
desenvolvido tendo em vista sua aplicabilidade através do modelo pedagógico
construtivista.
A disciplina de Sistemas Operacionais, normalmente presente nas grades
curriculares de cursos de Bacharelado em Sistemas de Informação, é uma disciplina em
que são abordados tópicos referentes às principais funcionalidades encontradas em um
Sistema Operacional. Um SO pode ser considerado, de uma forma geral, como sendo
um conjunto de módulos de software que trabalham de forma integrada, com o objetivo
de permitir o funcionamento dos diversos componentes de um computador e a sua
interação com o usuário.
Os temas normalmente tratados na disciplina Sistemas Operacionais são:
gerência de processos, que corresponde ao controle dos programas em execução no
computador, bem como os aspectos relevantes sobre a concorrência de processos que
compartilham recursos; gerência de memória, que diz respeito às possíveis formas de
controle da alocação dos processos na memória principal do computador; sistemas de
arquivos, quando são consideradas as diferentes possíveis estruturas mantidas na
memória secundária do computador para o armazenamento e controle de arquivos
(SILBERSCHATZ, GALVIN e GAGNE, 2000).
Apesar da disciplina Sistemas Operacionais possuir um apelo prático, tendo
em vista que os conceitos são todos aplicáveis em sistemas operacionais reais, ela é
essencialmente teórica, com a exposição dos muitos conceitos envolvidos e algoritmos
existentes. Dessa forma, seu conteúdo muitas vezes não é absorvido adequadamente.
Com o objetivo de enfrentar esta questão, a do distanciamento ou dicotomia entre teoria
e prática, o S²O simula o comportamento de um sistema operacional no que tange à
gerência dos processos.
No contexto do Curso de Sistemas de Informação, a implementação do S²O
possui uma perspectiva pedagógica que aborda a utilização dos conceitos ministrados
em diferentes disciplinas como Algoritmos, Estruturas de Dados, Análise e
Programação Orientada a Objetos, Arquitetura e Organização de Computadores,
Linguagem de Programação e a própria disciplina de Sistemas Operacionais. Esta
interdisciplinaridade é estendida na medida em que o projeto pretende utilizar, como um
dos pilares de suporte, as propostas pedagógicas de educação que levem em
consideração ao exposto anteriormente. Neste sentido, as reflexões e escritos de
pensadores como Jean Piaget, Vygotsky, Emília Ferreiro e Paulo Freire são
significativas.
Desta forma, nesse artigo é apresentado o S²O na sua atual fase de
desenvolvimento. Inicialmente, na Seção 2, é apresentada uma conceituação do
simulador S²O, indicando seus objetivos e como ele se enquadra neste contexto teórico.
Na Seção 3, é apresentado seu processo de desenvolvimento. Em seguida, na Seção 4, é
apresentado detalhadamente o funcionamento do simulador com a intenção de mostrar
as funcionalidades já implementadas. Finalmente, na Seção 5 é destacado o que será
implementado nas próximas etapas de desenvolvimento do S²O, sempre com o foco em
construir um software que agregue conhecimento e promova os alunos da disciplina
Sistemas Operacionais a participarem de forma mais ativa no seu processo
ensino/aprendizagem.
2. Conceituação
Especificamente sobre o processo de aprendizagem ou de entendimento
sobre o sistema operacional de uma máquina de computação, aquele que pretende
ensinar deve se fazer algumas perguntas antes de começar a discursar como as coisas
acontecem no processamento de um problema, por parte de um sistema operacional.
Quais são as informações que este alguém que quer aprender deverá ter para entender
um sistema operacional? A detenção mnemônica, por parte de quem aprende, de alguns
dados é o suficiente para a aprendizagem? É assim que acontece a aprendizagem?
Primeiro se memoriza algumas informações e depois, por um processo mágico — que
não se tem a menor idéia de como se dá — o aprendiz vai articulando as coisas e
aprende? (FREIRE, 1977).
A idéia que fundamenta a proposta pedagógica deste projeto é a de que o
processo de aprendizagem de algo por alguém, quer seja autonomamente ou com
auxílio de outra pessoa, guarda relação direta com o grau de consciência — por parte de
quem quer ensinar e também de quem quer aprender — do processo de aprendizagem.
Ninguém aprende se não tem consciência de que conhecer é empreender a inteligência
no entendimento de uma determinada questão/problema. Neste sentido, o(a) estudante
de sistemas operacionais precisa ter consciência das questões/problemas que um sistema
operacional pretende dar conta. Em outras palavras, é necessário saber quais são as
questões/problemas que se pretende responder com um sistema operacional. Mas não é
só isso. É necessário que o(a) aprendiz seja convidado(a) a resolver alguns problemas
típicos de um sistema operacional. E ainda, é necessário que o(a) aprendiz acompanhe
os “movimentos” da solução de um problema por um sistema operacional. O que ora é
proposto é uma ferramenta que auxilie o(a) aprendiz neste sentido.
3. Construção do S²O
Dentro da perspectiva apresentada na Seção 2, está sendo desenvolvido o
S²O para atender à funcionalidade de gerência do processador, baseado no paradigma da
orientação a objetos. O processo de desenvolvimento segue uma abordagem clássica de
desenvolvimento de software através das etapas de Levantamento de Requisitos,
Análise, Projeto, Codificação e Testes, apoiadas pelos diagramas propostos pela UML
(Unified Modeling Language) (BOOCH, RUMBAUGH e JACOBSON, 2000).
Como resultado da etapa de Levantamento de Requisitos, os principais
requisitos foram identificados como sendo:
permitir a simulação de processos definidos pelo usuário;
adicionar processos antes e durante a execução da simulação;
permitir a persistência e recuperação destes processos em disco através
de arquivos XML;
manter os processos organizados em filas (processos, executando,
prontos e terminados);
aumentar e diminuir a velocidade da simulação;
permitir ao usuário informar o número de processadores a serem
utilizados na simulação;
permitir a visualização da alteração dos estados dos processos entre as
filas de execução;
escolher a política de escalonamento a ser utilizada;
possibilitar que o usuário possa executar a simulação através de uma
política personalizada, na qual ele faça o papel de escalonador de
processos; e
exibir estatísticas da execução dos processos, como tempo médio de
turnaround e tempo da espera dos processos.
Ainda nesta etapa do processo de desenvolvimento, os requisitos
identificados foram detalhados, servindo de base para a etapa seguinte de Análise, onde
estes requisitos são expressos em termos de diagramas que retratam o problema em
questão, numa visão conceitual. Neste contexto, o Diagrama de Classes da Figura 1
apresenta o modelo do S²O.
Figura 1. Diagrama de Classes do Simulador de Sistema Operacional
A etapa de Projeto refere-se à transformação dos modelos conceituais em
especificações que possam ser implementadas, ou seja, representam o problema em uma
visão computacional. Nesta etapa, além de refinar os diagramas criados na etapa
anterior, é definida a plataforma a ser utilizada no desenvolvimento do produto. Uma
diretriz para este projeto é que o desenvolvimento seja baseado em software livre e,
considerando um desenvolvimento orientado a objetos, foi escolhida a linguagem Java
(DEITEL e DEITEL, 2002) para a construção do S²O.
Desta forma, considerando a etapa de Codificação, o protótipo do S²O foi
construído e sua tela principal é mostrada na Figura 2. A utilização do protótipo será
explicada na Seção 4.
Figura 2. Tela principal do simulador
A etapa de Testes permite a verificação do correto funcionamento do
simulador, através do planejamento e execução de casos de teste previamente definidos,
através de uma ferramenta que auxilie, de forma efetiva, a realização desta etapa, como
por exemplo a ferramenta JUnit.
No atual estágio de implementação, o S²O disponibiliza as políticas de
escalonamento FCFS, Prioridade não preemptivo, SJF não preemptivo, Prioridade
Preemptivo, Prioridade não Preemptivo, Round Robin e Personalizada, utilizadas para
gerenciar a execução dos processos definidos pelo usuário. Além disso, o S²O permite
ao usuário adicionar processos em tempo de execução e manipular a velocidade da
simulação.
4. Funcionamento do S²O
Com o desenvolvimento da primeira versão do S²O, através do processo
descrito na Seção 3 e com as principais funcionalidades já implementadas, é
apresentada nessa seção uma descrição detalhada do funcionamento do simulador.
Na tela principal do S²O, apresentada na Figura 2, estão presentes as filas
que correspondem aos estados que um processo pode assumir durante a sua
permanência no sistema de computação: “Pronto”, “Executando” e “Terminado”.
Segundo Silberschatz, Galvin e Gagne (2000), a utilização destas filas é necessária para
a gerência da utilização do processador. Na tela principal do S²O há também a fila
“Processos”, na qual são inseridos os processos que irão entrar no sistema. As
informações relativas a cada processo, presentes nas filas, são:
• PID (Process Identifier): um número inteiro utilizado como identificador
do processo;
• Nome: um nome que pode ser atribuído ao processo;
• Prioridade: valor inteiro que indica a prioridade de execução do
processo, para o qual, quanto menor o valor, maior a prioridade do
processo. Este atributo é relevante apenas para as políticas de
escalonamento “Prioridade Preemptivo” e “Prioridade Não-Preemptivo”;
• T. Cheg.: tempo de chegada é um valor inteiro, em milisegundos, que
indicará em qual momento o processo deverá entrar no sistema, quando
será inserido na fila de prontos e estará apto a utilizar o processador – o
estado “Executando”. Este momento de chegada corresponde ao número
de ciclos da CPU decorridos desde o início da execução do escalonador;
• Ciclos: corresponde ao número de ciclos que o processo irá utilizar na
CPU, ou seja, o tempo que ficará no estado “Executando”. Dependendo
do algoritmo utilizado, um processo pode utilizar os ciclos de CPU de
forma não contínua no tempo;
• T. Saída: o tempo de saída é um valor inteiro, também em milisegundos,
que será obtido apenas quando o processo tiver terminado a sua execução
por completo, correspondendo ao valor do contador do ciclo do
processador no momento em que isto ocorreu.
• Ciclo Rest.: corresponde ao número de ciclos de CPU que o processo
ainda necessita para executar. Assim que o processo entra no sistema este
valor é igual ao valor do atributo “Ciclos”, e vai reduzindo o seu valor
enquanto está executando na CPU, até alcançar o valor 0 (zero), quando
o processo termina a sua execução.
Antes de iniciar uma simulação, é necessária a criação de processos,
informando seus atributos e inserindo-os na fila de processos. Para isto, na tela
principal, deve-se clicar no botão “Adicionar” e informar as características de cada
processo na caixa de diálogo apresentada, conforme Figura 3.
Figura 3. A inserção de processos no simulador.
Ao término da inserção de todos os processos, a fila de Processos estará
preenchida como exemplificado na Figura 4, permitindo que as demais configurações
possam ser definidas.
Figura 4: Exemplo de fila de Processos preenchida com processos para a execução da simulação
Após o preenchimento da fila de processos, deve-se escolher a Política de
Escalonamento a ser utilizada pela simulação. Para isto, deve ser utilizada a Lista de
Políticas, disponível na barra de ferramentas do S²O, conforme a Figura 5.
Figura 5: Políticas de Escalonamento
Na barra de ferramentas, ao lado da caixa de listagem referente à política de
escalonamento, está a caixa de texto “Nº de Processadores”, na qual pode-se informar a
quantidade de processadores que serão utilizados na simulação, bastando que apenas
seja digitado um número inteiro maior que zero. O número de processadores
determinará quantos processos poderão executar paralelamente, ou seja, ficarem
simultaneamente na fila “Executando”.
A simulação do S²O segue uma velocidade de execução pré-determinada,
podendo-se acelerar a execução do escalonador de processos ou retardá-lo. Isto permite
uma execução lenta ou rápida, de acordo com a quantidade de ciclos da CPU por
unidade de tempo, informados na caixa “Ciclos de CPU”. Por padrão, é adotado no S²O
uma velocidade mediana, mas que pode ser alterada de acordo com a necessidade para
ser mais rápida, com mil ciclos por unidade de tempo, ou mais lenta, com cem ciclos
por unidade de tempo.
O S²O permite também que a configuração dos processos definidos em uma
simulação possa ser persistida em disco através de um arquivo XML, sendo reutilizada
em outro momento. Para isso, deve-se abrir o menu Opções e escolher o item “Gravar
Fila de Processos”, como mostrado na Figura 6.
Figura 6: Persistindo a simulação em disco através de arquivos XML
Na caixa de diálogo que é exibida, deve-se fornecer um nome para a
simulação e um diretório para o armazenamento. Ao final deste procedimento a
simulação estará armazenada em disco e o layout do arquivo será como do exemplo
exibido na Figura 7. Caso exista um arquivo criado anteriormente com informações
sobre processos, este pode ser carregado para a realização de uma nova simulação.
Após a realização das configurações do simulador, pode-se iniciar uma
simulação pressionando o botão “Iniciar” na parte inferior da tela principal. Durante a
execução de uma simulação pode-se também pausar a simulação e em seguida
continuar, através do botão “Pausar”, ou interromper definitivamente uma execução,
através do botão “Terminar”. No canto inferior direito da tela principal é apresentado o
contador da CPU, que indica o total de ciclos de CPU decorridos desde o início da
execução do escalonador.
Figura 7: Arquivo XML gerado a partir de uma configuração de simulação
Durante a execução do simulador, os processos passam da fila de
“Processos” para a fila de “Prontos” conforme o tempo de chegada. A partir daí,
dependendo da política de escalonamento selecionada, os processos são selecionados
para execução, migrando da fila de “Prontos” para “Executando”. Vale ressaltar que
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 outro processo de maior prioridade ou com menos ciclos
execute na CPU, o que é chamado de preempção. Na preempção, o processo
interrompido durante a execução retorna para a fila de prontos e aguarda nova chance
para executar. Quando um processo conseguir terminar de executar todos os seus ciclos
de CPU, ele é encerrado e migra da fila “Executando” para a fila “Terminados”.
Como exemplo da execução de uma simulação no S²O, será utilizada a
política de escalonamento “Personalizada”, que permite que o usuário/aluno faça o
papel do escalonador de processos. Nesta política, a cada interrupção gerada pelo
sistema o usuário/aluno deverá tomar decisão sobre qual o processo que deverá ser
escalonado para execução. Neste exemplo, o número de ciclos por unidade de tempo
para a execução da simulação será configurado como 900 ciclos e apenas um
processador estará disponível para a simulação. Para este exemplo será utilizada a fila
de processos apresentada na Figura 4.
Após carregar a fila de processos, para dar início à execução da simulação,
deve-se clicar no botão “Iniciar”, na parte inferior da janela. Assim que a simulação é
iniciada, perguntas são feitas de acordo com a chegada de novos processos. Na Figura 8
o simulador está em 2 ciclos de CPU e neste momento o processo “proc1” (com PID =
3) chegará à fila de prontos, conforme indicado na fila de processos. Assim, é
questionado sobre o que o simulador deverá fazer, se o processo proc1 deverá ser
executado ou não.
Figura 8: Pergunta sobre a execução de um processo
Como dito anteriormente, é possível, durante a execução da simulação,
clicar no botão “Pausar”. Isto permite que possa ser feita uma troca de processos entre
filas, ou seja, assim que o botão “Pausar” for acionado é disponibilizada a opção de
realizar uma troca entre um processo que está sendo executado por outro que se
encontre na fila de Prontos. Um exemplo desta situação é apresentado na Figura 9, na
qual, caso seja escolhida a opção “sim”, será apresentada uma caixa de diálogo
solicitando que seja informado o processo que será movido da fila de “Prontos” para a
fila “Executando”, devendo ser fornecido, para isto, o identificador dos processos
(PID), como mostrado na Figura 10. Caso o simulador tenha sido configurado com mais
de um processador e, assim, mais de um processo esteja na fila “Executando”, é
solicitado também o PID do processo que deverá deixar a fila “Executando” e ir para a
fila de “Prontos”.
Figura 9: Troca de processo que está em execução por outro existente na Fila de Prontos
Figura 10: Seleção do Processo a ser movido entre as Filas de Execução e de Prontos
Após o término da troca de processos entre as filas, deve-se clicar no botão
“Continuar”, que substituiu o botão “Pausar”, para dar prosseguimento à simulação.
Ainda na política de escalonamento “Personalizada”, quando o simulador
conclui a execução de um processo, questiona sobre qual processo será executado, ou
seja movido da fila de “Prontos” para “Executando”, solicitando para isto o PID do
processo, conforme Figura 11.
Figura 11: Seleção do Processo a ser movido da Fila de Execução para a Fila de Prontos
Quando a execução da simulação é concluída, os processos estarão todos
alocados na Fila de Terminados e será permitido executar uma nova simulação bastando
para isso, clicar no botão “Terminar” e logo em seguida no botão “Nova Simulação”.
O
exemplo
“Personalizada”.
apresentado
Entretanto,
pode-se
referiu-se
escolher
à
política
qualquer
de
uma
escalonamento
das
políticas
implementadas no simulador e apresentadas na Figura 5. Dependendo da política
escolhida, o simulador irá selecionar de forma automática determinados processos para
migrarem entre as filas de “Prontos” e “Executando”. A solicitação ao usuário sobre os
processos que devem migrar entre filas ocorre apenas na política “Personalizada”.
5. Considerações Finais
Neste artigo foi apresentado o S²O, uma ferramenta para auxílio ao ensino
da disciplina Sistemas Operacionais. A pesquisa para o desenvolvimento deste
simulador pretende utilizar, como um dos pilares de suporte, as propostas pedagógicas
de educação que permitem reduzir a distância entre teoria e prática no ensino da
disciplina, facilitando o aprendizado do conteúdo lecionado, além de melhor
aprendizado da disciplina através da aplicação prática. Para que este objetivo seja
alcançado, é simulada a gerência de execução dos processos da forma como é realizada
pelo sistema operacional, permitindo também que o usuário/aluno realize uma gerência
personalizada.
Na continuidade desse trabalho serão implementadas outras funcionalidades
presentes em um sistema operacional, como gerência de memória, sistemas de arquivos
e escalonamento de disco, sempre mantendo a preocupação com o aprendizado dos
conceitos relacionados e, no segundo semestre de 2006, o S²O será utilizado
experimentalmente nas aulas de Sistemas Operacionais, a fim de verificar se os
objetivos serão alcançados através de sua utilização.
Agradecimentos
Os autores reconhecem o apoio dado pela Faculdade Metodista Granbery ao
projeto de pesquisa "Simulador para Suporte ao Aprendizado de Sistemas
Operacionais", ao qual este trabalho está vinculado.
Referências Bibliográficas
BOOCH, G.; RUMBAUGH, J.; JACOBSON, I. UML - Guia do Usuário. Rio de
Janeiro: Editora Campus, 2000.
CARVALHO, D. S.; BALTHAZAR, G. R.; DIAS, C. R.; ARAÚJO, M. A. P.;
MONTEIRO, P. H. R.. S²O: Uma Ferramenta de Apoio ao Aprendizado de Sistemas
Operacionais. Anais do XIV Workshop sobre Educação em Computação, Campo
Grande/MS, 2006.
DEITEL, H. M.; DEITEL, P. J. Java: Como Programar. 4ª ed. Porto Alegre: Editora
Bookman, 2002.
FREIRE, P. Extensão ou comunicação?, O Mundo Hoje. v. 24, 10ª ed. Rio de Janeiro:
Editora Paz e Terra, 1977.
SILBERSCHATZ, A.; GALVIN, P.; GAGNE, G. Sistemas Operacionais: Conceitos e
Aplicações. Rio de Janeiro: Editora Campus, 2000.
Download

Simulador para a Prática de Sistemas Operacionais