O que é Kernel de um Sistema Operacional?
O kernel é a parte principal de um sistema operacional responsável por interagir com o hardware, incluindo o gerenciamento de recursos físicos como tempo de CPU e memória RAM. Ou seja, tudo que qualquer programa faz em um computador precisa passar pelo kernel.
O kernel não é a única parte de um sistema operacional completo. Para utilizarmos os programas do kernel, usaríamos uma interface chamada de shell. Em Inglês, kernel significa "núcleo" e shell significa "casca," ou seja, o shell é a camada exterior do sistema, enquanto o kernel é a parte interior.
Em sistemas Linux, como o Ubuntu, o Linux é o kernel, e o termo shell refere geralmente refere a um interpretador de comandos de terminal (um shell Unix), geralmente o bash da GNU(veja: GNU/Linux). No Windows, por ser um sistema operacional de desktop completo com interface gráfica, o termo shell refere a interface gráfica do sistema, incluindo a barra de tarefas, por exemplo. Em ambos casos, seria possível instalar um shell diferente do instalado por padrão.
Sistemas complexos possuem vários níveis de acesso para programas rodando no computador. Programas ao nível do kernel (chamados de kernel space, "espaço do kernel") possuem acesso irrestrito à máquina. Aplicativos são considerados user space, "espaço de usuário," ou userland, "território de usuário," e seu acesso às partes físicas precisa passar pelo kernel (ou outros níveis inferiores), e com isso pode ser vetado. Isso significa, por exemplo, que programas anti-vírus precisariam de acesso elevado ao sistema, pois aplicativos normais precisariam passar por eles. Note que até aplicativos incluídos por padrão no sistema operacional podem ser userland. Por exemplo, um gerenciador de arquivos que exibe pastas e arquivos é um aplicativo essencial para operar um computador, porém tal programa não precisa de acesso direto ao hardware. Em vez disso, o programa perguntaria para o sistema quais arquivos estão contidos dentro de uma pasta, por exemplo, e sistema usaria seu acesso ao hardware para verificar essa informação e passá-la de volta para o aplicativo.
Alguns programas que fazer parte dos níveis inferiores do sistema são programas necessários para a comunicação com peças de hardware (chamados de drivers) e programas que ficam executando no plano de fundo (chamados de daemons). Nem sempre esse tipo de programa precisa estar em níveis inferiores.
Devido ao acesso elevado do kernel, é importante que não hajam erros ou vulnerabilidades de segurança em seus programas, pois esses erros podem danificar peças de hardware e causar perda de dados. Um problema seriam programas que necessitam de acesso elevado pois seu propósito principal é obter mais poder sobre a máquina que o usuário humano operando a máquina. Um exemplo beneficial seria um anti-vírus que impede que o usuário execute um vírus. Para impedí-lo, o anti-vírus precisa ter mais poder que o usuário. Porém, caso haja uma vulnerabilidade no anti-vírus em si, seria possível para um programa malicioso (malware) usar essa vulnerabilidade para ganhar acesso a partes privilegiadas do sistema. Outro exemplo são sistemas de DRM e anti-trapaça (anti-cheat) frequentemente instalados durante a instalação de jogos. Se um sistema anti-trapaça precisa de acesso a nível de kernel, e o sistema possuir uma vulnerabilidade, malware pode usar falhas no anti-cheat instalado para infiltrar no sistema, por exemplo.
Deixe um comentário