Você está na página 1de 15

Fundamentos de Sistemas

Computacionais

Micro-kernels

Introdução
n  A palavra kernel é tradicionalmente utilizada
para denotar a parte do SO que é essencial e
comum a todos os outros softwares.
n  A idéia principal da abordagem µ-kernel é
reduzir o tamanho do kernel, implementando
o maior número possível de funções e sub-
sistemas fora do kernel
n  A idéia do µ-kernel não é nova
n  Década de 1970

Vantagens do Micro-kernel

n  A maioria dos micro-kernels comerciais utiliza a


abordagem cliente/servidor
n  Mach, Amoeba e Chorus
n  A interface oferecida garante uma estrutura de
sistema mais modular.
n  O mal-funcionamento de servidores pode ser isolado,
como em qualquer outro programa de usuário.
n  Maior flexibilidade: diferentes estratégias
implementadas por diferentes servidores podem
coexistir

1
Desvantagens do Micro-kernel
n  A principal desvantagem é o baixo desempenho.
n  Acredita-se que o baixo desempenho é inerente à
abordagem, devido:
n  ao aumento do número de tarefas que rodam no modo
usuário,
n  ao aumento do número de trocas de contexto
n  Ao mecanismo IPC utilizado
n  Com o objetivo de melhorar o desempenho, a
flexibilidade foi sacrificada pois diversos serviços
foram re-integrados ao kernel.

Conceitos implementados pelo


micro-kernel (cliente/servidor)
n  Processos e threads
n  Comunicação
n  Proteção
n  Gerência de memória dependente do
hardware
n  Gerência de memória independente do
hardware e page-in/page-out ficam fora do
kernel

Tratamento de I/O no micro-


kernel
n  O espaço de endereçamento é a
abstração óbvia para a incorporação de
portas de dispositivos.
n  Como o espaço de endereçamento é
controlado pelo gerente de memória, o
controle de permissão de I/O e os
drivers de dispositivos podem ser
implementados fora do kernel

2
Funcionamento básico
n  Ao invés de tratar interrupções, o kernel:
n  Recebe as interrupções,
n  Transforma-as em mensagens e
n  Passa-as ao driver específico, que roda em modo
usuário.
n  O kernel simplesmente transforma as
interrupções em mensagens, não estando
envolvido em nenhum tratamento específico de
interrupções

Driver de dispositivo
n  É um processo que acessa diretamente portas
de hardware mapeadas em seu espaço de
endereçamento
n  Recebe as interrupções via mecanismos IPC.
n  Caso o driver necessite manipular memória
(e.g. driver de vídeo), pode fazê-lo através de
gerentes de memória.

Esquema genérico de um
driver
do
receive (msg, sender); /*receive blocante*/
if (msg.tipo = minha_interrupção)
then
Le/escreve portas de I/O
Reseta interrupção
else
...
fim-if
fim-do

3
Identificadores únicos
n  Um micro-kernel deve prover identificadores
únicos (uid) para os recursos (threads,
tarefas, canais de comunicação, entre
outros).
n  Por exemplo, se S1 quer enviar uma
mensagem a S2, ele necessita especificar S2
(ou o canal de S2) como destino.
n  Assim, o µ-kernel precisa conhecer o uid de
S2 e de S1

Gerentes de Memória
n  Um servidor que gerencia o espaço de
endereçamento E0 será um gerente de
memória tradicional, porém fora do
micro-kernel.
n  A memória física a ser gerenciada será
mapeada para o espaço de endereçamento
do servidor

Paginadores
n  Utilizam as primitivas grant, map e
flush, oferecidas pelo micro-kernel.
n  As interfaces entre paginador e cliente,
paginador e servidor de memória e
paginador e driver de dispositivo são
baseadas em IPC e definidas no nível
do usuário

4
Exemplo: Modelo de
memória do Mach
n  Características:
n  flexibilidade
n  independência do hardware
n  O Mach divide a gerência de memória
em 3 partes:
n  pmap (modo kernel dependente da
arquitetura)
n  modo kernel independente da arquitetura

n  paginador externo (modo usuário)

Modelo de memória Mach


Pmap
n  O sistema Mach admite que todo processador possui
uma unidade de gerência de memória (MMU).
n  O pmap é o módulo do Mach que controla e acessa a
MMU.
n  O pmap é dependente do hardware.

CPU
Memória
page fault endereços virtuais
MMU

endereços físicos

Modelo de memória Mach


Kernel Independente de máquina

n  Este módulo trata da parte do


processamento do page fault que é
independente de máquina
n  mapeamento de endereços nas tabelas do
sistema
n  substituição de páginas

5
Modelo de memória Mach
Paginador externo
n  Trata da lógica de funcionamento da memória virtual
n  Gerencia a tabela de páginas

n  Páginas alocadas/livres, estados das páginas, etc


n  Gerencia a atividade de page-in/page-out
n  Decide quando uma página deve ser carregada em
memória (demanda, prefetching)
n  libera o espaço ocupado em memória pela página
quando a mesma é escrita em disco.
n  Como o paginador externo roda em modo usuário,
várias outras funções podem ser incorporadas a
ele.

Modelo de memória Mach


Memória Virtual
n  O espaço de endereçamento virtual de um
processo é paginado. Este espaço é dividido em
unidades esparsas de tamanho variável
chamadas 32regiões.
2 -1

região a

região da pilha
região dos dados

0 região do código

Modelo de memória Mach


Memória Virtual

n  Cada região que estiver mapeada na memória de um


processo é denominada objeto de memória.
n  Objetos de memória podem ser arquivos, pipes, etc.
n  Os objetos de memória podem ser gerenciados tanto
por paginadores externos como por paginadores
default do Mach.
n  O objeto de memória é referenciado por uma porta e
mensagens são enviadas para solicitar operações
sobre o objeto.

6
Modelo de memória Mach
Primitivas de Memória Virtual
n  Allocate
n  Deallocate
n  Map
n  Copy
n  Inherit
n  Read
n  Write

Primitivas de Memória Virtual


Allocate/Deallocate
n  vm_allocate
n  Torna uma região de memória utilizável,
alocando espaço em uma área de memória
já mapeada
n  vm_deallocate
n  Retira uma região do mapa de memória
utilizável.

Primitivas de Memória Virtual


Map

n  vm_map: mapeia uma região de


memória no espaço de endereçamento
do processo.
n  Retorna um ponteiro para o início da região
mapeada.
n  Neste momento, a região está mapeada

mas não está carregada em memória,


assim, o primeiro acesso a esta região
ocasionará um page fault.

7
Primitivas de Memória Virtual
Copy
n  vm_copy
n  Copia um objeto de memória de uma região
para outra.
n  Otimização: copy on write
vm_copy (t1,t2)
T1 write(3,t1)
T2
3
3 R/W
R/O
R/W

5
R/O
35 R/W

Memória

Primitivas de Memória Virtual


Inherit/Read/Write
n  vm_inherit
n  determina que regiões serão herdadas na
criação de um processo filho.
n  vm_read
n  lê de uma região mapeada em outro
espaço de endereçamento
n  vm_write
n  escreve em uma região mapeada em outro
espaço de endereçamento

Paginadores externos
n  Objetos de memória (flexibilidade):
n  São necessariamente paginados
n  Podem ser gerenciados por aplicações de
usuário chamadas “gerentes de memória”
ou “paginadores externos”.
n  Os gerentes de memória são os

responsáveis pelas atividades de page-in e


page-out.

8
Modelo de memória Mach
Interação paginador e núcleo
Objeto de
Memória

Gerente
Aplicação de
Memória

MACH

Modelo de memória Mach


Protocolo entre gerente e núcleo
n  O Gerente de Memória interage com o núcleo Mach
através de um protocolo assíncrono pré-definido:
1) Uma tarefa faz o mapeamento (vm_map)de um objeto
de memória sobre o seu espaço de endereçamento. Nesse
momento, a tarefa nomeia o gerente de memória como
sendo o responsável pela gestão do objeto
2) O núcleo envia uma mensagem ao gerente de memória
(memory_object_init), dizendo que o objeto que ele
gerencia foi mapeado. O gerente faz algumas
inicializações e responde ao núcleo
(memory_object_ready)

Modelo de memória Mach


Protocolo entre gerente e núcleo
3) A tarefa referencia o objeto de memória. As
referências são feitas por operações básicas
de acesso à memória (LOAD e STORE). Um
page fault é gerado. O núcleo é ativado e
contacta o gerente de memória responsável
pelo objeto de memória e pede a página
(memory_object_data_request).
4) Quando a página estiver disponível, o
gerente de memória responde ao kernel
(memory_object_data_supply).

9
Modelo de memória Mach
Protocolo entre gerente e núcleo

Aplicação (3)page fault


(1)acesso Gerente
de memória

(5)página (4) página

Mach
(2) page fault
MMU

Modelo de memória Mach


Protocolo entre gerente e núcleo
5) A substituição de páginas é decidida pelo núcleo
Mach. Nesse caso, a página é enviada ao gerente
de memória (memory_object_data_return), que é
o responsável pelo seu armazenamento
6) Se a aplicação deseja referenciar a página de um
modo proibido pelos direitos de acesso atuais, um
page fault de proteção é gerado. O gerente pode
também decidir restringir os direitos de acesso à
uma página por conta própria.

Modelo de memória Mach


Protocolo entre gerente e núcleo
n  Considerações:
n  O usuário pode não querer gerenciar um objeto
de memória e deseja que o sistema o faça
n  O gerente de memória, como é uma aplicação

de usuário, pode conter bugs.


n  As páginas que compõem o próprio sistema

Mach devem ser gerenciadas por alguém.

  GERENTE DE MEMÓRIA DEFAULT

10
Modelo de memória Mach
Protocolo entre gerente e núcleo

n  O modelo de memória do Mach


apresenta grande flexibilidade, porém
seu desempenho é baixo.
n  Atualmente, o Unix incorpora parte
destas idéias através das primitivas
mmap e mprotect.

Comunicação remota
n  Os micro-kernels foram propostos
inicialmente para ambientes
distribuídos.
n  O IPC remoto é implementado por
servidores que traduzem mensagens
locais para protocolos de comunicação
externos e vice-versa.

Micro-kernels antigos
Ênfase em portabilidade
n  Os micro-kernels mais antigos eram
construídos de maneira independente de
hardware, em cima de uma pequena camada
dependente de hardware
n  A decisão de se construir o micro-kernel em
cima de uma camada de abstração de
hardware tem as seguintes implicações:
n  Características específicas de hardware não
podem ser aproveitadas
n  A camada de abstração de hardware introduz um
custo no desempenho

11
Micro-kernels antigos
Ênfase em portabilidade
n  Mesmo com todo este cuidado, em
alguns momentos, o micro-kernel deve
estar consciente das características do
hardware:
n  Implementação do espaço de
endereçamento do usuário: registradores
de segmento (Pentium) ou troca de
contexto tradicional (i486)

Micro-kernels mais recentes


n  Uma das causas do baixo desempenho dos
micro-kernels mais antigos é a camada de
abstração de hardware.
n  Arquiteturas diferentes requerem técnicas de
otimização específicas que muitas vezes
afetam a estrutura global do micro-kernel.
n  Micro-kernels mais recentes não são
portáveis.
n  São a base dependente da arquitetura sobre a
qual serão construídos sistemas operacionais
portáveis.

Outras estruturações de
micro-kernels
n  Abordagem de domínios de proteção
n  SPACE, Kea, Spring e Pebble
n  Abordagem de três níveis de proteção
n  Palladium

12
Domínios de proteção
n  Baseada em duas abstrações
l  Domínio de proteção
l  Thread
n  Um programa consiste de:
l  Um conjunto de domínios de proteção
l  Uma única thread

Domínios de proteção
n  Um domínio de proteção é composto
de:
n  Um espaço de endereçamento
n  Informações de proteção
n  Os módulos do sistema operacional são
implementados como domínios de
proteção.

Domínios de Proteção
Comunicação
n  Cada domínio de proteção registra seus
métodos
n  O mecanismo de comunicação inter-
domínio (IDC) é utilizado para se obter
acesso a um método protegido de outro
domínio.
n  Existe uma pilha de domínios de
proteção que contem as IDCs em
andamento.

13
Vantagens/Desvantagens
sobre o cliente/servidor
n  Vantagens:
n  Reduz o overhead de troca de mensagens
n  Reduz o overhead de troca de contexto
entre threads
n  Desvantagens:
n  Introduz overhead devido à pilha de
domínio de proteção

Três níveis de proteção


n  Baseada nos níveis de proteção da
arquitetura Intel x86 (4 níveis de
proteção).
n  Em um dado momento, um processo
está em um nível de proteção e só pode
acessar dados no mesmo nível ou em
níveis inferiores.
n  O código só pode ser acessado no mesmo
nível de proteção

Três níveis de proteção


Call gates
n  Cada nível de proteção define quais dos
seus métodos são acessíveis através de
um call gate.
n  Cada nível de proteção pode ter um
número qualquer de call gates.
n  Um call gate é utilizado para
movimentação entre níveis de proteção.

14
Modelo de Processos
n  O espaço de endereçamento de um
processo é dividido em três níveis:
n  Nível do Kernel
n  Nível Intermediário
n  Nível de Usuário

Módulos do SO
n  Cada módulo do SO independente do
hardware é implementado como um
módulo no nível intermediário.
n  Cada módulo define um call gate onde
estão incluídos os métodos do módulo
(interface).
n  A comunicação é feita por call gates

Vantagens/Desvantagens
n  Vantagens:
n  Reduz o overhead causado por troca de
mensagens, troca de contexto entre
threads e troca de espaços de
endereçamento
n  Desvantagens:
n  Dependente do hardware (níveis de
proteção)
n  Os módulos do SO não estão protegidos

entre si.

15