terça-feira, 26 de agosto de 2008

O que é o Kernel?

A explicação para leigos de Kernel RT gerou uma dúvida sobre o que é o Kernel "sem o RT". Vou tentar explicá-lo aqui de maneira simplificada.

Primeiro, uma visão histórica
No começo da informática, os programas de computadores (também chamados aplicativos ou aplicações) eram feitos para serem executados em computadores específicos. Programas específicos para máquinas específicas existiram por um certo período e ainda existem. Quando existia a necessidade de mudar esta máquina, toda a programação dos aplicativos precisava ser alterada para continuar funcionando. Percebendo que esta era uma situação impossível de ser mantida, os cientistas da época resolveram mudar a forma de pensar a integração entre computadores e seus programas.


O sistema operacional
Neste ponto da história entra um programa chamado Sistema Operacional. A função principal do sistema operacional é gerenciar os recursos do computador. Por recurso entenda a memória, arquivos, processador, teclado, vídeo, impressora e tudo o mais que pode ou deve ser "espetado" em um computador. Desta maneira os programas passaram a ser feitos para um sistema operacional e não para uma máquina. Quando uma nova máquina era lançada, o sistema operacional era adaptado para ela e todas as aplicações continuariam funcionando.
Em paralelo ao conceito de sistema operacional, veio o conceito de aplicativo. O Word, por exemplo, é uma aplicação para o Sistema operacional Windows. O Rosegarden é outra aplicação que utiliza o sistema operacional Linux. Normalmente, o que o usuário vê é a aplicação.

Com a contínua evolução dos computadores, novos dispositivos foram criados. Atualmente monitores LCD, mouses óticso, impressoras lasers e pen drives são exemplos destes dispositivos. Ao Sistema Operacional ficaria impossível gerenciar todos estes recursos. A evolução dos Sistemas Operacionais acompanhou a evolução do Hardware e vários fabricantes de sistemas operacionais optaram por dividí-lo em partes: Uma parte principal que cuidaria dos recursos "genéricos" e uma parte que cuidaria de recursos específicos.

O Kernel
A parte principal passou a ser chamada de Kernel, ou cerne, em uma tradução literal. Esta parte é o cerne do sistema operacional. O Kernel de um sistema operacional está sempre executando e ligar um computador e esperar que ele inicie significa esperar que o kernel seja carregador. O Kernel irá gerenciar a parte "genérica" do computador de maneira a garantir o funcionamento da máquina para o usuário.

Ao kernel pode ser adicionadas novas partes específicas. A parte dos recursos específicos é conhecida como drivers, módulos ou drivers de dispositvo. Os drivers servem para ajudar o kernel a gerenciar hardwares específicos. Se você possui uma impressora laser em sua casa, por exemplo, há a necessidade de instalar o driver para este dispositivo. Do contrário, o mesmo não irá ser reconhecido pelo seu computador e não irá funcionar adequadamente.


O Kernel do Linux
De maneira geral, podemos dizer que todo sistema operacional moderno possui um Kernel, porém ele só alcançou fama depois que o Linux ficou conhecido. Usuários Linux podem escolher e configurar o Kernel e os módulos de seu sistema operacional de maneira a melhorar o gerenciamento dos recursos de sua máquina.

Em sistemas Linux nem todo módulo é um driver de dispositivo. Recursos como a própria interface gráfica do computador podem ser tratadas por meio de módulos. Se um computador é um servidor, por exemplo, ele não precisará de interface gráfica para ser utilizado.

Quando os computadores possuem dispositivos "genéricos" distintos, é necessário versões distintas de kernel. Usemos como exemplo um celular destes bem modernos. Ele possui um sistema operacional, porém seu teclado não é igual ao de um computador, ele não tem HD, não tem mouse, não podemos chamar seu visor de monitor. Isto significa que o kernel de seu computador não irá funcionar no seu celular. Sim, existem kernels específicos para vários tipos de computadores que vão desde um palmtop até computadores enormes chamados mainframes.

Fontes:

Um comentário:

Nicolas Melo disse...

Cara curti mt sua explicação. Estou fazendo um trabalho sobre Kernel e foi altamente explicativo ;)