Skip to content

O que é o kernel do Linux?

16 de abril de 2021

Para usuários casuais e fãs menos que hardcore, o Linux é um sistema operacional. Para os puristas, no entanto, o título Linux está reservado para o kernel que alimenta o sistema operacional.

Modos

Antes de explicarmos o que é um kernel, é importante entender os termos modo de usuário e modo kernel. O modo de usuário é quando a execução do código não tem capacidade de acessar diretamente o hardware ou a memória de referência. Para obter acesso ao hardware e à memória, o código em execução no modo de usuário deve delegar instruções às interfaces de programação de aplicativos do sistema. O modo kernel ocorre quando o código em execução tem acesso irrestrito a todo o hardware – é reservado para as funções mais confiáveis ​​de um sistema operacional.

O que é um kernel?

Todo sistema operacional possui um kernel. Windows, macOS, iOS, Android, Chrome OS e Linux têm, cada um, um sistema de baixo nível que é responsável por fazer a interface de todos os aplicativos com o hardware físico do computador. Sem o kernel, nenhum de seus aplicativos seria capaz de fazer uso do computador físico; aplicativos como Firefox, Chrome, LibreOffice ou Outlook não funcionariam. O kernel também é responsável por permitir que os processos troquem informações usando o que é chamado de comunicação entre processos. Existem (em geral) três tipos de grãos:

  • Kernels monolíticos: Esses kernels abrangem a CPU, memória, IPC, drivers de dispositivo, gerenciamento do sistema de arquivos e chamadas do servidor do sistema. Também é responsável por distribuir memória livre do sistema para aplicativos. Esses tipos de kernels são normalmente melhores no acesso a hardware e multitarefa.
  • Microkernels: Os microkernels têm uma abordagem minimalista e gerenciam apenas a CPU, a memória e o IPC.
  • Kernels híbridos: Kernels híbridos têm a capacidade de decidir o que desejam executar no modo de usuário ou no modo de kernel. Embora isso forneça o melhor dos dois mundos, exige muito mais dos fabricantes de hardware para criar drivers que sirvam para fazer a interface entre o código em execução e o hardware.

O Linux usa um kernel monolítico de código-fonte aberto, enquanto o macOS e o Windows usam Kernels híbridos. O kernel Linux foi concebido em 1991 por Linus Torvalds. Até hoje, Torvalds continua a ser o desenvolvedor líder no kernel do Linux, enquanto desenvolvedores de todo o mundo contribuem para o kernel do Linux. Na verdade, estima-se que cerca de 10.000 desenvolvedores, de mais de 1.000 empresas, contribuíram para o kernel do Linux desde o início do rastreamento em 2005.

Onde está o kernel?

Se você abrir uma janela de terminal e emitir o comando ls / boot, você verá um arquivo chamado vmlinuz-VERSION (Onde VERSION é o nome ou número do lançamento). O arquivo vmlinuz é o kernel Linux inicializável real, e o z indica que o kernel está compactado – então, em vez de vmlinux temos vmlinuz.

A listagem do diretório / boot.

Nesse diretório / boot estão outros arquivos de kernel importantes, como initrd.img-VERSION, system.map-VERSION e config-VERSION (onde VERSION é um nome ou número de versão). Esses outros arquivos têm as seguintes finalidades:

  • initrd: Usado como um pequeno RAMdisk que extrai e executa o arquivo de kernel real.
  • system.map: Usado para gerenciamento de memória, antes do carregamento do kernel.
  • config: Instrui o kernel sobre quais opções e módulos carregar.

Módulos

Sem módulos, o kernel não seria muito útil. Os módulos ativam com eficácia os drivers necessários para se comunicar com o hardware sem consumir toda a memória do sistema. Os módulos também adicionam funcionalidades ao kernel, como comunicação com periféricos, gerenciamento de sistemas de arquivos, segurança, etc. Liste, adicione e remova módulos do kernel com os seguintes comandos:

  • lsmod lista todos os módulos do kernel carregados atualmente.
  • insmod carrega um módulo do kernel no kernel em execução.
  • rmmod descarrega um módulo do kernel em execução.

Com a ajuda de alguns comandos simples, o kernel do Linux pode ser bastante flexível.

O Kernel Atual

Kernels Linux

kernel.org
O kernel do Linux é atualizado com freqüência, mas nem todas as distribuições do Linux incluirão o kernel mais recente. Você está livre para baixar diferentes versões do kernel do Linux em kernel.org e compilá-lo você mesmo. A compilação do kernel do Linux é uma tarefa que é melhor deixar para aqueles que realmente sabem o que estão fazendo. Um kernel compilado incorretamente pode tornar um sistema não inicializável. Portanto, a menos que você esteja pronto para mergulhar na desafiadora tarefa de compilar código neste nível, use o kernel padrão que vem e atualiza na distribuição de sua escolha.