Você está na página 1de 16

1.

0 Sistema Operativo Linux

Linux um sistema operacional, responsvel pelo funcionamento do computador, que faz a comunicao entre hardware (impressora, monitor, mouse, teclado) e software (aplicativos em geral). O Linux um sistema operacional derivado do Unix. O kernel o corao do Sistema Operacional Linux, ele o responsvel por garantir que todos os programas tero acesso aos recursos de que necessitam (memria RAM, por exemplo) simultaneamente, fazendo com que haja um compartilhamento concorrente, mas sem oferecer riscos integridade da mquina. O conjunto de um kernel e demais programas responsveis pela comunicao com este o que denominamos sistema operacional. Desenvolvido pelo finlands Linus Torvalds, o Linux tem seu cdigo fonte disponvel sob licena GPL para qualquer pessoa utilizar, estudar, modificar e distribuir de acordo com os termos da licena.

2.0 Breve Histrico

O nome Linux uma fuso do nome de seu criador, o finlands Linus Torvalds com Unix, um sistema operacional de grande porte voltado para servidores, no qual o Linux foi baseado. Para entender a histria do Linux preciso um breve resumo sobre a histria do Unix.

2.1 Multics e Unix O Unix e sua histria esto intrinsicamente ligados a histria de um sistema operacional mais antigo, chamado Multics, o Multics foi criado na dcada de 1960 por um conjunto de empresas entre elas General Eletric (GE), laboratrios Bell (Bell Labs) e American Telephone an Telegraph (AT&T) alm do Massachusets Institute of Technology (MIT). A idia principal do Multics era quanto as caractersticas de tempo compartilhado, aonde vrios usurios usam os recursos do computador ao mesmo tempo, compartilhando-o. Ken Thompsom, um dos pesquisadores do Multics que trabalhava na Bell, aps a sada da referida empresa do projeto Multics, decidiu que desenvolveria um sistema que mantesse as mesmas caractersticas do Multics mas que fosse menor do que o anterior, nasceu ento o Unix. Algum tempo mais tarde em 1973 um outro pesquisador da Bell, Dennis Ritchie, reescreveu todo o sistema em uma linguagem de alto nvel que ele mesmo criou, o C, isto fez com que o Unix passasse a ter maior aceitao fora da Bell.

Entre 1977 e 1983 a AT&T passou a alterar o Unix de modo a poder comercializar o mesmo, isto se deu em meados de 1983 com o desenvolvimento da verso System V que at hoje ainda usado no mercado. Em 1991 Linus Torvalds, ento estudante de Cincias da Computao na Universidade de Helsinki na Finlndia, comea a estudar o Minix uma verso livre do Unix, ento o mesmo decide criar um sistema que fosse mais poderoso que o Minix, para isso envia uma mensagem atravs da Usenet (espcie de antecessor da Internet), divulgando sua idia, aonde j prope a colaborao no desenvolvimento do sistema, bem como a disponibilizao dos cdigos fontes, Ainda em 1991 disponibiliza a verso 0.02 do Kernel (ncleo do sistema), e continua trabalhando at finalmente em 1994 oferecer a verso 1.0. O Linux um Sistema Operacional livre, que reimplementa as especificaes POSIX, que j eram usadas em sistemas Unix (System 4) e BSD. Deste modo o Linux muito similar ao Unix. O Linux regido pela licena GPL a referida licena basicamente dita que qualquer um pode usar o programa desde que no o torne fechado. Ou seja, voc pode alterar e at comercializar o programa, mas nunca fechar o seu cdigo. A histria do Linux ainda se funde a do GNU, o GNU um projeto que comeou em 1984 por Richard Stallman com o objetivo de desenvolver um sistema compatvel com Unix (Unix-like). O Linux apenas um kernel (ncleo do sistema) o GNU um conjunto de softwares, que foram at mesmo usados por Linus no desenvolvimento do Linux. Deste modo o sistema acabou se fundindo, se tornando uma juno do Kernel (Linux) e demais itens do Sistema (GNU). Deste modo o sistema leva usualmente o nome de seu ncleo, o Linux, mas o termo correto GNU/Linux.

3.0 DISTRIBUIES LINUX

As distribuies so a juno de todos esses factores, ncleo do sistema (kernel Linux), programas (ex: Shell), aplicativos (ex: navegador Firefox). O que difere uma distribuio da outra a verso utilizada do Kernel, e os programas e aplicativos disponibilizados, bem como o foco da distribuio, existem distribuies voltadas para todos os tipos de actividade, servidores, desktop, roteadores de redes, firewall, mobile e etc. Um fato que deixa claro a diferena que as distribuies podem ter entre si de acordo com o que oferecem se baseia no tamanho em bytes de algumas delas, existem distribuies capazes de rodar a partir de um simples disquete de 1.44MB at distribuies que ocupam 3 DVDs de 4.7GB.

Exemplos de distribuies Hoje existem centenas de distribuies voltadas para as mais diversas aplicaes, como citado existem muitas diferenas e peculiaridades entre as elas. Seguem alguns exemplos, suas funes, peculiaridades e focos principais.

3.1 Debian Debian ou Debian GNU/Linux uma distribuio focada na estabilidade que existe desde 1996, atualmente a verso estvel se encontra na 6.0 (codinome Squeeze). O Debian prima por estabilidade, haja visto que h uma cultura de se manter sempre verses antigas e testadas de todos os pacotes e bibliotecas, garantindo alta confiabilidade, a verso estvel da distro nunca recebe pacotes antes dos mesmos serem exaustivamente testados, isso faz com que o Debian seja uma distribuio amplamente utilizada em servidores. Outro fator diferencial do Debian o gerenciador de pacotes APT que permite a instalao, remoo, atualizao e configurao de pacotes de instalao de forma simples, fcil, eficaz e segura.

3.2 Ubuntu Esta distribuio existe desde 2004, uma distribuio baseada no Debian, tambm utilizando o gerenciador de pacotes APT, tem tido grande destaque no mercado Linux nos ltimos trs anos, apresentando grandes facilidades na sua instalao e uso para desktops, as verses do Ubuntu so lanadas a cada seis meses sempre no ms quatro e no ms dez. O nmero das verses obedece a este padro comeando na verso 4.10(ano 2004, ms 10), 5.04(ano 2005, ms 04) e assim sucessivamente. O ubuntu costuma trazer inovaes interessantes aos usurios de desktop a cada nova verso, sendo considero o Linux mais fcil de usar, devido as suas ferramentas intuitivas e bem construdas graficamente. A ltima verso a 11.4 (codinome Natty Narwhal), que traz como grande novidade o uso do novo e polmico gerenciador de janelas Unity, que promete um Desktop mais produtivo e bonito em comparao aos demais gerenciadores de janela.

3.3 Damn Small Linux uma distribuio baseada no Debian, que faz parte de um tipo denominado minidistribuies, basicamente se trata de um Linux live-cd (roda direto do CD, sem necessidade de instalao, sendo possvel seu uso at mesmo em computadores sem disco rgido), a pequena distribuio oferece um desktop pronto e completo, contendo sute de escritrio,

navegador de internet, cliente de mensagens instantneas entre outros aplicativos. Devido ao seu tamanho tambm muito leve e pode rodar bem no modo denominado light em um 486 DX2 de 66 Mhz com 16MB de memria RAM, com uma mquina com 128MB de RAM capaz de rodar no seu modo full com todos os aplicativos e recursos da distribuio plenamente funcionais. A distribuio tem pouco mais de 50MB o que permite sua gravao at mesmo em CDs do tipo Business Card. Se encontra na verso 4.4.10.

3.4 Endian Firewall Como o prprio nome sugere o Endian um firewall baseado em Linux que pode transformar qualquer computador em um poderoso roteador/firewall. Conta com interface Web unificada de acesso e gerenciamento. Dispe de ferramentas comuns e avanadas para firewall e roteamento, como por exemplo NAT, Proxy, DHCP, VPN, Anti-vrus e Anti-Spam para email e Web, filtro de contedo, estatsticas e logs, dentre outras ferramentas. Se encontra atualmente na verso 2.1.2.

3.5 Android Sistema operacional mobile da Google que utiliza o kernel Linux. No desenvolvido internamente no kernel e sim numa estrutura externa desenvolvida pela Google. O sistema foi desenvolvido inicialmente pela prpria Google que posteriormente passou o desenvolvimento para a Open Handset Alliance, ficando apenas com o gerenciamento do produto e a engenharia de processos. O Android desenvolvido com bibliotecas que permite ao desenvolvedor programar para ele utilizando Java realizando o controle do aparelho por intermdio dessas bibliotecas. O crescimento do Android foi exponencial no ltimo ano, atingindo algumas marcas altamente expressivas como: duzentos mil aplicativos desenvolvidos e disponibilizados no Google Market (loja de aplicativos do Android), cem milhes de aparelhos Android ativados, quatro bilhes e meio de aplicaes instaladas atravs do Android Market. Com estes nmeros o Android se tornou a plataforma mais utilizada em smarthphones estando em primeiro lugar com 38,5% de todo o mercado.

4.0 Sistema de arquivos Linus Torvalds adaptou o sistema de arquivos do MINIX, de Andrew Tanenbaum, para o Linux. Esse sistema de arquivos estendeu o limite do volume para 2 GiB e o tamanho do nome de arquivo para 255 caracteres.

4.1 Linux EXT2 A influncia do UNIX pode ser vista, p.ex., na utilizao de grupos de blocos, que so anlogos aos grupos de cilindros utilizados pelo FFS. O tamanho mximo de um volume Ext2 de 8 TiB. O Ext2 foi projetado e implementado para corrigir as deficincias do Ext e prover um sistema que respeitasse a semntica UNIX. A influncia do UNIX pode ser vista, p.ex., na utilizao de grupos de blocos, que so anlogos aos grupos de cilindros utilizados pelo FFS. A verso original do FFS originou o que hoje conhecido como UFS1 (Unix File System 1). O bloco, que consiste num conjunto de setores (cada setor tem 512 bytes), a menor unidade de alocao para o Ext2. O tamanho pode ser de 1024, 2048 ou 4096 bytes e definido na formatao. A partio EXT2 o tipo usado para criar o sistema de arquivos Linux Native usado para armazenar o sistema de arquivos EXT2 (aps a formatao) e permitir o armazenamento de dados.

4.2 Linux EXT3 A principal diferena entre o Ext2 e o Ext3 a implementao do journaling, que consiste em um registro (log ou journal) de transaes cuja finalidade recuperar o sistema em caso de desligamento no programado. H trs nveis de journaling disponveis na implementao do Ext3: Journal: os metadados e os dados (contedo) dos arquivos so escritos no journal antes de serem de fato escritos no sistema de arquivos principal. Isso aumenta a confiabilidade do sistema com uma perda de desempenho, devido a necessidade de todos os dados serem escritos no disco duas vezes. Writeback: os metadados so escritos no journal mas no o contedo dos arquivos. Essa opo permite um melhor desempenho em relao ao modo journal, porm introduz o risco de escrita fora de ordem onde, por exemplo, arquivos que so apensados durante um crash podem ter adicionados a eles trechos de lixo na prxima montagem.

Ordered: como o writeback, mas fora que a escrita do contedo dos arquivos seja feita aps a marcao de seus metadados como escritos no journal. Esse considerado um meiotermo aceitvel entre confiabilidade e performance, sendo, portanto, o nvel padro.

A vantagem de usar ext3 que melhora a recuperao do sistema de arquivos caso ocorra algum desligamento sbito do computador, por meio da gravao seqencial dos dados na rea de metadados e acesso mhash da sua rvore de diretrios. Embora o seu desempenho (velocidade) seja menos atrativo que o de outros sistemas de arquivos (como ReiserFS e XFS), ele tem a importante vantagem de permitir que seja feita a atualizao direta a partir de um sistema com ext2, sem a necessidade de realizar um backup e restaurar posteriormente os dados, bem como o menor consumo de processamento.

Enquanto em alguns contextos a falta de funes de sistemas de arquivos "modernos", como alocao dinmica de inodes e estruturas de dados em rvore, poderia ser considerada uma desvantagem, em termos de "recuperabilidade" isso d ao ext3 uma significante vantagem sobre sistemas de arquivos que possuem-nas. Os metadados do sistema de arquivos esto todos em locais fixos e bem conhecidos, e h certa redundncia inerente estrutura de dados, que permite que sistemas ext2 e ext3 sejam recuperveis no caso de uma corrupo de dados significante, em que sistemas de arquivos em rvore no seriam recuperveis.

4.3 Linux EXT4 Ext4 a evoluo do sistema de arquivos mais usados no Linux, o Ext3. De muitas maneiras, Ext4 uma profunda melhoria sobre o Ext3, sendo o Ext3, com muitas melhorias frente o Ext2. No Ext3 foi principalmente a adio de Journaling sobre o Ext2, mas Ext4 teve mudanas importantes na estrutura do sistema de arquivos destinado ao armazenamento de dados. O resultado um sistema de arquivos com um design aperfeioado, melhor performance, confivel e com muitos recursos. Um sistema de arquivos Ext3 existente, pode ser migrado para Ext4 com um procedimento fcil, onde consiste a execuo de um casal de comandos em modo read -only (descrito na prxima seo). Por meio disto voc melhora a performance, limites de armazenamentos e recursos do sistema de arquivos corrente, com ou sem a reformatao e/ou reinstalao do SO e softwares environment. Se voc precisa das vantagens do Ext4 em um sistema em produo, voc pode atualizar o sistema de arquivos. O processo seguro no h riscos para seus dados (obviamente, fazer backup de dados crticos recomendado, pois voc est atualizando seu sistema de arquivos). O Ext4 vai usar uma nova estrutura de dados somente em novos dados, a estrutura antiga continuar intocada, ser possvel para leitura/escrita se for preciso. Desta forma, claro, assim que uma vez convertido o sistema de arquivos para Ext4, voc no vai poder voltar para o Ext3 novamente.

4.4 Sistemas arquivos grandes Atualmente, Ext3 suporta 16TB de tamanho mximo no sistema de arquivos, e 2TB de tamanho mximo de um arquivo. Ext4 adiciona 48-bit endereados, obtendo assim 1EB de tamanho mximo de sistema de arquivos e 16TB de tamanho mximo de arquivos. 1 EB = 1,048,576 TB (1 EB = 1024 PB, 1 PB = 1024 TB, 1 TB = 1024 GB).

4.5 Escalabilidade de subdiretrios Atualmente a possibilidade mxima de nmero de subdiretrios contendo um nico diretrio no Ext3 32.000. Ext4 quebra esse limite, e possibilita um nmero ilimitado de subdiretrios.

4.5.1 Extends Os tradicionais sistemas de arquivos derivados do Unix como o Ext3, utilizam um esquema de mapeamento indireto de blocos para manter cada trilho do bloco usado correspondente no dado de um arquivo. Isto ineficiente para arquivos grandes, especialmente um arquivo grande deletado e/ou operaes truncate, porque o mapeamento mantm uma entrada para muitos blocos nicos, e grandes arquivos tem muitos blocos. Os sistemas de arquivos modernos usam uma abordagem diferente chamada extends. Um extends basicamente um punhado de blocos fsicos continuo. Isto pode ser basicamente definido: Os dados no prximo bloco n. Por exemplo, um arquivo de 100MB pode ser alocado em um nico extends deste tamanho, em vez de precisar da criao de um mapeamento indireto para 25600 blocos (4KB por bloco). Arquivos grandes so divididos em diversos extends. Extends melhora a performance e tambm ajuda a reduzir a fragmentao, uma vez que incentiva o continuo layouts do disco.

5.0 Gerenciamento de memria Cada processo no Linux possui prioridades com relao alocao de memria. O Linux tambm possui uma caracterstica de alocar determinados recursos dos processos que foram executados para garantir que estes retornem de maneira mais eficiente quando estes forem requisitados novamente. Caso a memria fsica (memria RAM) esteja totalmente carregada, iniciado um processo de operao com a memria virtual, a memria SWAP. (Silva APUD Lima, 2007). Esse espao da memria utilizado para armazenar estes recursos chamado de cache ou ainda prefetch.

Se verificarmos os nveis de memria durante a utilizao do sistema, veremos que mesmo com poucos programas abertos, a memria vai estar praticamente toda ocupada. Isso ocorre pelo fato de que o Linux est alocando as pginas de memria livre para a alocao desses recursos dos processos que so encerrados. Porm, devido a algoritmos complexos e totalmente eficientes, alm da memria SWAP (memria virtual), o sistema pode operar sem lentides. medida que mais processos vo sendo executados, e como estes tem preferncia de alocao na memria fsica, o Linux comea a jogar estes recursos alocados para a memria SWAP. Os processos a serem lanados para a memria SWAP geralmente seguem o padro de latncia do processo: os processos no utilizados a mais tempo so lanados para a memria SWAP. Isso libera espao na memria fsica, permitindo a alocao de mais processos nessa memria. Essa memria SWAP uma partio no disco rgido (partio SWAP) dedicada exclusivamente para estes despejos de processos em caso de necessidade de liberao de espao na memria fsica. Essa partio criada automaticamente na instalao das distribuies Linux de maneira geral. Com relao alocao de pginas, a memria fsica dividida atravs de um algoritmo chamado buddy-heap. Este responsvel pela liberao de pginas de memria fsica e tambm pela alocao de intervalos de pgina de acordo com o necessrio. Este algoritmo consegue alocar regies parceiras de memria afim de aumentar a capacidade de armazenar de maneira contnua os processos na memria fsica. Em caso da necessidade de alocao de processos menores, os quais no necessitam ocupar toda uma regio de memria, o algoritmo pode dividir uma regio em duas regies parceiras, utilizando somente o espao necessrio. Dessa maneira, a menor poro de alocao caracteriza-se como uma pgina de memria. ~

Fig.1 Esquema de gerenciamento de memria atravs do algoritmo buddy-heap.

Um outro alocador de memria concentra-se no kernel Linux. Este no utiliza necessariamente os mecanismos tradicionais de alocao de memria. Estes caracterizam-se por caches criados pelo prprio kernel, como o cache de buffers, o cache de pginas e o sistema de gerenciamento de memria virtual. A memria virtual no Linux gerenciada de maneira ligeiramente diferente. As pginas de memria virtual so criadas de acordo com a demanda, gerenciando memria virtual de acordo com os conjuntos de regies de memria (o que configura o espao de endereamento) e conjuntos de pginas (uma viso fsica de cada espao de endereamento, viso descrita nas tabelas de pgina do hardware). O kernel Linux pode criar espaos de endereamento virtual em duas situaes: na execuo de um novo programa atravs de uma chamada ao sistema exec, no qual o processo recebe um espao de endereamento vazio, e quando o processo criado com chamada ao sistema fork, na qual feita uma cpia integral dos espaos de endereamento virtual e os dois processos compartilham as mesmas pginas de memria fsica. Existe ainda a ttica de transio de processos entre a memria fsica e a memria virtual. Esse processo conhecido como swapping. Os sistemas baseados em UNIX actuais realizam a troca de pginas de processos, nunca realizando o swapping de processos inteiros. Esse sistema de paginao dividido em duas sees: o algoritmo de polticas, o qual responsvel por decidir qual pgina dever ser transferida para o disco e quando esta pgina deve ser transferida; E o sistema de paginao, o qual transfere os dados novamente para a memria fsica quando estes se tornam necessrios novamente. O Linux decide qual das pginas deve sofrer swapping atravs de um algoritmo chamado LFU, ou Least Frequently Used. Nesse algoritmo, as pginas com menor frequncia de utilizao so selecionadas para a realizao da operao de swapping, com intuito de realizar o menor nmero possvel de trocas de pginas.

Fig. 2 Funcionamento bsico do swapping

O kernel ainda reserva parte da memria virtual para seu uso interno. Esse espao dedicado dividido em duas partes: uma esttica, onde existem as referncias das tabelas de pginas; E outra dinmica, de uso prprio do kernel.

6.0 Gerenciamento de processos

Em sistemas operacionais conveniente diferenciar um programa e a sua execuo. comum que um mesmo programa seja executado por vrios usurios, ao mesmo tempo. Isto ocorre com um editor de textos, por exemplo. Neste caso, todos os usurios utilizam uma mesma cpia do cdigo do editor de textos, porm cada execuo trabalha sobre uma rea de variveis privativa. Cada execuo independente do editor de textos constitui um processo. Um processo pode ser definido como "um programa em execuo". O conceito de processo bastante abstrato, mas essencial no estudo de sistemas operacionais. Um programa uma sequncia de instrues. algo passivo dentro do sistema. Um programa no altera o seu prprio estado. Por outro lado, o processo um elemento ativo. Ele altera o seu estado, medida que executa um programa. Para cada processo o sistema operacional mantm um registro descritor, que um pequeno bloco de memria que mantm informaes sobre o processo (nmero nico, estado, valores dos registradores da UCP, etc.). Como qualquer outro 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.

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

6.1 Os primeiros processos Na fase de inicializao do Linux a funo ``start_kernel'' responsvel por criar um thread, este o processo de nmero zero, o primeiro e o ascendente de todos os outros processos. Depois de inicializar toda a estrutura de dados para este processo, esta mesma funo 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 filhos em poucos segundos e eventualmente morrem. Existem alguns outros processos que tambm so criados pelo kernel durante a fase de inicializao e destrudos assim que o sistema desliga. Outros so criados sob demanda, assim que surge a necessidade deles so carregados.

6.2 Estado dos processos 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.

6.3 Limite de recursos 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. Esses limites so: RLIMIT_AS O tamanho mximo que um processo pode ter em bytes. O kernel checa esse valor quando um processo utiliza a chamada de sistema ``malloc'' ou similar. RLIMIT_CORE Quando um processo abortado, o kernel pode gerar um arquivo core contendo as informaes desse aborto. Este valor utilizando para limitar o tamanho desse arquivo. Caso o valor seja zero O, o arquivo no criado. RLIMIT_CPU O tempo mximo em segundos que um processo pode ser executado. Caso esse limite seja ultrapassado o kernel envia um sinal SIGXCPU para tentar pacificamente finalizar sua execuo, se isso no acontecer ele envia um SIGKILL e mata o processo. RLIMIT_DATA O tamanho mximo do heap ou memria de dados em bytes. O kernel checa esse valor antes de expandir o heap de um processo. RLIMIT_FSIZE O tamanho mximo em bytes permitido para um arquivo. Se o processo tentar aumentar o tamanho de um arquivo que ultrapasse esse valor, o kernel envia um SIGXFSZ. RLIMIT_LOCKS O nmero mximo de arquivos que um processo pode dar lock. Toda fez que o usurio tenta dar lock em um arquivo o kernel checa esse valor. RLIMIT_MEMLOCK O tamanho mximo em bytes de memria que no permite swap. O kernel checa esse valor toda vez so utilizadas as chamadas de sistema ``mlock'' ou ``mlockall''. RLIMIT_NOFILE

O nmero mximo de descritores de arquivos abertos. Toda vez que um descritor for aberto ou duplicado o kernel checa este valor. RLIMIT_NPROC O nmero mximo de processos que um usurio pode ter. RLIMIT_RSS A quantidade mxima de memria fsica que um processo pode ter. RLIMIT_STACK O tamanho mximo em bytes da stack. O kernel checa este valor antes de expandi-la.

6.4 Preemptivo 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. Imagine a seguinte situao onde o usurio utiliza apenas dois processos. O editor de textos Emacs para escrever o seu programa e ao mesmo tempo o gcc para compilar a verso mais recente do programa Pogobol Light. Por ser um programa interativo o editor de textos tem uma prioridade maior do que o compilador, mesmo assim ele ainda suspenso diversas vezes para que o compilador possa rodar tambm. O usurio digita algumas palavras e imediatamente aps cada tecla digitada o kernel suspende a execuo do compilador para poder processar o Emacs e assim o texto digitado aparecer na tela, isso acontece to rpido que torna-se imperceptvel, ento o Emacs suspenso novamente para que o gcc possa voltar a executar. Neste caso, quando dizemos que um processo foi suspenso, significa que ele continua com o estado TASK_RUNNING, porm no mais utilizando o CPU.

6.5 Escalonamento 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. Quando tocamos no assunto escalonamento importante notar que os processos so classificados como da Forma E/S e Forma CPU. O primeiro faz uso extenso dos recursos de

entrada e sada, isso significa que grande parte do seu tempo utilizado no aguardo da concluso das operaes de Entrada e Sada, j o segundo so processos que necessitam de um longo tempo dentro do CPU. Uma classificao alternativa define trs classes de processos:

6.6 Processos Interativos Os processos que esto em constante interao com o usurio, sendo assim eles perdem grande parte do tempo esperando uma atividade do usurio, como um clique do mouse ou o aperto de uma tecla. Quando qualquer dessas aes for recebida o sistema precisa responder de forma gil suspendendo qualquer processo que estiver rodando e colocar o processo interativo no CPU para processar a requisio solicitada pelo usurio, caso contrrio ele pode pensar que o sistema no est respondendo. Um bom tempo de resposta em torno de 50 e 150 ms.

6.6.1 Processos em Lote

No necessitam de nenhuma interao do usurio e por isso muitas vezes rodam em background. Como so processos de baixa prioridade, so freqentemente penalizados pelo escalonador. Programas de processamento em lote comuns so editores de texto, compiladores e programas grficos.

6.6.2 Processos em Tempo Real

Esses processos nunca devem ser bloqueados por processos de baixa prioridade, precisam de um tempo de resposta super rpido e com uma variao bastante baixa. Alguns aplicativos que fazem uso do tempo real so som, vdeo, controladores de robs e equipamentos que envolvem a segurana humana.

6.7 Algoritmo de Escalonamento 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:

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

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

7.0 Vantagens e desvantagens do Linux

7.1 Vantagens Custos muito baixos ou at nulos Por serem baseadas em software livre, as distribuies Linux podem ser encontradas at gratuitamente. Algumas distribuies, como o Ubuntu, disponibilizam em seus sites oficiais links de download das imagens dos CDs de instalao ou at mesmo disponibilizam um formulrio onde voc pode solicitar a entrega de mdias de instalao atravs do correio. Verses mais elaboradas, como aquelas dedicadas exclusivamente a servidores, podem apresentar um pequeno custo por causa da licena, mas esse custo ainda muito menor do que licenas de outros sistemas operacionais, como os sistemas da famlia Windows. Ainda h o fato de que, por ser software livre, os usurios podem modificar o cdigo-fonte do sistema para atender alguma necessidade especfica, recompilar tudo e distribuir normalmente.

Maior estabilidade e segurana Os sistemas Linux so mais estveis, pois conseguem gerenciar de maneira mais eficiente os recursos de hardware. Isso permite que at mquinas mais antigas possam rodar verses mais novas das distribuies. Alm disso, so mais seguros, pois o nmero de pragas virtuais para

sistemas Linux ainda muito reduzido, alm de que cdigos que modifiquem qualquer parte do sistema sempre so interceptados com a autenticao obrigatria o superusurio (root). Esse recurso inclusive comeou a ser incorporado de maneira similar a partir do Windows Vista na famlia Windows, atravs do Controle de Conta de Usurio. Comunidade extensa e ativa A comunidade Linux muito ativa. Manifesta-se atravs de fruns, listas de discusso e outros meios atravs da internet, meios de fcil acesso. Isso garante suporte quando necessrio, inclusive em portugus. Voc pode obter auxlio para problemas bem bsicos como para problemas mais complexos. 7.2 Desvantagens Incompatibilidade com alguns equipamentos

Alguns fabricantes de equipamentos no escrevem drivers para o sistema Linux para seus equipamentos, como o caso de algumas impressoras da HP. Existem alternativas para estes casos, porm geralmente so tortuosas de serem implementadas e podem desencorajar os usurios a utilizarem as distribuies Linux.

Incompatibilidade com alguns formatos de arquivos Alguns formatos de arquivos, principalmente os proprietrios da Microsoft, no so executados com toda a fidelidade, como o caso do formato de vdeo WMV. Existem plugins para execut-los, mas estes no acabam oferecendo a mesma qualidade que se o arquivo estivesse sendo executado no Windows Media Player.

O Linux ainda falha na facilidade de uso Mesmo com o esforo de algumas distribuies como o Ubuntu, o Linux no consegue oferecer a mesma facilidade de uso que o Windows. Isso talvez se deva mais a um factor cultural, mas o fato que se voc entregar um computador com Linux pra algum que trabalha com Windows, este certamente sentir um pouco de dificuldade, o que no acontece geralmente ao contrrio. Muitas coisas ainda so mais fceis de serem executadas via terminal, porm as pessoas geralmente temem aquela tela preta com um monte de comandos em branco.