Skip to main content

O que é o kernel do Linux?

Ajuda Linux - Dia 756 - O que é Unix? (Pode 2025)

Ajuda Linux - Dia 756 - O que é Unix? (Pode 2025)
Anonim

Para usuários casuais e fãs menos do que hardcore, o Linux é um sistema operacional. Para os puristas, no entanto, o título "Linux" é reservado para o kernel que alimenta o sistema operacional. Se você está curioso para saber o que é o kernel do Linux, vamos responder a essa pergunta de olho no novo usuário.

Modos

Antes de explicar o que é um kernel, é importante entender os termos "modo de usuário" e "modo de 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 Aplicativo (APIs) do sistema. Modo Kernel é quando a execução de código tem acesso irrestrito a todo o hardware e é reservada 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, SO Chrome e Linux têm, cada um, um sistema de baixo nível que é responsável pela interface de todas as aplicações com o hardware físico do computador. Sem o kernel, nenhum dos seus aplicativos seria capaz de usar o computador físico; Aplicativos como Firefox, Chrome, LibreOffice, MS Office ou Outlook não funcionariam. O kernel também é responsável por permitir que os processos troquem informações usando o que é chamado Comunicação entre Processos (IPC).

Existem (geralmente falando) três tipos de kernels:

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

O Linux usa um código aberto, o Kernel Monolítico, enquanto o MacOS e o Windows usam Kernels Híbridos. O kernel do Linux foi concebido em 1991 por Linus Torvalds. Até hoje, o Sr. Torvalds continua a ser o desenvolvedor líder no kernel 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, tenham contribuído para o kernel do Linux (desde que o rastreamento começou 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 da versão). O arquivo vmlinuz é o atual kernel Linux inicializável, e o “z” indica que o kernel está compactado; então ao invés de vmlinux temos vmlinuz.

Dentro desse diretório / boot existem outros arquivos importantes do kernel, como initrd.img-VERSION, system.map-VERSION e config-VERSION (onde VERSION é um nome ou um número de release). Esses outros arquivos servem aos seguintes propósitos:

  • initrd: usado como um pequeno disco RAM que extrai e executa o arquivo real do kernel.
  • 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 efetivamente os drivers necessários para se comunicar com o hardware sem consumir toda a memória do sistema. Os módulos também adicionam funcionalidade ao kernel, como comunicação com periféricos, gerenciamento de sistemas de arquivos, segurança, etc. É possível listar, adicionar e remover módulos para o kernel com os seguintes comandos:

  • lsmod listará todos os módulos do kernel atualmente carregados.
  • insmod carregará um módulo do kernel no kernel em execução.
  • rmmod irá descarregar um módulo do kernel em execução.

Então você vê, com a ajuda de alguns comandos simples, o kernel do Linux pode ser bastante flexível.

O Kernel Atual

No momento desta publicação, o kernel estável do Linux é o 4.18.5, mas nem todas as distribuições do Linux incluirão o kernel mais recente. Na verdade, a distribuição atualizada da área de trabalho do Elementary OS executa o kernel 4.15.0-30. O que esse número significa? No caso do kernel mais recente no Elementary OS, isso significa:

  • 4 é a versão principal
  • 15 é a versão menor
  • 0-30 é a revisão

Também é possível fazer o download de diferentes versões do kernel Linux do kernel.org e compilá-lo você mesmo. A compilação do kernel do Linux é uma tarefa que deve ser deixada para aqueles que realmente sabem o que estão fazendo. Um kernel compilado incorretamente pode tornar um sistema não inicializável. Então, a menos que você esteja pronto para mergulhar na desafiadora tarefa de compilar código neste nível, use o kernel padrão que é enviado e atualizado na sua distribuição de escolha.