O Kernel de um sistema operacional é entendido como o núcleo deste ou, numa tradução literal, cerne. Ele representa a camada de software mais próxima do hardware, sendo responsável por gerenciar os recursos do sistema computacional como um todo.
Funções do Kernel
A responsabilidade do kernel consiste, tradicionalmente (particularmente no kernel monolítico), em abstrair a interface do hardware, permitindo que processos utilizem este recurso concorrentemente, de forma segura e padronizada.
As funções normalmente atribuídas ao kernel são: (I) criação, agendamento e finalização de processos; (II) alocação e liberação de memória; (III) controle do sistema de arquivos; (IV) operações de entrada e saída com dispositivos periféricos (discos, interface ****** -- mouse, p.ex., interface paralela -- impressoras), acesso à memória, entre outros.
Em um computador, a parte central é a UCP (unidade central de processamento), normalmente um microprocessador -- no qual os processos são executados. A memória RAM é o outro recurso crucial do computador -- o conjunto de chips em que os programas são carregados para execução e no qual são armazenados os seus dados.
[editar] Chamadas de sistema
Ver artigo principal: Chamadas de sistema
Para que seja possível realizar algum trabalho útil, um programa no espaço do usuário deve ter acesso a todos os serviços disponibilizados pelo kernel. Esta implementação é diferente em cada kernel, mas deve disponibilizar uma API ao programa, que por sua vez invoca as funções do kernel relacionadas, seja através do sistema de IPC, memória compartilhada ou interrupções.
[editar] Arquitetura
Segundo Tanenbaum (1999) e Silberschatz e outros (2005), o kernel pode ser monolítico, em camadas, ou microkernel (também conhecido como modelo cliente-servidor).
[editar] Kernel monolítico
Diagrama de interação de um kernel monolítico (ou monobloco).
Ver artigo principal: Kernel monolítico
Kernel monolítico ou monobloco é um kernel que implementa uma interface de alto nível para possibilitar chamadas de sistema específicas para gestão de processos, concorrência e gestão de memória por parte de módulos dedicados que são executados com privilégios especiais. Alguns exemplos deste tipo de kernel: