O que é Kernel no Sistema Operativo e quais são os vários tipos de Kernel?
Um Kernel é um programa de computador que é o coração e núcleo de um Sistema Operativo. Uma vez que o Sistema Operativo tem controlo sobre o sistema, o Kernel também tem controlo sobre tudo no sistema. É a parte mais importante de um Sistema Operativo. Sempre que um sistema inicia, o Kernel é o primeiro programa que é carregado após o carregador de arranque, porque o Kernel tem de tratar do resto do sistema para o Sistema Operativo. O Kernel permanece na memória até que o Sistema Operativo seja desligado.
O Kernel é responsável por tarefas de baixo nível, tais como gestão de disco, gestão de memória, gestão de tarefas, etc. Ele fornece uma interface entre o utilizador e os componentes de hardware do sistema. Quando um processo faz um pedido ao Kernel, então chama-se Chamada de Sistema.
Um Kernel é fornecido com um Espaço Kernel protegido que é uma área separada de memória e esta área não é acessível por outros programas de aplicação. Assim, o código do Kernel é carregado neste Espaço Protegido do Kernel. Para além disto, a memória utilizada por outras aplicações chama-se Espaço do Utilizador. Como estes são dois espaços diferentes na memória, a comunicação entre eles é um pouco mais lenta.
Funções de um Kernel
Funções de um Kernel:
- Acesso a recursos informáticos: Um Kernel pode aceder a vários recursos informáticos como a CPU, dispositivos de E/S e outros recursos. Actua como uma ponte entre o utilizador e os recursos do sistema.
- Gestão de Recursos: É dever de um Kernel partilhar os recursos entre vários processos de tal forma que haja um acesso uniforme aos recursos por cada processo.
- Gestão de Memória: Cada processo necessita de algum espaço de memória. Assim, a memória deve ser atribuída e desalocada para a sua execução. Toda esta gestão de memória é feita por um Kernel.
- Gestão de Dispositivos: Os dispositivos periféricos ligados no sistema são utilizados pelos processos. Assim, a atribuição destes dispositivos é gerida pelo Kernel.
Kernel Mode e User Mode
Há certas instruções que precisam de ser executadas apenas pelo Kernel. Assim, a CPU executa estas instruções apenas no Modo Kernel. Por exemplo, a gestão da memória deve ser feita apenas no Modo Kernel-Mode. Enquanto no Modo Utilizador, a CPU executa os processos que são dados pelo utilizador no Espaço do Utilizador.
Tipos de Kernel
Em geral, existem cinco tipos de Kernel. Eles são:
1. Kernels Monolíticos
Kernels Monolíticos são aqueles Kernels em que os serviços do utilizador e os serviços do kernel são implementados no mesmo espaço de memória, ou seja, memória diferente para serviços do utilizador e serviços do kernel não são utilizados neste caso. Ao fazê-lo, o tamanho do Kernel é aumentado e isto, por sua vez, aumenta o tamanho do Sistema Operacional. Como não há espaço separado para o Utilizador e Espaço do Kernel, a execução do processo será mais rápida em Kernels Monolíticos.
Vantagens:
- Proporciona agendamento de CPU, agendamento de memória, gestão de ficheiros apenas através de chamadas do Sistema.
- Execução do processo é rápida porque não há espaço de memória separado para o utilizador e kernel.
Desvantagens:
- Se algum serviço falhar, então leva à falha do sistema.
- Se novos serviços tiverem de ser adicionados, então todo o Sistema Operativo precisa de ser modificado.
- Se forem adicionados novos serviços, então pode ser facilmente adicionado.
- Desde que estejamos a utilizar o Espaço do Utilizador e o Espaço do Kernel separadamente, a comunicação entre estes pode reduzir o tempo global de execução.
2. Microkernel
Um Microkernel é diferente do Monolithic kernel porque num Microkernel, os serviços do utilizador e os serviços do kernel são implementados em espaços diferentes, ou seja, utilizamos o Espaço do Utilizador e o Espaço do Kernel no caso de Microkernels. Como estamos a utilizar o Espaço do Utilizador e o Espaço de Kernel separadamente, reduz o tamanho do Kernel e isto, por sua vez, reduz o tamanho do Sistema Operativo.
Como estamos a utilizar espaços diferentes para serviços de utilizador e serviço de kernel, a comunicação entre aplicação e serviços é feita com a ajuda de análise de mensagens e isto, por sua vez, reduz a velocidade de execução.
Vantagens:
Desvantagens:
3. Hybrid Kernel
A Hybrid Kernel é uma combinação de Monolithic Kernel e Microkernel. Faz uso da velocidade do Kernel Monolítico e da modularidade do Microkernel.
Hybrid kernels são micro núcleos que têm algum código “não essencial” no kernel-space para que o código corra mais rapidamente do que seria no espaço do utilizador. Assim, alguns serviços como a pilha de rede ou o sistema de ficheiros são executados no espaço do Kernel para reduzir a sobrecarga de desempenho, mas mesmo assim, executa o código do kernel como servidores no espaço do utilizador.
4. Nanokernel
Num Nanokrnel, como o nome sugere, todo o código do kernel é muito pequeno, ou seja, o código executado no modo privilegiado do hardware é muito pequeno. O termo nanokrnel é usado para descrever um kernel que suporta uma resolução de nanosegundo relógio.
5. Exokernel
Exokernel é um kernel do Sistema Operacional que é desenvolvido pelo paralelo MIT e pelo grupo Sistemas Operacionais Distribuídos. Neste tipo de kernel, a protecção dos recursos é separada da gestão e isto, por sua vez, resulta em permitir-nos realizar uma personalização específica da aplicação.
No Exokernel, a ideia não é implementar todas as abstracções. Mas a ideia é impor o menor número possível de abstracções e, ao fazê-lo, a abstracção deve ser utilizada apenas quando necessário. Assim, não haverá abstracção de força no Exokernel e esta é a característica que a torna diferente de um Kernel Monolítico e de um Microkernel. Mas a desvantagem disto é o desenho complexo. O design do Exokernel é muito complexo.
É isto para este blogue. Espero que tenha gostado deste blogue.