O Kernel do Linux.pdf

3
O kernel do Linux Introdução Independente de qual seja, todo sistema operacional possui um kernel. Trata-se de um item fundamental, que antes do Linux era conhecido apenas por estudantes de computação de grandes universidades ou por desenvolvedores da área. Após o surgimento do Linux, o termo kernel ficou mais conhecido e qualquer um que já tenha se aventurado no Linux sabe de sua existência. Porém, os conceitos que envolvem o kernel não são claros a muita gente e por isso poucas pessoas sabem exatamente o que é kernel. O objetivo deste artigo é dar explicações sobre isso, mas com ênfase no kernel do Linux. O que é kernel Kernel pode ser entendido com uma série de arquivos escritos em linguagem C e em linguagem Assembly que constituem o núcleo do sistema operacional. É o kernel que controla todo o hardware do computador. Ele pode ser visto como uma interface entre os programas e todo o hardware. Cabe ao kernel as tarefas de permitir que todos os processos sejam executados pela CPU e permitir que estes consigam compartilhar a memória do computador. O kernel do Linux Para entender melhor tudo o que envolve o kernel do Linux é interessante ver um pouco da história do sistema (para conhecer a história completa, clique aqui ). O kernel do Linux foi idealizado pelo finlandês Linus Torvalds, em 1991. Torvalds era um estudante de ciência da computação que em seus estudos teve a necessidade de criar uma nova versão do Minix, um sistema operacional baseado no Unix e desenvolvido por Andy Tannenbaum. Linus começou a trabalhar nesse projeto e quando desenvolveu algo concreto, enviou uma mensagem para um grupo de usuários do Minix na Usenet (a antecessora da Internet). Na mensagem, Torvalds notificou sobre sua criação e avisou que disponibilizaria o código-fonte do que tinha desenvolvido a todos os interessados. O que Linus Torvalds tinha criado, na verdade, era a primeira versão do kernel do Linux. Assim, falando grossamente, bastava juntar uma série de aplicativos com o kernel para que um sistema operacional fosse criado. LInus Torvalds tinha vontade de ter um sistema operacional no qual fosse possível alterar conforme a necessidade. Ao criar a "nova versão" do Minix, Torvalds tinha desenvolvido um meio de usar o hardware de um computador por software e portanto, restava agora a cada interessado adicionar os aplicativos e as funcionalidades desejadas para assim constituir um sistema operacional. Em outras palavras, o "motor" do sistema estava criado, bastava adicionar a "carroceria". O nome Linux é uma mistura de Linus com Unix. E como Linux é o nome de um kernel, talvez o InfoWester deveria dar o nome de "O kernel Linux" ao título deste artigo. Devido a essa questão - sobre o que de fato o nome Linux representa - o correto é dar o nome GNU/Linux a todas as distribuições desse sistema, uma vez que essas são constituídas pelo kernel - o Linux - mais uma coleção de programas e aplicativos, sendo que a quase totalidade desses softwares são baseados nos conceitos da GNU . No entanto, por questões de comodidade, convencionou-se a utilizar o nome Linux para toda e qualquer distribuição. As versões do kernel Periodicamente, novas versões do kernel do Linux são lançadas. Isso ocorre para prover melhoras em uma determinada função da versão anterior, para corrigir vulnerabilidades e para adicionar recursos ao kernel, principalmente compatibilidade com novos hardwares. Como o Linux é um sistema operacional aberto, qualquer pessoa pode estudar e/ou alterar seu código-fonte. Devido a isso, tanto as versões estáveis quanto as versões que ainda estão em desenvolvimento são disponibilizados a qualquer pessoa. Para que seja possível distinguir uma versão estável de uma em desenvolvimento, foi adotada a seguinte convenção: Cada versão do kernel é representada por 3 números distintos separados por ponto. O primeiro e o segundo número indicam qual a série daquele kernel, enquanto que o terceiro número indica qual a versão do kernel naquela série. Se o segundo número da representação for ímpar, significa que aquela série ainda está em desenvolvimento, ou seja, é uma versão instável e em fase de testes e aperfeiçoamentos. Se o número for par, significa que aquela série possui estabilidade para funcionar. O terceiro número se altera quando algum recurso é alterado ou adicionado. Para um melhor entendimento, vamos a alguns exemplos:

description

Uploaded from Google Docs

Transcript of O Kernel do Linux.pdf

Page 1: O Kernel do Linux.pdf

O kernel do Linux

Introdução

Independente de qual seja, todo sistema operacional possui um kernel. Trata-se de um item fundamental, queantes do Linux era conhecido apenas por estudantes de computação de grandes universidades ou pordesenvolvedores da área. Após o surgimento do Linux, o termo kernel ficou mais conhecido e qualquer um quejá tenha se aventurado no Linux sabe de sua existência. Porém, os conceitos que envolvem o kernel não sãoclaros a muita gente e por isso poucas pessoas sabem exatamente o que é kernel. O objetivo deste artigo é darexplicações sobre isso, mas com ênfase no kernel do Linux.

O que é kernel

Kernel pode ser entendido com uma série de arquivos escritos em linguagem C e em linguagem Assembly queconstituem o núcleo do sistema operacional. É o kernel que controla todo o hardware do computador. Ele podeser visto como uma interface entre os programas e todo o hardware. Cabe ao kernel as tarefas de permitir quetodos os processos sejam executados pela CPU e permitir que estes consigam compartilhar a memória docomputador.

O kernel do Linux

Para entender melhor tudo o que envolve o kernel do Linux é interessante ver umpouco da história do sistema (para conhecer a história completa, clique aqui). Okernel do Linux foi idealizado pelo finlandês Linus Torvalds, em 1991. Torvalds eraum estudante de ciência da computação que em seus estudos teve a necessidade decriar uma nova versão do Minix, um sistema operacional baseado no Unix edesenvolvido por Andy Tannenbaum.

Linus começou a trabalhar nesse projeto e quando desenvolveu algo concreto,enviou uma mensagem para um grupo de usuários do Minix na Usenet (aantecessora da Internet). Na mensagem, Torvalds notificou sobre sua criação eavisou que disponibilizaria o código-fonte do que tinha desenvolvido a todos osinteressados.

O que Linus Torvalds tinha criado, na verdade, era a primeira versão do kernel do Linux. Assim, falandogrossamente, bastava juntar uma série de aplicativos com o kernel para que um sistema operacional fossecriado.

LInus Torvalds tinha vontade de ter um sistema operacional no qual fosse possível alterar conforme anecessidade. Ao criar a "nova versão" do Minix, Torvalds tinha desenvolvido um meio de usar o hardware deum computador por software e portanto, restava agora a cada interessado adicionar os aplicativos e asfuncionalidades desejadas para assim constituir um sistema operacional. Em outras palavras, o "motor" dosistema estava criado, bastava adicionar a "carroceria".

O nome Linux é uma mistura de Linus com Unix. E como Linux é o nome de um kernel, talvez o InfoWesterdeveria dar o nome de "O kernel Linux" ao título deste artigo. Devido a essa questão - sobre o que de fato onome Linux representa - o correto é dar o nome GNU/Linux a todas as distribuições desse sistema, uma vezque essas são constituídas pelo kernel - o Linux - mais uma coleção de programas e aplicativos, sendo que aquase totalidade desses softwares são baseados nos conceitos da GNU. No entanto, por questões decomodidade, convencionou-se a utilizar o nome Linux para toda e qualquer distribuição.

As versões do kernel

Periodicamente, novas versões do kernel do Linux são lançadas. Isso ocorre para prover melhoras em umadeterminada função da versão anterior, para corrigir vulnerabilidades e para adicionar recursos ao kernel,principalmente compatibilidade com novos hardwares.

Como o Linux é um sistema operacional aberto, qualquer pessoa pode estudar e/ou alterar seu código-fonte.Devido a isso, tanto as versões estáveis quanto as versões que ainda estão em desenvolvimento sãodisponibilizados a qualquer pessoa. Para que seja possível distinguir uma versão estável de uma emdesenvolvimento, foi adotada a seguinte convenção:

Cada versão do kernel é representada por 3 números distintos separados por ponto. O primeiro e o segundonúmero indicam qual a série daquele kernel, enquanto que o terceiro número indica qual a versão do kernelnaquela série. Se o segundo número da representação for ímpar, significa que aquela série ainda está emdesenvolvimento, ou seja, é uma versão instável e em fase de testes e aperfeiçoamentos. Se o número for par,significa que aquela série possui estabilidade para funcionar. O terceiro número se altera quando algumrecurso é alterado ou adicionado. Para um melhor entendimento, vamos a alguns exemplos:

Page 2: O Kernel do Linux.pdf

2.6.2 - Esta versão do kernel é estável, pois sua série é par (6).

2.4.5 - Esta versão do kernel é estável, pois sua série é par (4).

2.5.19 - Esta série é instável, pois sua série é ímpar (5).

É importante frisar que você não precisa usar sempre a última versão do kernel. Só é recomendável fazer umaatualização em casos de necessidade de compatibilidade com novo hardware ou em casos de melhorias derecursos. Em alguns casos, principalmente com computadores antigos, o desempenho é melhor se usado umkernel antigo. Em situações simples, talvez seja melhor apenas aplicar um patch (uma correção para umproblema) do que adicionar um kernel novo.

Compatibilidade

O kernel do Linux permite que o sistema operacional seja compatível com uma série de plataformas, desdepalmtops até mainframes. Até mesmo nos computadores da Apple é possível instalar o Linux. As principaisplataformas compatíveis são: Apple, Sun, Sparc, Alpha, PowerPC, i386 (Intel), ARM, entre outras.

Também existe compatibilidade com sistemas de arquivos. Acredite, apesar de não ser recomendável porquestões de desempenho, é possível instalar o Linux até mesmo em partições FAT32. As principaiscompatibilidades neste aspecto são com os seguintes sistemas de arquivos: FAT, FAT32, ext2, ext3, ReiserFS,JFS, NTFS, entre outros.

Atuação do kernel

Obviamente, o kernel "começa a trabalhar" no processo de inicialização (boot) do sistema, a partir dasinstruções que são lidas na MBR (Master Boot Record), um recurso responsável por indicar ao BIOS docomputador como e onde carregar o sistema operacional. Quando isso ocorre, o kernel começa a detectar osdispositivos de hardware essenciais do computador, como a placa de vídeo. Se até aqui tudo ocorrer semproblemas, toda a imagem do kernel passa a ser carregada. Findo esse processo, o kernel checa a memória e aprepara para o uso através de uma função de paginação. As interrupções (IRQs), os discos, memória-cache,entre outros, são acionados em seguida.

Após realizar todas essas etapas, o sistema operacional está pronto para funcionar. O kernel carrega asfunções responsáveis por checar o que deve ser inicializado em nível de software e processos, como, porexemplo, o conteúdo do arquivo /etc/init. Geralmente o que é carregado é a tela de login do usuário.

Usuário logado, sistema operacional trabalhando. O kernel agora executa suas funções, como a de controlar ouso da memória pelos programas ou a de atender a chamada de uma interrupção de hardware.

É interessante notar que as distribuições Linux montam o kernel com recursos e drivers básicos para hardware,afinal carregar o suporte a todo tipo de dispositivo é algo inviável. O kernel ficaria extremamente grande esomente os drivers relacionados ao hardware do computador em questão é que seriam usados. Para lidar comesse tipo de problema, os drivers são carregados como módulos após o kernel ser ativado. A questão é quecarregar recursos por módulo gera uma queda de desempenho (pouco significativa em computadores rápidos)e por isso, muitos usuários preferem recompilar o kernel de seus sistemas para que esse carregue os driversjunto com sua inicialização, ou seja, sem usar módulos.

Imagem do

Page 3: O Kernel do Linux.pdf

kernel carregando

Onde obter o kernel

É possível baixar o código-fonte e o próprio kernel do Linux a partir do site www.kernel.org. Nesse endereçonão só é possível baixar a última versão como também versões um pouco mais antigas. Por esse mesmo site épossível obter informações, reportar bugs e participar de listas de discussão.

Finalizando

Aos que se interessam por esse tipo de estudo, entender o que é o kernel de um sistema operacional e comoele funciona é algo realmente fantástico. Talvez essa questão não seria tão conhecida entre os adeptos dacomputação se o Linux não fosse um sistema de código-fonte aberto. Graças a ela, qualquer pessoa pode tirarproveito do sistema operacional, ou melhor, do kernel, seja para estudar seu funcionamento, seja para usá-loem um terminal de uma loja. O kernel é o núcleo de um sistema operacional e assim, não é errado dizer que oLinux é o coração das distribuições GNU/Linux. Mas isso é pouco. O Linux, mesmo que indiretamente, é umdos grandes responsáveis pela divulgação das filosofias que regem a cultura do software livre.

Escrito por Emerson Alecrim Publicado em 31/10/2004 Atualizado em 31/10/2004

Publicado no Portal InfoWester