ESTUDO DO AMBIENTE LINUX NO AUXÍLIO DO PROCESSO APRENDIZAGEM DA DISCIPLINA DE SISTEMAS OPERACIONAIS DE ENSINO Diego Vieira; Silvana Madeira Alves Dal-Bó (Orientadora). Introdução: Atualmente, a grande maioria das bibliografias na área de Sistemas Operacionais traz exemplos relacionados ao sistema operacional Linux para alguns dos conceitos estudados. A proposta deste trabalho de pesquisa é fazer um estudo do ambiente Linux e aplicativos, como simuladores, que possam ser utilizados no processo de ensino aprendizagem da disciplina de sistemas operacionais nos cursos de graduação. Nesse estudo é possível encontrar uma série de softwares, arquivos e simuladores separados de acordo com o conteúdo da disciplina que cada um dos mesmos têm relação. O conteúdo pesquisado é separado em diversos itens desde visão geral do Linux, passando por concorrência, estrutura do sistema operacional, processos e threads, sincronização e comunicação entre processos e finalizando com gerência de recursos. Objetivos: a) Instalar o sistema operacional Linux em um computador destinado a pesquisa. b) Identificar os conceitos de sistemas operacionais que podem ser utilizados no ambiente Linux. c) Buscar em fontes de pesquisa os recursos (sistema operacional e aplicativos) que possam ser utilizados na disciplina. c) Instalar os aplicativos pesquisados. Palavras-chave: Linux, sistema operacional, simuladores Métodos A pesquisa foi realizada a partir da busca de softwares, arquivos e simuladores em diversos meios como por exemplo: man pages do Linux, livros, buscas na web de forma geral, sendo que, antes da busca foi necessário a leitura de cada um dos temas que a disciplina de Sistemas Operacionais aborda e a partir desse momento foi realizada a pesquisa dos softwares, arquivos e simuladores. Vários softwares e arquivos são integrantes da distribuição Linux utilizada para a pesquisa, não sendo assim necessário a sua instalação, sendo necessário a leitura de manuais para utilizar os softwares e conhecer o objetivos dos arquivos. Os simuladores utilizados no geral não necessitaram ser instalados sendo necessário a leitura de manuais para sua utilização. Após isso foram pesquisados outros métodos de se utilizar o Sistema Operacional Linux durante as aulas de Sistemas Operacionais como por exemplo o uso de aplicativos Windows através do uso do Wine e o uso de Linguagem de programação C. Resultados de discussão A pesquisa foi realizada a partir da busca de softwares, arquivos e simuladores em diversos meios como por exemplo: man pages do Linux, livros, buscas na web de forma geral, sendo que, antes da busca foi necessário a leitura de cada um dos temas que a disciplina de Sistemas Operacionais aborda e a partir desse momento foi realizada a pesquisa dos softwares, arquivos e simuladores. Os comandos, arquivos, códigos fonte e simuladores podem ser divididos em três grupos, sendo os comandos e arquivos parte do grupo um, os simuladores parte do grupo dois e os códigos fonte parte do grupo três. 1 - Comandos e arquivos Os comandos e arquivos pesquisados no geral apenas ilustram o conteúdo, o seu uso na disciplina é útil apenas como complemento a teoria não tendo grande influência nos conteúdos expostos. Informação do hardware no Linux Os comandos lspci -tv, lsusb -tv e a leitura dos arquivos proc/cpuinfo, /proc/meminfo através do comando less. Os comandos e arquivos são utilizados para obter informação específica sobre o hardware no qual o sistema operacional esta sendo executado, sendo que, o uso dos comandos e arquivos tem a utilidade de ilustrar formas de se obter essas informações no sistema operacional e mostrar de que forma o sistema operacional guarda essas informações. Concorrência O Comando vmstat é utilizado para se obter varias informações sobre os processos, sendo que resultado exposto pelo comando é de fácil compreensão e os parâmetros que podem ser utilizados para visualizar os resultados de acordo com o que necessário pode ser consultados através do comando man vmstat. É possível a criação de vários cenários para testar o comportamento do sistema operacional e utilizar o vmstat como uma forma de demonstrar esse comportamento. Interrupções A leitura dos arquivos /proc/dma e /proc/interrupts através do comando more. É utilizado para obter informações especificas sobre as interrupções ocorridas no sistema operacional, servindo apenas para ilustrar o conteúdo da disciplina. O comando vmstat descrito anteriormente pode ser utilizado para verificar as interrupções que estão ocorrendo. Linguagem de Controle O comando echo $SHELL, o uso da tecla TAB e o uso do comando man, são utilizados ilustrar o funcionamento da linguagem de controle no sistema operacional. Ativação / Desativação do Sistema A leitura do arquivo /boot/grub/grub.conf através do comando less, possibilita a visualização das configurações de ativação do sistema através do boot loader grub, a leitura do arquivo é utilizada apenas para ilustrar as configurações de um boot loader e não todo o processo de ativação do sistema. Estrutura do Processo A estrutura de diretórios abaixo de /proc/[pid]/, contém varias informações bastante úteis sobre o funcionamento dos processos, pois, representa o bloco de controle de processos em forma de estrutura de pasta e arquivos. Sendo que essa estrutura esta presente em qualquer distribuição Linux. O comando ps –l permite a visualizar varias informações que fazem parte do contexto de software. Estado do processo O comando ps aux | less exibe uma lista de processos em execução e várias informações sobre esses processos, é interessante a leitura do manual do comando ps para se entender seu funcionamento. O comando pstree | more demonstra a hierarquia dos processos, é útil para demonstrar o conceito de processos pai e filho. Processos Foreground e Background O uso do parâmetro & (abrir em background), o comando jobs (listar comandos em background), o comando fg (passar programa do background para o foreground) e o uso do ^z (ctrl+z) ou bg (passa programa do foreground para o background), é útil para visualizar na prática o funcionamento do conceito de background e de foreground. Threads O diretório /proc/[pid]/task/ serve apenas para ilustrar a estrutura de threads de um processo. System Call Através do comando strace <comando> é possível visualizar (depurar) toda a execução de um programa, possibilitando assim a visualização das chamadas de sistema utilizadas pelo comando, sendo que o uso do comando tem apenas o intuito de ilustrar o uso das chamadas de sistemas pelo sistema operacional. Semáforos O comando ipcs -la é utilizado para visualizar informações sobre os semáforos, são apenas informações básicas, para ilustrar o assunto. Troca de Mensagens O uso do pipe (|), e dos redirecionamentos (>, >>, <), é uma forma de ilustrar a troca de mensagens entre processos. Sistemas de arquivos O comando ls -i lista os arquivos e exibe o índice, já o comando ls –l lista os arquivos e exibe várias informações sobre o arquivo, como por exemplo as permissões de acesso essas permissões podem ser alteradas através dos comandos chmod, chown e chgroup. O comando tree exibe os diretórios em forma de hierárquica (árvore). Através dos comandos é possível verificar informações dos arquivos e ilustrar o conteúdo sobre sistemas de arquivos. ACL Para o uso de ACL’s no linux é necessário a instalação através do comando yum install acl e edição do arquivo /etc/fstab, através dos comandos getfacl e setfacl é possível o uso das ACL’s sendo seu uso fácil e um uso prático do conteúdo visto na disciplina. Gerência de Dispositivos Através do diretório /dev é possível ilustrar como o Linux representa os dispositivos físicos. 2 - Simuladores Gerência do Processador O uso do Process Scheduling Simulator permite simular vários tipos de escalonamentos através de experimentos configurados em arquivos, inicialmente é interessante o uso de experimentos já prontos, dependendo dos alunos é possível a criação e análise de novos experimentos, para o uso do simulador é necessário conhecimento da teoria e o aprendizado do funcionamento do simulador.. Gerência de Memória virtual O uso do simulador de memória virtual (Virtual Memory Simulator) permite simular o gerenciamento de memória virtual por paginação. O simulador não possui manual e arquivos de configuração, sendo necessário o conhecimento do conteúdo teórico para sua utilização. Gerência de I/O O simulador Concurrent UNIX IO Simulator permite simular a gerência de I/O através do uso de demonstração do espaço de usuário, sistema e disco, sendo que, o mesmo possui manual em inglês e possui vários experimentos prontos, é necessário conhecimento teórico para o uso do mesmo. Simulador SOSIM rodando através do WINE Através do programa WINE é possível o uso de simuladores desenvolvidos para o Windows, para rodar o SOSIM é necessário apenas instalar do WINE sem nenhuma modificação do mesmo, não sendo necessário nenhum conhecimento aprofundado, o simulador SOSIM é em português e possui lista de exercícios em português, sendo assim, de fácil uso. 3 - Linguagem de Programação C O uso de códigos fonte (linguagem de programação C) permite um melhor conhecimento sobre as chamadas de sistema e sinais entre outros aspectos do sistema operacional, sendo necessário um bom conhecimento sobre programação em C para criação dos códigos fonte e um conhecimento básico com uma boa explicação para compreensão dos mesmos. Conclusões: Através desse estudo pode se constatar que o ambiente Linux oferece vários softwares e arquivos nativos onde é possível visualizar como o sistema operacional funciona. O estudo apresenta diversos comandos e ferramentas que auxiliam no processo de ensino e aprendizagem da disciplina de Sistemas Operacionais. Foram demonstrados comandos para os seguintes conteúdos: a estrutura do sistema operacional, informações de hardware, concorrência, interrupções, processos e sistemas de arquivos. A sincronização e comunicação entre processos foram vistas através de comandos de troca de mensagens e semáforos. A gerência de recursos foi demonstrada através do uso de simuladores (Process Scheduling Simulator (gerência do processador), Virtual Memory Simulator (gerência de memória virtual), Concurrent Unix IO Simulator (gerência de I/O)). Desta forma, nessa pesquisa foi exposto o funcionamento de vários simuladores que podem ser utilizado durante as aulas, bem como a possibilidade de utilizar simuladores desenvolvidos para Microsoft Windows através do uso do WINE, e a possibilidade do uso de linguagem de programação durante as aulas. Os softwares e arquivos pesquisados foram separados de acordo com vários tópicos da disciplina de sistemas operacionais. Referências FEDORA Spin BrOffice. Disponível em: <http://spins.fedoraproject.org/broffice/>. Acesso em: 10 maio 2010. CD-ROM. GRAY, John Shapley. Interprocess Communications in Unix: The Nooks & Crannies. Upper Saddle River: Prentice Hall, 1997. 364 p. JONES, M. Tim. Comando Kernel Utilizando Chamadas do Sistema Linux. Disponível em: <http://www.ibm.com/developerworks/br/library/l-system-calls/>. Acesso em: 15 maio 2010. KERRISK, Michael. The Linux man-pages project. Disponível em: <http://www.kernel.org/doc/man-pages/>. Acesso em: 15 maio 2010. MACHADO, Francis Berenger; MAIA, Luiz Paulo. Arquitetura de Sistemas Operacionais. 4ª Rio de Janeiro: Ltc, 2007. 308 p. MAZIERO, Carlos A.. Acesso a dispositivos. Disponível em: <http://www.ppgia.pucpr.br/~maziero/doku.php/pua:acesso_a_dispositivos>. Acesso em: 02 out. 2010. MAZIERO, Carlos A.. Sistema de arquivos: Descritores e Streams. Disponível em: <http://www.ppgia.pucpr.br/~maziero/doku.php/pua:sistema_de_arquivos>. Acesso em: 02 out. 2010. NEMETH, Evi et al. Manual Completo do Linux: Guia do Administrador. 2ª edição São Paulo: Pearson Prentice Hall, 2007. 684 p. OLIVEIRA, Rômulo Silva de; CARISSIMI, Alexandre da Silva; TOSCANI, Simão Sirineo. Sistemas Operacionais. 4ª Porto Alegre: Bookman, 2010. SHULYUPIN, Constantine. Interactive map of Linux kernel. Disponível em: <http://www.makelinux.net/kernel_map>. Acesso em: 16 maio 2010. SIEVER, Ellen et al. LINUX: O Guia Essencial. Porto Alegre: Bookman, 2006. 851 p. SILBERSCHATZ, Abraham; GALVIN, Peter Baer; GAGNE, Greg. Fundamentos de Sistemas Operacionais. Rio de Janeiro: Ltc, 2004. 580 p. TANENBAUM, Andrew S. Sistemas Operacionais Modernos. São Paulo: Pearson, 2006. 695 p.