Visão geral do sistema operacional Linux

O sistema operacional Linux é composto por três partes:

O kernel do Linux

Embora o kernel seja uma parte importante do Linux, ele sozinho não constitui o sistema GNU/Linux. O kernel é o “núcleo” do sistema e é responsável pelas funções de mais baixo nível, como o gerenciamento de memória, gerenciamento de processos e da CPU. O kernel também é o responsável pelo suporte aos sistemas de arquivos, dispositivos e periféricos conectados ao computador, como placas SCSI, placas de rede, de som, portas seriais, etc. É chamado Linux o conjunto do kernel e demais programas, como shells, compiladores, bibliotecas de funções, etc.

Alguns cuidados devem ser tomados ao se verificar que versão de Linux está sendo utilizada, porque o kernel possui um número de versão e a sua distribuição pode possuir outro. O número que identifica a versão da distribuição é decidido pela empresa responsável pela versão, de acordo com padrões próprios. Já o kernel possui um número de versão composto por 3 partes: um número maior, um número menor e um número de release, e este número é dado pelo grupo de programadores que cuidam do desenvolvimento do kernel. O número de série do seu kernel pode ser facilmente identificado digitando-se no prompt o comando uname -r, como no exemplo abaixo:

# uname -r 2.6.4-52200cl 

O exemplo diz que este kernel pertence a quarta release da série 2.6. Em alguns casos é adicionado também um número que identifica uma compilação feita por uma determinada distribuição (52200cl no exemplo, ou seja 48932ª compilação da distribuição Conectiva Linux). O número menor é particularmente importante, pois números pares identificam versões de kernel testadas e consideradas estáveis, enquanto que números ímpares identificam versões de desenvolvimento, onde novos recursos estão sendo testados.

O kernel do Linux pode ser compilado[6] para se adequar melhor ao tipo de máquina e ao tipo de tarefa que essa máquina vai executar. Por exemplo, se o servidor precisa se comunicar com outras máquinas usando o protocolo IPX, o administrador poderá compilar o kernel com suporte a esse protocolo, ou, se não houver necessidade de usar um determinado tipo de placa de rede, é possível compilar o kernel sem suporte a essa placa, resultando assim em um kernel de menor tamanho.

O kernel do Conectiva Linux foi compilado para atender os mais diversos tipos de necessidades e de máquinas, além do mais, é possível incluir novos recursos sem a necessidade de compilar novamente o kernel, através do uso de módulos. O processo de compilação de um kernel não é muito simples e é recomendado apenas a administradores de sistemas mais experientes. Para saber como se compila um kernel consulte o documento Guia de recompilação do kernel.

Aplicações do Sistema

O kernel faz muito pouco sozinho, uma vez que ele só provê os recursos que são necessários para que outros programas sejam executados. Logo, é necessária a utilização de outros programas para implementar os vários serviços necessários ao sistema operacional.

Do “ponto de vista” do kernel, as aplicações do sistema, bem como qualquer outro programa, rodam no que é chamado “modo usuário”, logo, a diferença entre aplicações de sistema e aplicações do usuário se dá pelo propósito de cada aplicação. Aplicações do sistema são necessárias para fazer o sistema funcionar, enquanto as aplicações do usuário são todos programas utilizados pelo usuário para realizar uma determinada tarefa (como um processador de texto, por exemplo).

Entre as aplicações de sistema pode-se citar o init, o getty e o syslog.

O init é o primeiro processo lançado após o carregamento do kernel na memória, e é ele o responsável por continuar o processo de boot lançando os outros programas. É o init o responsável, também, por garantir que o getty esteja sendo executado (para que os usuários possam entrar no sistema) e por adotar processos órfãos (processos filhos no qual o pai morreu), pois no Linux todos os processos devem estar em uma mesma árvore, e possuírem um pai (excluindo o processo init, que não tem pai).

O getty provê o serviço responsável pelo login dos usuários em terminais textos (virtuais ou não). É ele que lê o nome do usuário e a senha e chama o programa login[7] para validá-los; caso estejam corretos é lançado um shell, caso contrário o processo todo é reiniciado.

O syslog é responsável por capturar as mensagens de erro geradas pelo kernel ou por outras aplicações de sistema, e por mostrá-las posteriormente quando o administrador do sistema solicitá-las.

Aplicações do usuário

As aplicações do usuário são todas aquelas utilizadas pelo usuário para executar uma determinada tarefa. Editores de texto, editores de imagens, navegadores e leitores de e-mail se encaixam nessa categoria.

O ambiente gráfico

No Linux a responsabilidade pelo ambiente gráfico não é do kernel e sim de um programa especial, o XFree86. No entanto, este programa provê apenas as funções de desenho de elementos gráficos e interação com a placa de vídeo. A interação final do usuário com a interface gráfica se dá através de programas gerenciadores de janelas, como o KDE, o WindowMaker e o GNOME, e são eles os responsáveis pela "aparência" do seu Linux.

A separação do ambiente gráfico do resto do sistema apresenta muitas vantagens. Como o ambiente gráfico consome recursos do sistema, é possível desativá-lo, principalmente em servidores, resultando assim em um melhor desempenho de outras aplicações, uma vez que a quantidade de processamento da CPU que seria utilizado para o XFree86, poderá ser utilizado para essas aplicações. Além do mais, o desenvolvimento do ambiente gráfico pode ocorrer de maneira independente ao do kernel.

O Linux também pode funcionar em modo texto. Nesse caso a interação com o usuário se dá por meio de um shell, como o Bash, que é capaz de interpretar e executar comandos digitados pelo usuário.



[6] Compilação é o processo de transformação de um código-fonte em um programa executável.

[7] O kernel não se envolve no processo de login. Tudo é feito por outros programas.