Esse assunto é primordial para você se tornar um programador ou uma programadora mais eficiente. Saber como o sistema operacional funciona, é pré requisito, sobretudo saber sobre o Kernel. Saber como o Kernel gerencia uma máquina e como ele faz com que os aplicativos possam ser executados através dos recursos existentes no computador, é elementar. Para que esse artigo faça sentido, sugiro que você veja o artigo “Você já parou para entender o que é um sistema operacional?”.
Onde fica esse tal de Kernel?
A essa altura você já sabe que um computador é basicamente dividido em duas camadas: hardware e software. O “bendito” Kernel fica no meio, entre o hardware e o software, dando a dinâmica de integração entre eles. Por esse aspecto, também chamamos o Kernel de núcleo.
Uma coisa interessante que poucos sabem é que é no Kernel que estão definidas funções para operação com periféricos (mouse, teclado, caixa de som, impressoras), gerenciamento de memória, entre outros recursos.
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 todos os softwares com o hardware físico do computador. Sem o kernel, nenhum dos seus aplicativos seriam capazes de usar o computador físico; aplicativos como Firefox, Chrome, LibreOffice, MS Office ou Outlook não funcionam. O kernel também é responsável por permitir que os processos troquem informações usando o que é chamado Comunicação entre Processos (IPC).
Tipos de Kernel existentes
Existem 5 tipos diferentes de Kernel atualmente, são eles:
Kernel Monolítico
Neste tipo, todos os serviços do sistema operacional funcionam em simultâneo com a linha de execução principal do mesmo, encontrando-se também na mesma área de memória. Isso gera uma pequena desvantagem porque gera dependência entre todos os componentes do sistema, ou seja, se um driver falhar, pode comprometer todo o sistema.
Exemplos de monolíticos: BSD, MS-DOS e Solaris.
Microkernel
O microkernel também chamado de micronúcleo, é uma arquitetura de um sistema operativo cujas funcionalidades são quase todas executadas fora do núcleo, ao contrário do Kernel monolítico. Em outras palavras, o monolítico tenta colocar todas as funções principais do sistema operacional dentro do kernel, dentro de um processo especial que tem diversos privilégios, o microkernel tenta colocar só o necessário e deixar tudo o que não precisa estar no núcleo central como serviços auxiliares em processos diferentes e sem privilégios especiais.
Exemplos de micronúcleos: AIX, BeOS, L4, Mach, Minix, MorphOS, QNX, RADIOS, VSTa e GNU Hurd.
Híbrido
São um meio-termo que utiliza tanto partes de um núcleo monolítico como de um micronúcleo, de forma a conseguir executar ao mesmo tempo, serviços como ler sistemas de arquivos ou redes, sem que haja impacto na performance, enquanto executa o código no kernel.
Exemplos de híbridos: AmigaOS, Android, Chrome, Macintosh, webOS, Windows, OSX e Xinu.
Nanonúcleo
Um nanonúcleo ou nanokernel, delega virtualmente todos os serviços — incluindo até os mais básicos como controlador de interrupções ou o temporizador (Calma! Futuramente vou explicar sobre isso kkkk) — para drivers de dispositivo para tornar o requerimento de memória do núcleo ainda menor do que o dos tradicionais.
Exemplos de nanonúcleo: Symbian OS
Exonúcleo
O exonúcleo ou exokernel, permite colocar os recursos físicos de hardware a rodar em diferentes programas de modo a conseguir simular abstrações em um sistema operativo ou desenvolver a própria abstração de modo a dar ao aplicativo um melhor desempenho. Em outras palavras, no exonúcleo o kernel acaba se tornando somente uma aplicação, a que é responsável pela segurança do sistema. O gerenciamento do hardware acaba sendo feito pelos próprios aplicativos. A ideia é permitir que o desenvolvedor tome todas as decisões relativas ao rendimento do hardware.
Exemplos de exonúcleo: LibOS e ExOS
Como é o funcionamento do Kernel?
Quando ligamos o computador, o kernel é acionado e ele começa a detectar todo o hardware que ele possui e o que precisa para funcionar. Após o carregamento, o núcleo assume outras funções: gerenciar os processos, os arquivos, a memória e os dispositivos periféricos, fazendo com que ele seja o “orquestrador” de tudo o que acontece na máquina.
É importante você saber que a parte crítica do código do Kernel é normalmente carregada em uma área separada da memória a qual é protegida de ser acessada pelos programas ou outras partes menos críticas do sistema operacional.
Fizemos aqui um resumo do resumo sobre Kernel. O principal foco é mostrar para você que existe um e o que ele faz. Acredito que essa base é suficiente para você expandir um pouco mais sua mente sobre a responsabilidade que você deve ter na construção dos seus programas. Como programador, é importante você saber sobre essas partes do sistema. Repetindo, saber sobre esses conceitos são parte fundamental para seu crescimento profissional.
Kernel nosso de cada dia
É isso aí!!! Você vai se deparar bastante com essa temática. Provavelmente, você vai ver muito conteúdo a respeito do Kernel do Linux. Como já foi dito, o Linux adota a tecnologia de kernel monolítico, ou seja, um bloco único onde estão compilados todos os serviços disponibilizados pelo sistema. O usuário interage com o kernel através de um shell (interpretador de comandos) ou de um ambiente operacional gráfico. Utilizando o shell, você escreve comandos em uma tela e esses comandos são interpretados e executam alguma ação dentro do sistema. É muito legal esse assunto!!! É um recurso muito utilizado por programadores! Pegando o gancho, esse será o tema do próximo artigo. Até lá!
Confiança Sempre!!!
Fontes:
Seja o primeiro a comentar