Kernel, Microkernel e Exokernel
Por: Juliana2017 • 21/9/2018 • 1.984 Palavras (8 Páginas) • 348 Visualizações
...
foi escrito no editor de texto Sublime Text 3. O compilador usado para testar o programa foi o GCC (GNU Compiler Collection). Todo o processo de escrita e compilação ocorreu num ambiente Linux (Ubuntu).
1.3. Organização do Relatório
O presente documento divide-se da seguinte forma :
No presente capítulo, apresentam-se algumas notas introdutórias;
No segundo capítulo, apresenta-se a pesquisa feita sobre o tema atribuído;
No terceiro capítulo, apresenta-se o código do programa e os testes do mesmo;
No quarto e último capítulo, apresenta-se a conclusão do trabalho.
2. Referencial Teórico
2.1. O que é o Kernel ?
Kernel é o componente central do Sistema Operativo da maioria dos computadores. Ele tem um papel muito importante para o funcionamento dos computadores, por ser a ligação entre o processamento de dados e programas.
É o grande responsável por fazer a ligação entre o hardware e o software do computador. O seu objectivo principal é gerir a máquina e fazer com que as aplicações possam ser executadas através dos recursos existentes no computador. Além disso, o kernel tem como responsabilidade garantir que a memória RAM seja utilizada do melhor modo possível para que assim não ofereça qualquer risco para o computador.
2.2. Como funciona o Kernel ?
O funcionamento não ocorre de forma simples, mas sim apresenta-se como um processo complexo, dependendo do tipo de kernel que a máquina possui.
Cada tipo de kernel funciona de uma forma específica, e para compreender como funcionam, é necessário compreender a natureza de cada um.
2.3. Tipos de Kernel
2.3.1. Kernel Monolítico (SOLARIS)
O kernel monolítico tem acesso total ao hardware, o que o permite controlar todos os dispositivos e todas as extensões conectados. Baseado na abstracção de dados, reside numa única zona de memória, é fácil de implementar e apresenta um bom desempenho. Contudo, é difícil de estender e alterar.
O Solaris é um sistema Unix que foi desenvolvido originalmente pela Sun Microsystems e hoje pertence à Oracle, que adquiriu a empresa no início de 2010. A versão 10 do Solaris era distribuída gratuitamente, mas após a aquisição pela Oracle, a licença de distribuição do sistema mudou, tornando-se bem mais restritiva.
Figura 2 - Arquitectura do SOLARIS 10
Recentemente, a Oracle disponibilizou uma versão beta do Oracle Solaris 11.3, que inclui algumas das novas funcionalidades dos Oracle Solaris Zones, tais como a migração segura, a reconfiguração e a inicialização em tempo real, adequada para Oracle Solaris Kernel Zones.
Figura 3 - Arquitectura do SOLARIS 11
O Oracle Solaris Zones inclui suporte para ambientes totalmente independentes e isolados denominados Oracle Solaris Kernel Zones, que fornecem um ambiente completo de kernel e de usuário dentro de uma zona. As zonas do kernel aumentam a flexibilidade operacional e são ideais para ambientes em que as janelas de manutenção são mais difíceis de programar. As zonas do kernel são de funcionamento independente do kernel global e podem ser actualizadas separadamente sem a necessidade de reinicializar a zona global. Também é possível usar zonas do kernel juntamente com o Oracle VM for SPARC para uma maior flexibilidade de virtualização.
2.3.2. Microkernel (UNIX e Windows)
Neste tipo de núcleo, alguns dos processos são executados no próprio núcleo, porém, o restante pode ser executado no espaço vago. Permite alternar dinamicamente entre sistemas operativos e manter mais de um deles activos simultaneamente.
Os erros ocorridos no espaço do utilizador não indisponibilizam o Sistema Operativo. Contudo, o núcleo não corre sozinho e há uma grande intercomunicação entre processos.
GNU Hurd é um micronúcleo multi-servidor escrito como parte do GNU, desenvolvido para substituir o Unix e publicado como software livre. O GNU Hurd consiste num conjunto de protocolos e processo de servidores (ou daemons, em terminologia Unix) que correm no microkernel GNU Mach.
O Hurd pretende ultrapassar os sistemas operativos Unix em funcionalidade, segurança, e estabilidade, enquanto se mantêm bastante compatível a eles. O projeto GNU escolheu para o sistema operativo a arquitetura microkernel servidor–cliente, ao notar ganhos sobre a arquitetura monolítica Unix.
Actualmente, consideram-se os kernels híbridos, que são semelhantes aos microkernels. Os híbridos são mais velozes que os microkernels, devido a mudanças no código do espaço do núcleo.
Exemplo de kernel híbrido é o Windows NT.
A razão pela qual Windows NT não é um sistema de microkernel é que quase todos os subsistemas que fornecem serviços de sistema, são executados em modo kernel, no mesmo espaço de endereçamento que o próprio microkernel, e não em processos de servidor em modo usuário.
Figura 7 - Arquitectura do Windows NT
2.3.3. Exokernel
Este tipo de núcleo aloca recursos físicos de hardware, podendo, por exemplo, fazer que um programa executado num exokernel possa conectar-se a uma biblioteca do sistema que também usa o exokernel para fazer simulações do sistema.
O funcionamento deste núcleo é semelhante ao de uma máquina virtual.
A idéia é permitir que o desenvolvedor tome todas as decisões relativas ao rendimento do hardware. Os exokernels são extremamente pequenos, já que sua função se limita à proteção e à multiplexação dos recursos.
Pelo fato do exokernel proporcionar uma interface de baixo nível ao hardware, carecendo de todas as funções de alto nível dos outros sistemas operacionais, ele é complementado por uma «biblioteca de sistema operacional». Esta biblioteca comunica com o exokernel e facilita o uso de aplicações comuns entre os sistemas operativos.
Uma das implicações teóricas de um sistema exokernel é que é possível ter distintos tipos de sistemas operacionais (Windows, Unix,
...