Entendendo o que é kernel
Kernel é núcleo do computador, presente em diversos sistemas operacionais, concebido e implementado de formas diferentes para cada um. Sua função é gerenciar os recursos do sistema e a forma como estes são acessados. O kernel faz uma ponte entre as camadas de software e hardware, podendo impor determinadas abstrações entre essas partes, assim protegendo também o computador de acessos indevidos a memória e instruções privilegiadas.
Especificando os recursos gerenciados pelo Kernel:
• Unidade Central de Processamento (CPU): O Kernel define qual deve ser a ordem de execução de diversos programas, por um ou vários processadores.
• Memória: O kernel carrega o código do aplicativo, define o espaço de memória que o processo pode utilizar e em que período e cria uma fila de execução de acordo com determinados critérios.
• Entradas e saídas (I/O): Ele deve gerenciar as entradas de saídas de equipamentos como mouse, teclado, impressora, e conseguir a comunicação tornando o equipamento portável para diversos sistemas operacionais. Essa comunicação é feita entre através de drivers pré instalados.
Exo Kernel
Como vimos anteriormente o kernel cria um nível alto de abstrações entre o hardware e o software, isso visando tornar o sistema o mais generalizado possível, fornecendo todas as funcionalidades necessárias para todas as aplicações. Porém isso torna limitado a desempenho e a liberdade de implementação das aplicações, pensando nisso foi um criado um novo conceito, o Exo kernel, sua teoria é deixar que o kernel aloque os aplicativos em baixo nível e garantindo que as bibliotecas do SO não entrem em conflito, enquanto as bibliotecas do sistema operacional, realizam a implementação de abstrações de mais alto nível e podem definir implementações especiais para melhorar a funcionalidade e performance das aplicações