Anda di halaman 1dari 3

Micro Kernel x Kernel Monolítico

Professor Orientador: Alessandra


Pedro Victor Pinheiro1

1
Centro Universitário do Pará (CESUPA)
Belém – PA – Brasil

pedrovictor.pinheiro@gmail.com

Abstract. The purpose of this article is to inform about the concept, functioning, examples
of implementations, and others, about microkernel and monolithic kernel.
Resumo. O objetivo deste artigo é fazer uma breve explicação sobre o conceito,
funcionamento, exemplos de implementações, dentre outros, sobre microkernel e kernel
monolítico.

1. Conceito.

1.1. Microkernel

Microkernels adicionam ganchos para manipulação de módulos externos. Como


resultado, eles são bastante compactos por si só e são bastante rápidos em funções embutidas.
(ANDERSON, 2002).

1.2. Kernel Monolítico

Os Kernels Monolíticos, por outro lado, têm tudo construído neles desde o início. Isso
significa que eles são totalmente auto-suficientes, mas também maiores e um pouco mais
lentos. (ANDERSON, 2002).

2. Forma de Funcionamento.

2.1. Microkernel

O conceito de Microkernel é de reduzir o kernel a comunicações de processos básicos e


controle de I/O, e deixar os outros serviços de sistemas situados no user-space(espaço do
usuário) em forma de processos normais(chamados de servers). Existe um server para cada
problema de gerenciamento de memória, um server faz gerenciamento de processos, e outro
gerencia drivers, e assim por diante. Devido os servers não rodarem mais no espaço do kernel,
os chamados “context switches” (mudanças de contexto) são necessárias para permitir que
processos de usuário entrem no modo de privilégio. Dessa meneira o microkernel não é mais
um bloco de serviços de sistema, mas representa várias abstrações básicas e primitivas para
controlar a comunicação entre os processos e e entre um processo e o hardware subjacente.
(ROCH, 2004).
Microkernels oferecem uma maior flexibilidade, pois você pode adicionar vários
módulos de suport sem realizar o reboot, mas existe um preço a se pagar. Módulos infectados,
ou Trojan modules, apresentam um grande risco de segurança. Se o kernel carrega tal módulo,
ele roda com todo o controle do sistema e privilégios do kernel em si. (ANDERSON, 2002).
2.2. Kernel Monolítico.

O Kernel Monolítico executa cada serviço básico do sistema como gerenciamento de


memória, manipulação de interrupções e comunicação I/O, sistemas de arquivos, etc. no
espaço do kernel. Ele é construído. A inclusão de todos os serviços básicos no espaço do
kernel tem 3 grandes inconvenientes: o tamanho do kernel, falta de extensibilidade e
manutenibilidade ruim. (ROCH, 2004).
O sistema operacional é escrito como uma coleção de procedimentos, cada um pode
chamar qualquer um dos outros quando precisar. Quando esta técnica é usada, cada
procedimento no sistema tem uma interface bem definida em termos de parâmetros e
resultados, e cada uma é livre para chamar outra. (TANENBAUM, 2001).
Os Kernels Monolíticos exigem recompilação e reboot no sistema antes de eles
poderem adicionar novos recursos. Embora eles são mais seguros de modulos infectados, eles
também possuem um impedimento de mudar sem um tempo de inatividade. (ANDERSON,
2002).

3. Exemplos.

3.1. Microkernel

3.1.1. QNX

QNX (”Quick Unix”) é sistema operacional baseado em microkernel mais popular para
aplicações em tempo real. Aplicações em tempo real enfatizam a previsibilidade e estabilidade.
(ROCH, 2004).

3.1.2. L4

O L4 pertence a segunda geração de microkernels. Provou que juntos com o QNX, que
os microkernels podem ser rápidos como os monolíticos permitindo uma fácil extensibilidade.
(ROCH, 2004).

3.2. Kernel Monolítico

3.2.1. GNU/Linux

GNU/Linux é uma implementação acessível livre, de código aberto, do Unix,


desenvolvido por milhares de indivíduos. Ela é um representante típico de um kernel
monolítico. Alterando as partes do kernel significa recompilação completa. (ROCH, 2004).

3.2.2. Windows NT

A Microsoft introduziu o kernel para seu Windows NT, no início da década de 1990.
Foi planejado para ser um microkernel, mas por falta de desempenho, a Microsoft decidiu
colocar um monte de serviços do sistema de volta ao espaço do kernel, incluindo, entre outros,
os drivers de dispositivo e pilhas de comunicação. Isso encheu o kernel e tornou-o maior do
que a maioria dos kernels monolíticos existentes naquela época. (ROCH, 2004).
4. O melhor para um sistema distribuído.

Uma tendência nos sistemas operacionais modernos é levar adiante ainda essa ideia de
mover código para camadas mais altas e remover tanto quanto possível do sistema operacional,
deixando um mínimo de kernel. Para requisitar um serviço, como ler um bloco de um arquivo,
um processo de usuário (agora conhecido como processo cliente) envia a requisição para um
processo servidor, que então, faz o trabalho e remete de volta a resposta.
Outra vantagem do modelo cliente-servidor(além de suportar bugs sem precisar
derrubar toda a máquina) é a sua adaptabilidade para uso em sistemas distribuídos. Se um
cliente comunica-se com um servidor enviando-lhe mensagens, o cliente não precisa saber se a
mensagem é manipulada localmente na própria máquina ou se foi enviada através de uma rede
para um servidor em uma máquina remora. No que diz respeito ao cliente, a mesma coisa
acontece em ambos os casos: uma requisição foi enviada e uma resposta voltou.
5. Considerações Finais.

Avaliando toda discursão entre Microkernel e Kernel Monolítico (incluindo as


discursões entre Linus e Tanenbaum), pode-se concluir que cada arquitetura tem suas
vantagens e desvantagens, mas na atualidade é aconselhado utilizar os sistemas baseados em
microkernel, pois já foi provado que sua performance pode ser igual ou até mesmo superior ao
sistemas monolíticos. Mesmo fazendo uso de algoritmos mais complexos devido a
comunicação entre os servers serem de forma concorrente, esses sistemas acabam sendo mais
estáveis e suportam bugs e alterações em módulos sem sofrer alterações no kernel em si.

6. Referências Bibliográficas.

ANDERSON, R., JOHNSTON, A.. Unix unleashed. 4TH edition. Sams, 2002.

TANENBAUM, A.S.. Modern Operating Systems. 2ND edition. 2001.

ROCH, B.. Monolithic kernel vs. Microkernel. 2004.

TANENBAUM, A.S., Woodhull, A.S.. Sistemas Operacionais. Projeto e Implementação. 2ND


edition. Bookman, 1999.