Na ciência da computação, Kernel é um programa de computador que é o núcleo ou coração de um sistema operacional. Antes de discutir o kernel em detalhes, vamos primeiro entender seu básico, ou seja, o sistema operacional em um computador.
Sistema operacional
Um sistema operacional ou SO é um software de sistema que funciona como uma interface entre os componentes de hardware e o usuário final. Ele permite que outros programas sejam executados. Cada sistema de computador, seja desktop, laptop, tablet ou smartphone, deve ter um sistema operacional para fornecer funcionalidades básicas ao dispositivo. Alguns sistemas operacionais amplamente utilizados são janelas , Linux , MacOS, Android, iOS, etc.
O que é Kernel no sistema operacional?
- Conforme discutido acima, o Kernel é a parte central de um sistema operacional (sistema operacional); portanto, ele tem controle total sobre tudo no sistema. Cada operação de hardware e software é gerenciada e administrada pelo kernel.
- Ele atua como uma ponte entre os aplicativos e o processamento de dados feito no nível do hardware. É o componente central de um sistema operacional.
- É a parte do sistema operacional que sempre reside na memória do computador e permite a comunicação entre componentes de software e hardware.
- É o programa de computador que foi carregado pela primeira vez na inicialização do sistema (após o bootloader). Depois de carregado, ele gerencia as inicializações restantes. Ele também gerencia solicitações de memória, periféricos e E/S de software. Além disso, traduz todas as solicitações de E/S em instruções de processamento de dados para a CPU. Ele gerencia outras tarefas também como como gerenciamento de memória, gerenciamento de tarefas e gerenciamento de disco .
- Um kernel é mantido e normalmente carregado em um espaço de memória separado, conhecido como espaço protegido do Kernel. Ele está protegido contra acesso por programas aplicativos ou partes menos importantes do sistema operacional.
- Outros programas aplicativos, como navegador, processador de texto, reprodutor de áudio e vídeo, usam espaço de memória separado, conhecido como espaço do usuário.
- Devido a esses dois espaços separados, os dados do usuário e os dados do kernel não interferem entre si e não causam instabilidade e lentidão.
Funções de um Kernel
O kernel de um sistema operacional é responsável por executar diversas funções e ter controle sobre o sistema. Algumas responsabilidades principais do Kernel são fornecidas abaixo:
Para realizar diversas ações, os processos requerem acesso a dispositivos periféricos, como mouse, teclado, etc., que estão conectados ao computador. Um kernel é responsável por controlar esses dispositivos usando drivers de dispositivos. Aqui um driver do dispositivo é um programa de computador que ajuda ou permite que o sistema operacional se comunique com qualquer dispositivo de hardware.
Um kernel mantém uma lista de todos os dispositivos disponíveis, e esta lista pode já ser conhecida, configurada pelo usuário ou detectada pelo sistema operacional em tempo de execução.
O kernel tem controle total para acessar a memória do computador. Cada processo requer alguma memória para funcionar, e o kernel permite que os processos acessem a memória com segurança. Para alocar a memória, o primeiro passo é conhecido como endereçamento virtual, o que é feito por paginação ou segmentação. Endereçamento virtual é um processo de fornecimento de espaços de endereço virtuais aos processos. Isso evita que os aplicativos colidam entre si.
Uma das funcionalidades importantes do Kernel é compartilhar os recursos entre vários processos. Deve compartilhar os recursos de forma que cada processo acesse o recurso de maneira uniforme.
O kernel também fornece uma maneira de sincronização e comunicação entre processos (IPC). É responsável pela alternância de contexto entre processos.
Um kernel é responsável por acessar recursos do computador, como RAM e dispositivos de E/S. RAM ou memória de acesso aleatório é usado para conter dados e instruções. Cada programa precisa acessar a memória para ser executado e principalmente deseja mais memória do que a disponível. Nesse caso, o Kernel desempenha seu papel e decide qual memória cada processo utilizará e o que fazer se a memória necessária não estiver disponível.
O kernel também aloca a solicitação de aplicativos para usar dispositivos de E/S, como teclados, microfones, impressoras, etc.
Tipos de kernel
Existem basicamente cinco tipos de Kernel, que são fornecidos abaixo:
1. Núcleos Monolíticos
Em um kernel monolítico, o o mesmo espaço de memória é usado para implementar serviços de usuário e serviços de kernel.
Isso significa que neste tipo de kernel não há memória diferente usada para serviços de usuário e serviços de kernel.
Como utiliza o mesmo espaço de memória, o tamanho do kernel aumenta, aumentando o tamanho geral do sistema operacional.
A execução de processos também é mais rápida do que outros tipos de kernel, pois não usa espaço separado para usuário e kernel.
Exemplos de Kernels Monolíticos são Unix, Linux, Open VMS, XTS-400, etc.
Vantagens:
- A execução de processos também é mais rápida, pois não há espaço de usuário e espaço de kernel separados e há menos software envolvido.
- Por se tratar de um software único, suas fontes e formulários compilados são menores.
Desvantagens:
- Se algum serviço gerar algum erro, poderá travar todo o sistema.
- Esses kernels não são portáveis, o que significa que para cada nova arquitetura eles devem ser reescritos.
- Grandes em tamanho e, portanto, tornam-se difíceis de gerenciar.
- Para adicionar um novo serviço, todo o sistema operacional precisa ser modificado.
2. Micronúcleo
Um microkernel também é conhecido como MK , e é diferente de um kernel tradicional ou kernel monolítico. Nisso, serviços de usuário e serviços de kernel são implementados em dois espaços de endereço diferentes: espaço de usuário e espaço de kernel . Por utilizar espaços diferentes para ambos os serviços, o tamanho do microkernel é diminuído, o que também reduz o tamanho do SO.
Microkernels são mais fáceis de gerenciar e manter em comparação com kernels monolíticos. Ainda assim, se houver um número maior de chamadas de sistema e troca de contexto, isso poderá reduzir o desempenho do sistema, tornando-o lento.
Esses kernels usam um sistema de passagem de mensagens para lidar com a solicitação de um servidor para outro.
Apenas alguns serviços essenciais são fornecidos por microkernels, como definição de espaços de endereço de memória, IPC (Comunicação entre processos) e gerenciamento de processos. Outros serviços, como rede, não são fornecidos pelo Kernel e são gerenciados por um programa de espaço do usuário conhecido como servidores .
cpld versus fpga
Uma das principais desvantagens dos kernels monolíticos é que um erro no kernel pode travar todo o sistema e pode ser removido no microkernel. Como em um microkernel, se um processo do kernel travar, o travamento de todo o sistema ainda poderá ser evitado reiniciando os serviços causados pelo erro.
Exemplos do Microkernel são L4, Amiga OS, Minix, K42 , etc.
Vantagens
- Microkernels podem ser gerenciados facilmente.
- Um novo serviço pode ser facilmente adicionado sem modificar todo o sistema operacional.
- Em um microkernel, se um processo do kernel travar, ainda é possível evitar que todo o sistema trave.
Desvantagens
- Há mais requisitos de software para interface, o que reduz o desempenho do sistema.
- O gerenciamento de processos é muito complicado.
- Os bugs de mensagens são difíceis de corrigir.
3. Kernel Híbrido
Kernels híbridos também são conhecidos como núcleos modulares , e é a combinação de Monolítico e Microkernels. Aproveita a velocidade dos kernels monolíticos e a modularidade dos microkernels.
Um kernel híbrido pode ser entendido como a versão estendida de um microkernel com propriedades adicionais de um kernel monolítico. Esses kernels são amplamente utilizados em sistemas operacionais comerciais, como diferentes versões do MS Windows.
js definir tempo limite
É muito semelhante a um microkernel, mas também inclui algum código adicional no espaço do kernel para melhorar o desempenho do sistema.
Kernels híbridos permitem executar alguns serviços como pilha de rede no espaço do kernel para reduzir o desempenho em comparação com um microkernel tradicional, mas ainda permite executar código do kernel (como drivers de dispositivo) como servidores no espaço do usuário.
Exemplos de Kernel Híbrido são Windows NT, Netware, BeOS, etc.
Vantagens:
- Não há necessidade de reinicialização para teste.
- A tecnologia de terceiros pode ser integrada rapidamente.
Desvantagens:
- Existe a possibilidade de mais bugs com mais interfaces para passar.
- Pode ser uma tarefa confusa manter os módulos para alguns administradores, especialmente quando se trata de questões como diferenças de símbolos.
4. Nanonúcleo
Como o nome sugere, no Nanokernel, o código completo do kernel é muito pequeno, o que significa que o código executado no modo privilegiado do hardware é muito pequeno . Aqui, o termo nano define um kernel que suporta uma resolução de clock de nanossegundos.
Exemplos de nanonúcleo são EROS etc.
Vantagens
- Ele fornece abstrações de hardware mesmo com um tamanho muito pequeno.
Desvantagens
- Nanokernel carece de serviços de sistema.
5. Exokernel
Exokernel ainda está em desenvolvimento e é a abordagem experimental para projetar sistemas operacionais.
Este tipo de kernel é diferente de outros kernels como neste; a proteção de recursos é mantida separada do gerenciamento, o que nos permite realizar customizações específicas da aplicação.
Vantagens:
- O sistema baseado em exokernel pode incorporar vários sistemas operacionais de biblioteca. Cada biblioteca exporta uma API diferente, uma pode ser usada para desenvolvimento de UI de alto nível e a outra pode ser usada para controle em tempo real .
Desvantagens:
- O design do exokernel é muito complexo.
O que é pânico do kernel?
Como já discutimos, esse kernel controla todo o sistema do computador; portanto, se travar, pode derrubar todo o sistema. No MacOS e no Linux, esse evento indesejável é conhecido como ' Pânico do Kernel.' Para recuperar do kernel Panic, precisamos reiniciar o sistema.
Normalmente, esses kernel panics são causados por problemas de comunicação de hardware. Portanto, se ocorrerem pânicos repetidos no kernel, tente desconectar os dispositivos menos necessários ou desnecessários e verifique se o problema foi resolvido ou não.