O que é Kernel no Sistema Operativo e quais são os vários tipos de Kernel?

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.

    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:

    • Se forem adicionados novos serviços, então pode ser facilmente adicionado.

    Desvantagens:

    • 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.

    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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *