Você está na página 1de 6

Estudo sobre os tipos de gerenciamento do SO Linux [Artigo]

Page 1 of 6

Estudo sobre os tipos de gerenciamento do SO Linux


Autor: Silas Antnio Cereda da Silva <silas.informatica at gmail.com> Data: 07/12/2007 Introduo Linux um sistema operacional tipo Unix que foi desenvolvido por Linus Torvalds inspirado no sistema Minix, que uma verso simplificada do Unix, e que por fim veio do sistema Multics. O Linux um exemplo de desenvolvimento com cdigo aberto e de software livre. O seu cdigo fonte est disponvel sob licena GPL para qualquer pessoa utilizar, estudar, modificar e distribuir livremente. Um sistema Linux capaz de funcionar em um grande nmero de arquiteturas computacionais. utilizado em supercomputadores, computadores pessoais e at em aparelhos celulares. Nesse artigo discutiremos sobre o Gerenciamento de Memria, Gerenciamento de Processos, Sistema de Arquivos e tambm Gerenciamento de Entrada/Sada do Sistema Operacional Linux com finalidade de obter um aprendizado sobre a estrutura deste sistema operacional.

Gerenciamento de memria no Linux No Linux a memria funciona da seguinte maneira, processos que esto em execuo tm prioridade na memria, quando termina um processo e se tiver espao na memria, ficam resduos desse processo na memria para uma futura volta desse processo ser mais rpida. Caso essa memria RAM esteja lotada com processos que esto em execuo, a comea a utilizao da memria SWAP (troca). (LIMA, 2007) Cada processo do Linux, em uma mquina de 32 bits, dispe de 3GB de espao de endereamento virtual para si prprio, com 1GB restante reservado para suas tabelas de pginas e outros dados do ncleo. O 1GB do ncleo no visvel quando o processo executa no modo usurio, mas torna-se acessvel quando o processo faz uma chamada ao ncleo. O espao de endereamento gerado quando o processo criado e sobrescrito em uma chamada ao sistema exec. O espao de endereamento virtual dividido em reas ou regies organizadas em pginas. Contguas e homogneas. Isso quer dizer que cada rea consiste de uma srie de pginas consecutivas com proteo e propriedades de paginao idnticas. O segmento de cdigo e os arquivos mapeados so exemplos de reas. Pode haver vazios no espao de endereamento virtual entre essas reas. Qualquer referncia memria para um vazio resulta em uma falta de pgina fatal. O tamanho de pgina fixo. O Linux usa um esquema de paginao de trs nveis. Embora tenha sido utilizado no processador Alpha, esse esquema tambm empregado de maneira modificada em todas as arquiteturas. Cada endereo virtual quebrado em at quatros campos. O campo diretrio usado como ndice do diretrio global, sendo que existe um privado para cada processo. O valor encontrado um ponteiro para um dos diretrios intermedirios de pgina, o qual indexado por um campo do

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7539

27/10/2008

Estudo sobre os tipos de gerenciamento do SO Linux [Artigo]

Page 2 of 6

endereo virtual. A entrada selecionada aponta para a tabela de pgina final, a indexada pelo campo pgina do endereo virtual. A entrada encontrada aponta para a pgina requisitada. No Pentium, que usa paginao em dois nveis, cada diretrio intermedirio de pgina tem somente uma entrada, de modo que, efetivamente, a entrada do diretrio global quem escolhe a tabela de pgina a usar. O Linux gerencia a memria usando o algoritmo companheiro, com a adio de um vetor no qual o primeiro elemento a cabea de uma lista de blocos com tamanho de uma unidade, o segundo elemento a cabea de uma lista de blocos com tamanho de duas unidades, o prximo elemento aponta para blocos de quatro unidades e assim por diante. Dessa maneira qualquer bloco de potncia de dois pode ser encontrado rapidamente. Esse algoritmo gera uma considervel fragmentao interna, pois, se voc deseja um bloco de 65 pginas, voc tem de solicitar e obter um bloco de 128 pginas. Para amenizar esse problema, o Linux tem uma segunda alocao de memria que obtm blocos, usando o algoritmo companheiro, e depois os retalha (unidades menores) para gerenciar unidades menores separadamente. Um terceiro alocador de memria tambm utilizado quando a memria solicitada precisa ser contgua somente no espao virtual, mas no na memria fsica. (TANEMBAUM, 2005) Para a proteo existe um gerenciador de memria virtual evitando que processos no modo Kernel e no modo User se misturem.

O sistema de arquivos do Linux por meio de um sistema de arquivos que ocorre a gravao e a recuperao dos dados em um dispositivo de armazenamento em um computador. O sistema de arquivos independente do hardware e da BIOS, sendo especificado pelo software do sistema operacional no momento da instalao do sistema ou na configurao de dispositivos de armazenamento adicionais posteriormente instalao. (AUGUSTO, 2005) O sistema de arquivos do Linux era inicialmente o sistema de arquivos do Minix. Entretanto, por causa do limite de 14 caracteres imposto aos nomes de arquivos e do tamanho mximo de 64 MB para os arquivos, houve prontamente interesse em melhorar o sistema de arquivos. A primeira melhoria foi o sistema de arquivos Ext, que permitiu nome de arquivos de 255 caracteres e arquivos de at 2GB. No entanto ele era mais lento que o sistema de arquivos do Minix motivando assim a continuidade das pesquisas. (TANEMBAUM, 2005) Atualmente so mais de 20 sistemas de arquivos suportados pelo Linux, dentre eles os mais utilizados so o Ext3 e o ReiserFS. O sistema de arquivos Ext3 foi desenvolvido pelo doutor Stephen Tweedie e colaboradores na Red Hat, ele seria um ext2 com recurso de journaling e passou a ser suportado na verso 2.4 do Linux. No ext3 o journal usa uma camada chamada JDB (Journaling Block Device), que utiliza um mtodo diferente na recuperao de dados, ao invs de armazenar bytes que devem ser gravados, ele armazena blocos modificados do sistema de arquivos na memria para poder rastrear as operaes que ficaram pendentes, a vantagem que ele no precisa lidar com a complexidade de gravar bytes no journal e a desvantagem que o journal acaba ficando maior (SILVA, 2004). O sistema de arquivos ReiserFS foi criado por Hans Reiser especialmente para o Linux, atualmente

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7539

27/10/2008

Estudo sobre os tipos de gerenciamento do SO Linux [Artigo]

Page 3 of 6

ela patrocinada pela SuSE e mantida pela empresa NameSys (sendo o filesystem padro das distribuies GNU/Linux da SuSE), o ReiserFS no utiliza blocos de tamanho fixo, mas ajusta o tamanho de acordo com o arquivo, ele e muito rpido ao ler arquivos menores. O ReiserFS possui suporte a arquivos maiores que 2GB, o acesso a rvore de diretrios mais rpido que o ext3, utiliza uma eficiente estrutura de dados chamada "balanced tree" ou rvore equilibrada pois, trata toda a partio como se fosse uma nica tabela de banco de dados contendo diretrios, arquivos e arquivos de meta-data, isso aumenta o desempenho de aplicativos que trabalham com arquivos pequenos (so lidos em apenas um E/S do HD), em um sistema de arquivo como ext2 o espao no disco e alocado em blocos que variam de 512 a 4096 bytes ou at maior, se o arquivo exceder um mltiplo exato do tamanho do bloco ocorrer desperdcio de espao no disco o ReiserFS no aloca em espaos fixos ou blocos ele aloca o tamanho exato que o arquivo precisa. O ReiserFS infelizmente no trabalha perfeitamente com o sistema de arquivos de rede NFS (Network File System), existem alguns patches para resolver o problema, mas eles no o resolvem completamente. (SILVA, 2004)

Gerenciamento de E/S A gerncia de entrada e sada no Linux implementada atravs de device drivers, um device para cada dispositivo. Os device drivers so acoplados ao sistema operacional quando o kernel gerado. Sempre que um novo dispositivo acrescentado ao sistema, o driver correspondente deve ser acoplado ao ncleo. O acesso a dispositivos na forma de arquivos especiais. No Linux, todas as operaes de E/S so realizadas como uma seqncia de bytes, no existindo o conceito de registro ou mtodos de acesso. Dessa forma, as system calls de E/S podem manipular qualquer tipo de dispositivo de forma uniforme. Os arquivos especiais podem ser acessados da mesma forma que qualquer outro arquivo, utilizando simplesmente as system calls de leitura e gravao. O Linux trabalha com dois tipos de operaes de entrada e sada: uma orientada a blocos e outra orientada a caracter. As operaes orientadas a bloco esto geralmente associadas a dispositivos com altas taxas de transferncia, como discos, e tm o objetivo de minimizar o nmero de transferncias entre o dispositivo e a memria, utilizando buffer caches (vide figura a seguir). Por exemplo, quando uma operao de leitura a disco realizada, um bloco transferido para a memria e, posteriormente, processado. Programa Sistema de Arquivo Buffer cach device driver Disco Dispositivos orientados a caracteres esto associados normalmente a dispositivos lentos, como terminais, onde a taxa de transferncia entre o dispositivo e a memria realizada caracter caracter.

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7539

27/10/2008

Estudo sobre os tipos de gerenciamento do SO Linux [Artigo]

Page 4 of 6

Redirecionamento de entrada e sada


O usurio pode, atravs do redirecionamento de E/S, redefinir de onde um comando ou programa receber sua entrada e para onde enviar sua sada. A entrada de um comando so os dados sobre os quais o comando ir operar. Estes dados podem vir de um arquivo especificado pelo usurio, de um arquivo de sistema, do terminal ou da sada de outro comando. A sada de um comando o resultado da operao que ele realiza sobre a entrada. A sada dos comandos pode ser impressa na tela do terminal, enviada a um arquivo, ou servir de entrada para outro comando. Um comando Linux, normalmente requer uma entrada (em geral, um arquivo) e uma sada, a fim de exibir os resultados. Quando nenhum nome de arquivo especificado, o shell admite que o teclado do usurio ser sua entrada. O teclado considerado a entrada padro do sistema. E quando alguns resultados precisam ser exibidos, o shell assume que a tela ser a sada padro do sistema.

Gerncia de processos Nos sistemas operacionais, um processo a forma de representar um programa em execuo. o processo que utiliza os recursos do computador - processador, memria, etc - para a realizao das tarefas para as quais a mquina destinada. (ALECRIM, 2005) O modelo de gerenciamento de processos do Linux teve uma evoluo notvel. Desde o seu incio, auxiliado pelo modelo Bazaar1 de desenvolvimento, esses algoritmos foram enumeras vezes criticados e melhorados por eruditos ao redor do mundo, isso faz com que o Linux tenha hoje um dos melhores conjuntos de algoritmos para gerenciamento de processos j visto. Um processo pode ser descrito como parte de um programa que est aparentemente rodando. Este aparente existe somente pelo fato de que determinado processo pode entrar e sair diversas vezes do processador em um nico segundo, e em um determinado momento ele pode no estar no processador e mesmo assim aparentemente estar rodando. Como qualquer sistema de compartilhamento de tempo o Linux consegue dar a impresso de execuo simultnea dos processos, separando um espao bastante curto de tempo para cada um deles. Para ter sucesso nesta tarefa ele segue uma serie de regras que no desperdia tempo de hardware com operaes desnecessrias e consegue escolher qual processo deve ser executado naquele exato momento. O que decide essa escolha no kernel o escalonador de processos, que em grande parte responsvel pela produtividade e eficincia do sistema. Mais do que um simples mecanismo de diviso de tempo, ele responsvel por uma poltica de tratamento dos processos que permite os melhores resultados possveis. A funo do "start kernel" tem a responsabilidade de criar um thread, este o processo de nmero zero, o primeiro e o ascendente de todos os outros processos. Esta funo tambm responsvel por chamar a funo "Init", que por sua vez utiliza a chamada de sistema "execve" para rodar o executvel init, que ser o processo nmero 1, mais conhecido como init. Podemos chamar de Deus e pai de todos os outros processos, o segundo processo a ser criado e um dos ltimos a morrer. Seus filhos,vivem como ns seres humanos, eles nascem, se desenvolvem, tem uma vida mais ou menos produtiva, podem ter inmeros.

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7539

27/10/2008

Estudo sobre os tipos de gerenciamento do SO Linux [Artigo]

Page 5 of 6

Uma das coisas que o escalonador precisa ter cincia em qual estado est cada processo, na estrutura que armazena os dados de cada processo temos um array de possveis estados onde apenas uma das opes abaixo estar ativa. TASK RUNNING - Em execuo ou aguardando para ser executado. TASK INTERRUPTIBLE - O processo est suspenso at que determinada condio se torne verdadeira. TASK UNINTERRUPTIBLE - Como o estado anterior, exceto pelo fato de que o seu estado no ser modificado quando receber um sinal. importante para os processos que necessitam executar determinada tarefa sem ser interrompido. TASK STOPPED - Execuo do processo foi parada. TASK ZOMBIE - O processo est terminado, mas o processo pai ainda no executou uma chamada de sistema para retornar informaes sobre o processo morto "wait", as informaes no so descartadas pois ainda podem ser utilizadas. Por padro o Linux limita os recursos que cada processo pode ter. Isto , quanto de recursos do sistema ele pode utilizar. Isso uma proteo para que caso o usurio faa algo errado, no prejudique a estabilidade do sistema. Os processos do Linux so preemptivos, isso significa que quando um processo entra no estado TASK RUNNING o kernel vai checar se existe alguma prioridade maior do que o processo corrente. Caso exista, o processo corrente interrompido e o que tem prioridade maior comea a rodar. A prioridade de um processo no Linux est em constante alterao, o escalonador se mantm informado sobre o que os processos esto fazendo e assim torna-se possvel ajustar a prioridade. Dessa maneira os processos que ficaram proibidos de utilizar o CPU por um longo intervalo de tempo, tem sua prioridade incrementada automaticamente, contrariamente os processos que passaram um longo perodo dentro do CPU so penalizados tendo sua prioridade decrementada. O algoritmo de escalonamento do Linux funciona dividindo o tempo do CPU em fatias. Em uma nica fatia cada processo tem um tempo especifico de durao que computada assim que essa fatia inicia. Geralmente processos diferentes tem tempos de execuo diferentes. Quando o tempo de execuo de um processo termina ele retirado do CPU e outro processo que est rodando colocado no seu lugar. Uma fatia termina quando todos os processos esgotaram seu tempo reservado de execuo, assim o escalonador responsvel por calcular o tempo de execuo para todos os processos e uma nova fatia inicia. Para o Linux escolher qual processo deve rodar ele precisar escolher qual tem a prioridade maior, existem dois tipos de prioridade: Prioridade Esttica - Definido pelo usurio para processos que necessitam de tempo real, os valores variam de 1 at 99 que nunca so modificados pelo escalonador. Prioridade Dinmica - Esta aplicada para os processos convencionais. A prioridade dinmica dos processos convencionais sempre inferior aos processos com prioridade esttica. Se existir um processo com prioridade esttica no estado TASK RUNNING nenhum processo dinmico ir rodar at que ele pare de executar.

(TOLEDO, 2005)

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7539

27/10/2008

Estudo sobre os tipos de gerenciamento do SO Linux [Artigo]

Page 6 of 6

Concluso Conclui-se que o sistema operacional Linux de grande utilidade para o usurio por ser um sistema livre e de cdigo fonte aberto. A pesquisa feita sobre seus gerenciamentos, memria, processos, E/S e arquivos, foi de grande importncia para descobrir um pouco mais sobre este sistema operacional. As informaes obtidas sobre alocao de memria e escalonamento de processos revelam que ainda h bastante assunto para se aprofundar em futuras pesquisas deste SO.

Referncias bibliogrficas
AUGUSTO, K. Sistemas de arquivos EXT3 e ReiserFS no GNU/Linux. 2005. Disponvel em: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2119 Acesso em: 08 nov. 2007. SILVA, G. R. L. Se introduzindo no universo dos filesystems. 2004. Disponvel em: http://www.slackwarebrasil.com.br/web_site/artigos/artigo_completo.php?aid=108 Acesso em 08 nov. 2007. LIMA, S. A. de. Entendendo o gerenciamento de memria no Linux. 2007. Disponvel em: http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=7320 Acesso em: 08 nov. 2007. TOLEDO, M. Gerenciamento de Processos no Linux. 2005. Disponvel em: http://www.marcelotoledo.org Acesso em 08 nov. 2007. TANEMBAUM, A. S. Sistemas Operacionais Modernos. 2 Ed. 2005. AECRIM, E. Sistema de arquivos ext3. 2003. Disponvel em: http://www.infowester.com/printversion/linext3.php Acesso em: 08 nov. 2007.

http://www.vivaolinux.com.br/artigo/Estudo-sobre-os-tipos-de-gerenciamento-do-SO-Linux Voltar para o site

http://www.vivaolinux.com.br/artigos/impressora.php?codigo=7539

27/10/2008