6
Uma breve introdução aos tipos de projetos de kernels Licença Introdução Kernels Monolíticos Vantagens Desvantagens Exemplos de Kernels Monolítico Microkernels Vantagens Desvantagens Exemplos de Microkernels Exokernels Vantagens Desvantagens Exemplos de Exokernels Referências

Kernel

  • Upload
    guitto1

  • View
    30

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Kernel

Uma breve introdução aos tipos de projetos de kernels

LicençaIntroduçãoKernels Monolíticos

VantagensDesvantagensExemplos de Kernels Monolítico

MicrokernelsVantagensDesvantagensExemplos de Microkernels

ExokernelsVantagensDesvantagensExemplos de Exokernels

Referências

Page 2: Kernel

Licença

Este documento pode ser usado livremente desde que seja mantido os créditos e haja uma notificação ao autor. Este documento foi escrito por Geraldo Netto ([email protected]) e revisado pelo Prof. Ms. Alexander Luz Sperandio e pela Profa. Ms. Ana Cláudia Madaleno.

Introdução

Este artigo tem por objetivo mostrar algumas formas de como projetar kernels. É importante observar que este artigo não cobre integralmente o tópico.

Primeiramente devemos rever alguns conceitos, O que é um kernel? Um kernel é um software que faz a interface entre o hardware (parte física do computador) e as aplicações (programas como Internet Explorer, Word, Excel) como mostrado abaixo:

Estrutura básica de um computador

É importante notar que em algums sistemas operacionais o kernel não é tão visível, este é o caso dos Windows, MacOS X, entre outros sistemas que mostram um ambiente operacional gráfico para o usuário, ocultando informações técnicas no momento da inicialização (boot). Em outros casos o kernel é mais visível para o usuário, como o MS-DOS, Linux, FreeBSD, entre outros.

Page 3: Kernel

Kernels Monolíticos

Os kernels monolíticos são aqueles que contém todos os sub-sistemas (serviços fornecidos pelo kernel, como por exemplo um sistema de arquivos) em um único executável binário. Andrew S. Tanenbaum os define como “A grande bagunça”. É verdade, drivers, serviços e tudo mais estão contidos neste mesmo binário. Esta é a forma mais comum de kernel. Como pode ser observado no gráfico abaixo, o kernel monolítico é um bloco único que normalmente permite o acesso em nível de usuário aos seus sub-sistemas através de um shell (interpretador de comandos) ou ainda em um ambiente operacional gráfico.

Topologia de um Kernel Monolítico

Vantagens

● Normalmente um kernel monolítico tem um desempenho melhor que outras formas de desenho de kernel

Desvantagens

● Um kernel monolítico tende a ser inseguro pois há um livre acesso a todas as funções de todos os sub-sistemas

● A manutenção do kernel em nível de programação é muito prejudicada pois o kernel deve ser recompilado e substituido por completo para ter acesso a um novo recurso do kernel

Exemplos de Kernels Monolíticos

São exemplos de kernels monolíticos: FreeDOS, MS-DOS, Unixes antigos, Linux (quando compilados como kernel monolítico), ModulOS, entre outros.

Page 4: Kernel

Microkernels

Os microkernels são kernels que tem um “framework” básico que através de troca de mensagens, “conversa” como os sub-sistemas que estão em nível de usuário, funcionando como programas normais. Por exemplo, o sub-sistema que implementa um sistema de arquivos é executado comocomo se fosse um programa qualquer.

Topologia de um Microkernel

Vantagens

● Os microkernels são modulares, cada sub-sistema do microkernel funciona como plug-ins e por isso o microkernel é extremamente flexível

● Há também a vantagem de um microkernel também pode ter um executável binário menor que um kernel monolítico por que o microkernel permite a utilização plug-ins que podem ser usados de acordo com as necessidades do projeto

Desvantagens

● Os microkernels tem um desempenho menor comparado com um kernel monolítico justamente pelo fato de fazer um uso mmuito intenso de troca de mensagens

Exemplos de Microkernels

Os principais exemplos de microkernels são: OpenSolaris, Windows NT (incluindo Windows 2000, Windows XP e Windows 2003), QNX, Fiasco, L4, Minix.

Page 5: Kernel

Exokernels

Os exokernels são ainda mais radicais, a idéia é criar a menor camada de kernel expondo o hardware e dar o controle aos outros sistemas que rodaram na camada imediatamente superior.

Topologia de um Exokernel

Vantagens

● Os exokernels permitem ter vários sistemas em paralelo, atualmente o exokernel tem sido explorado em sistemas de virtualização de sistemas operacionais completos como é o caso do XEN. Na realidade, como podemos notar, o exokernel traz um conceito muito parecido com o microkernel, o que nos permite concluir que o exokernel é um microkernel que ao invés de ter sub-sistemas em nível de usuário (sub-sistemas rodando como programas, como já citado acima), tem sistemas operacionais inteiros funcionando na camada superior ao exokernel

Desvantagens

● Os exokernels tem como desvantagem a forma de projetá-los, o exokernel é um software muito difícil de se projetar por que é necessário isolar cada sistema operacional e ao mesmo tempo permitir o acesso aos recursos da máquina como disco rígido, memória, entre outros

Exemplos de Exokernels

Os principais exemplos de Exokernels são: XEN, entre outros.

Page 6: Kernel

Referências

Tanenbaum S., Andrew. Sistemas Operacionais Modernos. 2º Edição, São Paulo, Prentice Hall, 2003FreeDOS – http://www.freedos.orgLinux – http://www.kernel.orgModulOS – http://modulos.sf.netOpenSolaris – http://www.opensolaris.orgWindows – http://www.microsoft.com/windowsQNX – http://www.qnx.comFiasco – http://os.inf.tu-dresden.de/fiasco/L4 – http://os.inf.tu-dresden.de/L4/Minix – http://www.minix3.orgXEN – http://www.cl.cam.ac.uk/xeno/xen