Conhecendo o Kernel do Linux

Iniciado por Verdadeiro hacker, 23 de Fevereiro de 2010, 21:01

tópico anterior - próximo tópico

Verdadeiro hacker

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 provavelmente 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

Linus TorvaldsPara 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 "chassis" do sistema estava criado, bastava adicionar a "carroceria".

O nome Linux é uma mistura de Linus com Unix. E como Linux é, na verdade, o nome de um kernel, talvez o InfoWester devesse 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 melhorias em uma determinada função da versão anterior, para corrigir vulnerabilidades e para adicionar recursos ao kernel, principalmente compatibilidade com novos hardwares.

Cada versão do kernel é representada por 3 números distintos separados por pontos, sendo que um quarto número pode ser aplicado (você já saberá o porquê), por exemplo: 2.6.21.3. O primeiro número indica a versão do kernel. Note que esse número muda raramente: a última alteração (até o fechamento deste artigo) ocorreu em 1996, quando o kernel passou da versão 1 para a versão 2. O segundo número indica a última revisão feita até o momento naquela versão do kernel. O terceiro número, por sua vez, indica uma revisão menor, como se fosse uma "revisão da última revisão" do kernel. Note que o terceiro número pode ser acompanhado de pequenas siglas. Uma que costuma aparecer com freqüência é a sigla "rc" (release candidate), que indica a disponibilização de uma versão ainda não oficial, por exemplo: 2.6.22-rc1. Há siglas que apontam uma versão trabalhada por um desenvolvedor em específico, como a "mm", que indica as alterações feitas por Andrew Morton.

Como já dito, um quarto número pode ser usado. Ele é aplicado quando uma falha grave no kernel foi descoberta, sendo, portanto, necessário atualizá-lo. Porém, não faz sentido lançar uma revisão completa apenas por causa de algumas correções, razão esta que levou à utilização de um quarto número.

É importante frisar que antes da série 2.6.x, o esquema de numeração do kernel tinha o seguinte esquema: se o segundo número da representação fosse ímpar, significava que aquela série ainda estava em desenvolvimento, ou seja, era uma versão instável e em fase de testes e aperfeiçoamentos. Se o número fosse par, significava que aquela série já tinha estabilidade para ser disponibilizada para uso.

Mais uma nota importante: você não precisa usar sempre a última versão do kernel. Só é recomendável fazer uma atualização em caso de necessidade de compatibilidade com novo hardware ou em casos de melhorias de recursos. Em alguns casos, principalmente com computadores antigos, o desempenho é melhor se usado um kernel antigo. Em situações simples, talvez seja melhor apenas aplicar um patch (uma correção para um problema) 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, desde palmtops até mainframes. Até mesmo nos computadores da Apple é possível instalar o Linux. As principais plataformas compatíveis são: Apple, Sun, Sparc, Alpha, PowerPC, i386 (Intel), ARM, entre outras. A foto abaixo mostra o Linux rodando no videogame Nintendo DS:

Linux rodando no Nintendo DS

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

Atuação do kernel

Obviamente, o kernel "começa a trabalhar" no processo de inicialização (boot) do sistema, a partir das instruções que são lidas na MBR (Master Boot Record), um recurso responsável por indicar ao BIOS do computador como e onde carregar o sistema operacional. Quando isso ocorre, o kernel começa a detectar os dispositivos de hardware essenciais do computador, como a placa de vídeo, por exemplo. Se até aí tudo ocorrer sem problemas, toda a imagem do kernel passa a ser carregada. Findo esse processo, o kernel checa a memória e a prepara 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 as funções responsáveis por checar o que deve ser inicializado em nível de software e processos, como, por exemplo, 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 o uso 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 e somente os drivers relacionados ao hardware do computador em questão é que seriam usados. Para lidar com esse tipo de problema, os drivers são carregados como módulos após o kernel ser ativado. A questão é que carregar 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 drivers junto com sua inicialização, ou seja, sem usar módulos.

Kernel carrregandoImagem do kernel carregando

Onde obter o kernel
.: Livros sugeridos :.
:: Desenvolvimento do Kernel do Linux
:: Understanding the Linux Kernel (inglês)
:: Sistemas Operacionais Modernos
Via Shopping UOL

Você pode baixar o código-fonte e o próprio kernel do Linux a partir do site www.kernel.org. Nesse endereço não só é possível baixar a última versão como também versões um pouco mais antigas. Por esse mesmo site também é 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 como ele funciona é algo realmente fantástico. Talvez essa questão não seria tão conhecida entre os adeptos da computação se o Linux não fosse um sistema de código-fonte aberto. Graças a ele, qualquer pessoa pode tirar proveito do sistema operacional, ou melhor, do kernel, seja para estudar seu funcionamento, seja para usá-lo em seu cotidiano. O kernel é o núcleo de um sistema operacional e assim, não é errado dizer que o Linux é o coração das distribuições GNU/Linux. Mas isso é pouco. O Linux, mesmo que indiretamente, é um dos grandes responsáveis pela divulgação das filosofias que regem a cultura do software livre.

clcampos

Eu não li o texto mas pergunto: Foi você que escreveu isso? Se não onde esta a fonte?
Cristiano/Timóteo - MG
.: Como Fazer Perguntas de Forma Inteligente :.                
Com dúvida? pesquise!

Tota

Tópico trancado por infração a regra do forum

Citar
Do uso de material alheio

6. O uso de material intelectual alheio deve ser feito com a indicação da fonte e/ou dos devidos créditos somente em casos autorizados pelo(s) autor(es) da obra.