21
Esta tradução foi feita através do Google tradutor TOWARD REAL MICROKERNELS O ineficiente, inflexível primeira geração inspirada desenvolvimento da produção melhorou bastante em segundo lugar, que A história microkernel está cheio de boas idéias e becos sem saída. O história começou com entusiasmo sobre o prometido dramático aumento da flexibilidade, segurança e modularidade. Mas ao longo dos anos, entusiasmo mudou para decepção, porque a primeira geração microkernels eram ineficientes e inflexíveis. • Hoje, observamos abordagens radicalmente novo à ideia de microkernel que buscam evitar os erros antigos quando ultrapassar a idade restrições à sua flexibilidade e desempenho. A segunda geração microkernels pode ser uma base para todos os tipos de sistemas operacionais, incluindo timesharing, multimídia, e tempo duros e moles real. A Visão Kernel Tradicionalmente, a palavra denota o kernel obrigatório parte do sistema operacional comum a todos os outros software. O kernel pode usar todos os recursos de um processador (Por exemplo, programar o gerenciamento de memória unidade); software rodando em modo de usuário não pode executar tais operações de segurança crítica. A maioria dos sistemas operacionais iniciais foram executados por meio de grandes kernels monolíticos. Genericamente falando, a programação completa do sistema operacional, o sistema de arquivos rede, drivers de dispositivos, gerenciamento de memória, paginação, e muito mais, foi embalado em um único kernel.

Kernel

Embed Size (px)

Citation preview

Page 1: Kernel

Esta tradução foi feita através do Google tradutor

TOWARD REAL MICROKERNELS

O ineficiente, inflexível primeira geração inspirada

desenvolvimento da produção melhorou bastante em segundo lugar, que

A história microkernel está cheio de boas idéias e becos sem saída. O história começou com

entusiasmo sobre o prometido dramático aumento da flexibilidade, segurança e modularidade. Mas

ao longo dos anos, entusiasmo mudou para decepção, porque a primeira geração microkernels eram

ineficientes e inflexíveis. • Hoje, observamos abordagens radicalmente novo à ideia de microkernel

que buscam evitar os erros antigos quando ultrapassar a idade restrições à sua flexibilidade e

desempenho. A segunda geração microkernels pode ser uma base para todos os tipos de sistemas

operacionais, incluindo timesharing, multimídia, e tempo duros e moles real.

A Visão Kernel Tradicionalmente, a palavra denota o kernel obrigatório parte do sistema

operacional comum a todos os outros software. O kernel pode usar todos os recursos de um

processador (Por exemplo, programar o gerenciamento de memória unidade); software rodando em

modo de usuário não pode executar tais operações de segurança crítica.

A maioria dos sistemas operacionais iniciais foram executados por meio de grandes kernels

monolíticos. Genericamente falando, a programação completa do sistema operacional, o sistema de

arquivos rede, drivers de dispositivos, gerenciamento de memória, paginação, e muito mais, foi

embalado em um único kernel.

Em contraste, a abordagem envolve microkernel minimizar o kernel e implementação de

servidores fora o kernel. Idealmente, o kernel implementa apenas espaços de endereço, a

comunicação entre processos (IPC), e programação básica. Todos os servidores, mesmo drivers de

dispositivo, executado em modo usuário e são tratados exatamente como qualquer outra aplicação

pelo kernel. Uma vez que cada servidor tem o seu próprio espaço de endereço, todos esses objetos

são protegidos um do outro.

Quando a idéia de microkernel foi introduzida no Década de 1980, a tecnologia de software

vantagens parecia óbvio:

• Diferentes interfaces de aplicativos do programa (API), diferentes sistemas de arquivos, e talvez

até mesmo diferentes estratégias básicas do sistema operacional podem coexistir em um do sistema.

Eles são implementados como concorrente ou servidores que colaboraram.

• O sistema torna-se mais flexível e extensível. Pode ser mais fácil e eficaz adaptação à hardware

novo ou novos aplicativos. Apenas selecionados servidores precisam ser modificados ou

adicionados ao sistema. Em particular, o impacto de tais alterações pode ser restrita a um

Page 2: Kernel

subconjunto do sistema, de modo todos os outros processos não são afetados. Além disso,

alterações não exigem a construção um novo kernel, que pode ser feito online e testado.

• Todos os servidores podem utilizar os mecanismos fornecidas pelo microkernel, como

multithreading e IPC.

• mau funcionamento do servidor é tão isolada como mau funcionamento normal da aplicação.

• Estas vantagens também para manter drivers de dispositivo.

• Uma interface limpa microkernel impõe uma maior estrutura do sistema modular.

• Um menor kernel podem ser mais facilmente mantidos e devem ser menos propensas ao erro.

• As interdependências entre os diferentes partes do sistema pode ser restringido e reduzida. Em

particular, a confiança base informática (TCB) engloba apenas o hardware, o microkernel, um

driver de disco, e talvez um arquivo básico system.1 Outros drivers de arquivo e rede sistemas

precisam deixar de ser absolutamente confiável.

Apesar destas vantagens parecia óbvio, a primeira geração microkernels não poderia

fundamentar-los.

A Primeira Geração

A idéia de microkernel reuniu-se com os esforços da pesquisa comunidade para construir

pós-Unix sistemas operacionais. Novo hardware (por exemplo, multiprocessadores, maciçamente

paralelo sistemas), as novas exigências da aplicação (por exemplo, segurança, multimídia e em

tempo real, computação distribuída) e novas metodologias de programação (por exemplo,

orientação a objetos, multithreading, persistência) novos conceitos necessários do sistema

operacional.

Os objetos e os mecanismos correspondentes, tópicos, os espaços de endereço procedimento,

chamadas remotas (RPCs), IPC baseada em mensagens, e o grupo de comunicação

eram de baixo nível, mais básico e mais geral abstrações que os primitivos típicos Unix. Além para

os novos mecanismos, fornecendo uma API compatível com o Unix ou outro de exploração

convencional sistema foi uma condição sine qua non, portanto, de aplicação Unix em cima dos

novos sistemas foi uma conseqüência natural.

Portanto, a idéia de microkernel tornou-se amplamente aceite por designers de sistema operacional

para dois completamente diferentes razões: (1) e flexibilidade geral poder e (2) o fato de que

microkernels ofereceu um técnica para preservar compatibilidade com o Unix, enquanto permitindo

o desenvolvimento de novos sistemas operacionais.

Muitos projetos acadêmicos tomaram este caminho, incluindo Amoeba [19], escolhas [4], Ra [1] e

Page 3: Kernel

V [7], alguns mesmo mudou-se para uso comercial, nomeadamente Chorus [11], L3 [15], e Mach

[10], que se tornou o carro-chefe da microkernels industrial.

[Mach pager externo 22] foi o primeiro conceitual avanço em direção microkernels real. O

conceptual fundação do pager externo é que o kernel gerencia a memória física e virtual, mas para a

frente falhas de página de tarefas específicas em nível de usuário. Estes pagers implementar o

mapeamento da memória virtual backing store por escrito para trás e carregamento da página

imagens. Após uma falha de página, eles geralmente voltam a imagem de página apropriado para o

kernel, que então estabelece o mapeamento de memória virtual para físico (Ver Figura 1). Veja o

quadro "Frequently Asked Dúvidas sobre Pagers externo. "

Esta técnica permite o mapeamento dos processos e bases de dados em espaços de endereços do

usuário sem a necessidade de integrar os sistemas de arquivos / banco de dados para o kernel.

Além disso, diferentes sistemas podem ser usados simultaneamente. compartilhamento de memória

para aplicações específicas e de memória distribuída compartilhada também pode ser implementado

por nível de usuário servidores fora do kernel.

O segundo passo conceitual para microkernels era a idéia de manipulação de interrupções de hardware como IPC

Page 4: Kernel

Perguntas mais frequentes sobre Externas Pagers

É um pager necessários dentro do microkernel? Não.

Como pagers em nível de usuário afetam a segurança do sistema? Apager pode corromper os dados que ele mantém. Então vocêcontar com a funcionalidade correta do pager vocêutilização, se é kernel integrado ou em nível de usuário.No entanto, diferente recusava a interferir a nível de usuáriopagers pode ser usado para aumentar a segurança, porexemplo, que contém dados confidenciais em um confiáveldados e estável (padrão) pager e menos críticos empagers potencialmente menos confiável. Note-se quedependências semânticas são semelhantes em todos os níveis enão são específicas do sistema operacional, os usuários contam comomuito sobre a correta funcionalidade de um compilador comoem que de um sistema de banco de dados.Como são caros pagers em nível de usuário? Em princípio, aoverhead comparado ao de um pager integradaé apenas uma CPI e deve ser insignificante. Na prática,No entanto, a maioria microkernels de primeira geraçãousar um protocolo complicada com até oito adicionalCPIs e implementar IPC ineficiente. As despesas geraisde 1000 μs (Digital Equipment Corp Alpha,133 MHz) pode ocorrer. Um microkernel da segundageração resolve esse problema de desempenho porusando apenas um IPC adicionais e tornando-o rápido(Menos de 10 μs).

mensagens de [17], incluindo portas I / O no endereço espaços. O kernel capta a interrupção, mas

não não segurá-lo, em vez gerando uma mensagem para o processo em nível de usuário atualmente

associado com a interrupção. Assim, a manipulação, interrupção e dispositivos de E / S são

feito completamente fora do kernel no seguinte da seguinte maneira:

driver thread:

dowait for (msg, sender) ;if sender = my hardware interruptthen read/write i/o ports ;

reset hardware interruptelse . . .

fiod .

Nesta abordagem, os drivers de dispositivo pode ser substituído, removidos ou adicionados

dinamicamente, sem vincular um novo kernel e reiniciar o sistema. Os condutores podem

assim ser distribuído para os usuários finais independente da kernel. Além disso, o lucro drivers de

dispositivo de uso tais mecanismos microkernel como multithreading, IPC, e espaços de endereço.

Veja o quadro "Freqüentemente Perguntas sobre drivers de dispositivo nível de usuário. "

Page 5: Kernel

Decepções

Um conceito interessante é apenas um lado da moeda, o outra utilidade. Por exemplo, os conceitos

bastante flexível e que os custos de baixa flexibilidade suficiente para esses problemas do mundo

real como multimídia, sistemas de tempo real, e incorporado?

No que diz respeito à eficiência, a comunicação facilidade é o mecanismo de microkernel

mais críticos.Cada invocação de um sistema operacional ou aplicativo serviço requer uma RPC,

geralmente constituídos por duas CPIs-chamada ea mensagem de retorno. Por isso,

arquitetos microkernel passou muito tempo otimizando os mecanismos de IPC. progresso

sustentado rendeu até ao dobro melhoria na velocidade, mas em 1991, o etapas tornou-se cada vez

menos eficaz. Mach 3 estabilizado em cerca de 115 μs por IPC em um 486-DX50 comparáveis

microkernels para a maioria dos outros. Por exemplo, um convencional sistema Unix chamada de

aproximadamente 20 μs sobre este hardware tem sobrecarga de cerca de 10 vezes inferior ao

RPC Mach. Parecia que 100 μs foi a inerente custo de uma CPI e que o conceito tinha de ser

avaliada nesta base.

Desde o tempo absoluto não tem significado por si só, dois critérios mais práticos são

utilizados para a avaliação:

• Aplicações não devem ser degradadas pelo microkernel. Este critério conservador é uma condição

necessária condição para a aceitação prática.

• microkernels deve suportar eficientemente novos tipos de aplicativos que não podem ser

implementadas com bom desempenho no kernel monolítico convencional.

Perguntas mais frequentes sobre Device Drivers nível de usuário

Você pode realmente usar um driver de disco em nível de usuário para a demandapaginação? Sim.Pode um motorista em nível de usuário danificar o sistema? Driverssão encapsulados em espaços de endereço, para que eles possamacesso apenas a memória e as portas I / O concedidapara eles. Deste ponto de vista, eles podem danificarqualquer componente confiando em sua funcionalidade, masnão todo o sistema. No entanto, drivers de controlesistema de hardware, e se este hardware permitecorrupção (por exemplo, por via de acesso à memória físicaDMA), no kernel pode impedir o motorista de corrupçãoo sistema. Risco depende do hardwareacessíveis ao condutor.Do nível de usuário para aumentar a segurança do motorista? Sim, porquede encapsulamento. Por exemplo, um driver de mouse podenão fazem mais mal do que um editor.Como caras são drivers no nível do usuário? A maior parte da primeira geraçãokernels (exceto L3) executar todos os tempos críticoscondutores, tal como os drivers do kernel. No entanto, devido àrápido meios de comunicação de segunda geraçãomicrokernels, drivers no nível do usuário executar, bem como

Page 6: Kernel

drivers integrados nesses sistemas. Menos de 10 μssão obrigados por interromper ou driver RPC.

Este critério progressivo devem ser satisfeitas para um avanço real da tecnologia do sistema

operacional. O critério conservador pode ser avaliado por critérios execução na mesma plataforma

de hardware em monolítica e um sistema operacional baseado em microkernel. Este método mede

não apenas o primário (Direta) IPC custos, mas também os custos secundária induzida pela

estruturação do software com o cliente / servidor paradigma e, usando o mecanismo IPC.

Algumas aplicações realizadas também no âmbito de um microkernel como no âmbito de um

kernel monolítico, e alguns ligeiramente melhor. Infelizmente, outras aplicações foram

substancialmente degradados. Chen e Bershad [6], em comparação pedidos ao abrigo do Ultrix e

Mach numa DECstation 5200/200 e encontrou degradações pico de até para 66% em Mach (em

comparação com Ultrix) (ver Figura 2). Condict, et al [8] em comparação de oito usuário AIM III

benchmark em um 486 DX50, no âmbito de um monolítico OSF / 1 e OSF baseado no Mach / 1 e

uma medida degradação de 50% em média. As mensurações corroboram que a degradação é

essencialmente causada por IPC: Pelo menos 73% dos valores medidos pena está relacionada com

Page 7: Kernel

IPC ou atividades que são sua consequência directa; 10% vem de multiprocessador disposições que

poderiam ser eliminados nesta uniprocessor, eo restantes 17% é devido ao não especificada razões.

Chen descobriu que o desempenho diferenças são causadas, em parte por uma substancialmente

mais elevados cache-miss taxa de Mach-based do sistema. Esse resultado pode apontar para um

principal fraqueza do servidor arquiteturas quando usado com microkernels. No entanto, o

aumento da cache são causados por falha do kernel Mach, invocada para IPC e não pelo

maior modularidade do arquitetura cliente / servidor. O microkernel medida pena é demasiado

grande para ser ignorada. Do ponto de vista prático, a abordagem microkernel puro da primeira

geração foi um fracasso. Como conseqüência, tanto Chorus Mach e reintegrados o mais

servidores críticos e drivers para o kernel [3, 8]. supervisor Chorus " atores "e de Mach" kernel

carregados "tarefas executar no modo kernel, pode livremente o espaço do kernel, o acesso e pode

interagir livremente uns com os outros. Ganhando performance salvando kernel-usuário e no espaço

de endereço switches parecia razoável e parecia bem-sucedido. No entanto, enquanto resolver

alguns problemas de desempenho, esta medida enfraquece o abordagem microkernel. Se a maioria

dos motoristas e servidores são incluído no kernel, por razões de desempenho, o encapsulamento

benefícios, segurança e flexibilidade, em grande parte desaparecer. Avaliação do critério

progressivo deve ser baseadas em tendências futuras e aplicações. Objectorientation e distribuição

causará aumento crossaddress- interação espaço. Como conseqüência, RPC granularidade será

mais fino, em média, os clientes e servidor vai gastar menos ciclos sucessivos entre RPCs.

A Figura 3 mostra o overhead RPC relativa como função do número médio de ciclos gastos

por cliente e servidor entre dois RPCs sucessivas. O sobrecarga é dada com respeito a um sistema

ideal RPC, onde é livre. overhead Total, um programa leva o dobro do tempo, tanto para a execução

devido à RPC, no sistema ideal. Parece razoável supor que 10% é tolerado na maioria dos casos,

mas que 50% não. O limite de 10% permite que aplicativos de primeira geração microkernels usar

uma RPC 100.000 userlevel ciclos, cerca de 10.000 linhas de cliente e servidor código deve ser

executado antes de chamar o RPC seguinte.

Page 8: Kernel

A conclusão decepcionante é que a primeira geração microkernels não suporta o uso de grão

fino da RPC. Para efeito de comparação, a Figura 3 mostra também as despesas gerais por dois

microkernels de segunda geração. Sob a restrição de 10%, os de segunda geração microkernels

permitir cerca de um RPC por 400 linhas de código executado em nível de usuário. Junto a essa

inflexibilidade baseada no desempenho, uma outra deficiência tornou-se evidente ao longo dos

anos. O conceito externo, pager não é, em princípio, suficientemente flexível. Sua fraqueza técnico

mais importante é que memória principal continua a ser gerido pelo microkernel e pode ser

controlado apenas rudimentarmente pela pager externo. No entanto, servidores de arquivos

multimídia, aplicações em tempo real, gerenciamento de buffer de quadros, e algumas aplicações

não-clássicas exigem completo memória principal control.2 Conceitualmente, a fraqueza é a

política dentro da microkernel. A interface "política" que permita paramaterization e ajuste de um

built-in política é conveniente enquanto que a política é adequado para todas as aplicações. Sua

limitações são óbvias assim como uma política realmente romance é necessário ou uma

modificação substancial é necessária para uma política pré-definida. A Segunda Geração

A análise da deficiência precoce microkernels switches identificados pelo usuário de modo kernel, o

endereço do espaço- switches, e as sanções memória como fontes primárias de desempenho

decepcionante. Considerado superficialmente, Esta análise foi correta, porque ele foi apoiado por

detalhadas medições de desempenho. Surpreendentemente, uma análise mais profunda mostra que

os três pontos-user-kernel-mode switches, o espaço de endereço switches e memória sanções não

são o real problemas, os custos de hardware herdado do modo e espaço de endereçamento de

comutação são apenas 3% -7% dos valores medidos custos (ver Figura 4). Uma discussão detalhada

pode ser encontrada em [16].

A situação era estranha. Por um lado, nós sabia que as sementes poderiam funcionar, pelo menos,

Page 9: Kernel

10 vezes mais rápido, em o outro, após a otimização microkernels anos, já não viu uma nova e

significativa possibilidades de otimização. Este contradição sugeriu a eficiência problema foi

causado pelo arquitetura básica dos kernels. Na verdade, mais cedo microkernels evoluído passo a

passo de kernels monolíticos, permanecendo rico em conceitos e em grande tamanho do código. Por

exemplo, Mach 3 oferece cerca de 140 sistemas chamadas e precisa de mais de 300 Kbytes de

código. Redução de um grande kernel monolítico não pode levar a um microkernel real.

New Radical Designs

Uma nova abordagem radical, projetando uma arquitetura microkernel a partir do zero, parecia

promissor e necessário. Exokernel [9] e L4 [16], aqui discutidos, tanto concentrado em uma

arquitetura mínima, limpo e novo sistemas de apoio operacional altamente extensível.

• Exokernel. Exokernel, desenvolvido no MIT em 1994 -95, é um microkernel, pequeno hardware-

dependente baseado na idéia de que abstrações são caros e restringir a flexibilidade [9]. O

microkernel deve multiplex primitivas de hardware de forma segura. O exokernel atual, que é

adaptado para o Mips arquitetura e obtém excelente desempenho para primitivas de kernel, é

baseado na filosofia de que um kernel não deve fornecer abstrações, mas apenas um conjunto

mínimo de primitivas (embora o Exokernel inclui drivers de dispositivo). Por conseguinte, a

Exokernel interface é dependente da arquitetura, dedicado lookalike para tradução de software

controlada buffers (TLBs). A comunicação básica primitivo é a transferência de controle protegido

que atravessa espaços de endereço, mas não transfere argumentos. A RPC leve com base nesse

exame primitivo 10 μs em um processador MIPS R3000, enquanto uma RPC Mach

necessidades de 95 μs. Sem resposta a questão da se o direito de abstrações um melhor desempenho

e conduzir a uma melhor estruturados e mais eficientes aplicações primitivos que Exokernel de

fazer.

• L4. Desenvolvido no GMD em 1995, L4 é baseado na teses de que a eficiência ea flexibilidade

requer um mínimo conjunto de abstrações microkernel geral e microkernels que são dependentes do

processador. Em [16], que mostram que mesmo esses processadores compatíveis como o 486 eo

Pentium necessidade diferente implementações microkernel (com o mesmo API), não só de

codificação diferentes, mas diferentes algoritmos e estruturas de dados. Como otimizar o código

geradores, microkernels não são inerentemente portátil, apesar de melhorar a portabilidade de um

sistema como um todo. L4 fornece três espaços abstrações de endereço (descrito no próxima seção),

segmentos e IPC-implementa apenas sete chamadas do sistema, e as necessidades apenas 12 Kbytes

de código

Across-address space-IPC em um 486-DX50 leva 5 μs para um argumento de 8 bytes e 18 μs

Page 10: Kernel

de 512 bytes. O correspondente números de Mach são 115 μs (8 bytes), e 172 μs (512 bytes). Com

2 x 5 μs, básica L4-RPC é duas vezes rápido como um sistema Unix convencional chamada de

sistema. Permanece desconhecido se L4 abstrações, apesar de ser muito mais flexível do que as

abstrações da primeira geração, são flexível e poderoso o suficiente para todos os tipos de

exploração sistemas. Ambas as abordagens parecem superar o desempenho problema. Exokernel e

comunicação L4 é até 20 vezes mais rápido do que IPC da primeira geração. Alguns sistemas

nonmicrokernel tentar reduzir a comunicação custos, evitando IPC. Tal como acontece com coro e

Mach, Solaris e Linux kernel carregáveis módulos. O sistema de rotação [2] estende a Síntese

Idéia [20] e usa um compilador integrado ao kernel gerar o código de segurança dentro do espaço

de kernel. Comunicar com os servidores deste tipo exige menos switches espaço de endereço. A

redução dos custos IPC do segundo microkernels geração pode fazer esta técnica obsoletos ou

mesmo desqualificar-lo, pois kernel compiladores impor sobrecarga no kernel. No entanto,

a questão do que é superior-kernel-compilador tecnologia ou de um microkernel puro abordagem

está aberto enquanto não há nenhuma boa execução integração um kernel compilador com um

microkernel de segundo nível. Mais flexibilidade restrições de desempenho relacionados parecem

estar desaparecendo. O problema da microkernels de primeira geração foi a limitação do conceito

externo, pager hardwiring uma política dentro do kernel. Esta limitação foi em grande parte

removidas por conceito L4 do espaço de endereço, que fornece uma interface mecanismo puro. Em

vez de oferecer uma política, o papel do kernel limita-se a oferece os mecanismos básicos

necessários para implementar as políticas adequadas. Estes mecanismos básicos permitir a aplicação

de protecção diferentes sistemas e até mesmo de gerenciamento de memória física em cima do

microkernel.

A idéia é apoiar a construção recursiva de espaços de endereço fora do kernel (veja a Figura 5). Um

espaço de endereçamento inicial representa a memória física e é controlada pelo servidor do espaço

de endereçamento de primeira. Em tempo de inicialização do sistema, todos os espaços de

endereços de outros estão vazios. Para a construção e manutenção de espaços de endereço ainda em

cima do espaço inicial, o microkernel fornece três operações: concessão, mapa, e demap.

Page 11: Kernel

O owner3 de um espaço de endereço pode conceder qualquer um dos seus páginas para outro

espaço, desde que o beneficiário concorda. A página concedido é removido do Granter espaço de

endereço e está incluído no espaço de endereço do beneficiário. A restrição importante é

que em vez de física quadros de página, o concedente pode concessão somente as páginas já

acessível a si mesmo. O proprietário de um espaço de endereço também pode mapear qualquer dos

seus páginas em outro espaço de endereço, se o destinatário concorda. Depois, a página pode ser

acessada em ambos os espaços de endereço. Em contraste com a concessão, no mapeamento,

a página não é removido do endereço do mapeador de espaço. Como no caso de concessão, o

mapeador de mapa pode páginas ao qual ele já tem acesso.O proprietário de um espaço de endereço

pode demap qualquer dos seus páginas. A página demapped permanece acessível na demapper

espaço de endereço, mas é removido de todos os outros espaços que recebeu o endereço da página

diretamente ou indiretamente do demapper. Embora explícitos consentimento dos proprietários de

espaço de endereço não é necessária, a operação é segura, pois é restrito a propriedade

páginas. Os usuários dessas páginas já decididos aceitar uma demapping potencial quando recebeu

o páginas mapeamento ou concessão. Veja o quadro "Freqüentemente Perguntas sobre servidores

Memória ". Desde que o mapeamento de uma página requer o consentimento entre mapper e

mappee, assim como a concessão, ele é implementado pelo IPC. Na Figura 6, o mapeador de A

envia uma Mensagem para o mapa B mappee especificando por um adequada operação de

recebimento, que está disposto a aceitar um mapeamento e determina o endereço virtual

da página dentro do seu próprio espaço de endereço. O conceito de espaço de endereço de folhas de

gerenciamento de memória paginação e fora do microkernel, apenas a concessão, mapa, e as

operações são mantidas demap dentro do kernel. Mapeamento e demapping são necessários para

implementar gerenciadores de memória e pagers em cima do microkernel. Concessão só é usada em

situações especiais, para evitar dupla contabilidade e overflow espaço de endereço. Para uma

descrição mais detalhada, ver [16].

Em contraste com o conceito externo, pager, o kernel Limita-se a mecanismos. Políticas são

deixadas completamente de servidores em nível de usuário. Para ilustrar, vamos esboçar alguns

serviços de baixo nível que podem ser implementadas por servidores de espaço de endereçamento

com base em mecanismos. Um servidor de gerenciamento do espaço de endereço inicial é um

clássico gerenciador de memória principal, embora fora do microkernel. gerenciadores de memória

podem facilmente ser empilhados, o servidor de memória inicial mapas ou subvenções partes da

física memória para o servidor de memória de 1 e servidor de memória de 2. Agora temos dois

coexistindo os gestores de memória principal.

Page 12: Kernel

Um pager pode ser integrado com um gerenciador de memória ou utilizar um memorymanaging

servidor. Pagers usar o concessão microkernel, o mapa, e demap primitivos. Os restantes

interfaces, o cliente pager, pager memória servidor e driver de dispositivo pager, são

totalmente baseada no IPC e definido fora do kernel. Pagers pode ser usado para implementar

tradicional Memória virtual paginada e arquivo / banco de dados mapeamento, bem como residente

não paginado memória para os drivers de dispositivo e em tempo real ou sistemas multimídia.

estratégias de paginação fornecida pelo usuário [5, 14] são tratadas em ao nível do utilizador e não

são de forma limitada pela microkernel. espaços de endereço empilhadas, como aqueles em

Grasshopper [18], e empilhadas sistemas de arquivos [13] pode ser realizado da mesma forma.

aplicações multimédia e outros em tempo real exige a atribuição de recursos de memória em uma

maneira que permite que os tempos de execução previsível. Por exemplo, gestores em nível de

usuário de memória e pagers licença fixa alocação de memória física para dados específicos ou para

bloqueio de dados em memória para um tempo determinado. Multimídia alocadores de recursos e

de tempo compartilhado podem coexistir se as servidores cooperar. Tais dispositivos baseados em

memória como mostra bitmap são realizada por um gerenciador de memória segurando a tela

memória em seu espaço de endereço . Melhorar as taxas de acerto de um cache secundário

meio de alocação de página ou redistribuição [12, 21] pode ser implementada através de um pager

Page 13: Kernel

que se aplica cachedependent políticas de alocação de páginas virtuais memória física. Remote IPC

é implementado por uma comunicação servidores traduzir mensagens local para comunicação

externa protocolos e vice-versa. A comunicação hardware são acessados por drivers de dispositivo.

Se especiais partilha dos buffers de comunicação e endereço do usuário espaços é necessário, o

servidor de comunicação também age como um pager especial para o cliente. Em contraste com a

primeira geração, não há filtro de pacotes dentro da microkernel. chamadas de sistema Unix são

implementadas pelo IPC. O servidor Unix pode funcionar como um pager para seus clientes e pode

memória partilhada para a comunicação com seus clientes. O servidor Unix em si é paginável ou

residente.

Perguntas mais frequentes sobre Servidores da memória

É um kernel sem memória principal de gestão aindamicrokernel ou é um submicrokernel? É um kernelporque é obrigatório para todos os outros níveis. Lánão é kernel alternativa, embora a memória alternativaservidores podem coexistir. É um microkernelporque é um resultado direto da aplicação do microkernelparadigma de fazer o kernel mínimo. Opercepção de que microkernels tem que ser muito menordo que na primeira geração, não justifica uma nova"Termo" submicro. O paradigma subjacente é amesmo.

Uma vez que o kernel não é utilizável sem um servidor de memória,Por que não incluí-lo no microkernel? Duas razões:• Sistemas operacionais podem oferecer alternativas coexistindoservidores de memória. Exemplos disso são timesharing(Paging), em tempo real, multimídia e arquivos de cachetécnicas.• Memória servidores pode ser como a máquina (não do processador)dependentes, como drivers de dispositivo.servidores especializados são necessários para controlarcaches de segundo nível e memórias específicas do dispositivo.Se tem uma máquina rápida e lenta (sem cache) mainmemoryregiões, um servidor de memória correspondentepode garantir que a memória rápida só é usado paraConclusão

Embora as experiências acadêmicas em portar aplicações e sistema operacional personalidades Segunda geração microkernels parecem promissores, temos abrangeu apenas os conhecidos problemas de microkernels. Não há vida real experiência prática com microkernels de segunda geração para desenhar. Apesar de estarmos otimista, design microkernel de segunda geração é ainda de pesquisa, e novos problemas podem surgir. A maioria dos microkernels mais evoluído a partir monolítico kernels e não obter suficiente flexibilidade e desempenho. Embora teoricamente vantajosa,

Page 14: Kernel

a abordagem microkernel nunca foi amplamente aceito na prática. No entanto, uma nova geração de microkernel arquiteturas mostra resultados promissores, eo desempenho e flexibilidade melhorada através de uma ordem de magnitude. Ainda é discutível se é Exokernel nonabstractions, compilador Spin do kernel, L4 espaço de endereçamento-conceito, ou uma síntese desses abordagens é o melhor caminho a seguir. Em cada caso, esperar que os sistemas operacionais eficiente e flexível, baseado em microkernels de segunda geração a ser desenvolvida. A abordagem microkernel foi o primeiro software arquitetura a ser examinado em detalhe a partir do desempenho ponto de vista. Aprendemos que a aplicação do desempenho critério para um sistema tão complexo não é trivial. Naive, as medições são, por vezes uninterpreted enganosa. Embora as medidas iniciais microkernel sugeriu reduzir a freqüência de usuário para usuário IPC, o problema real foi a estrutura e implementação do miolo. Para evitar interpretações errôneas, tais no futuro, devemos sempre tentar compreender por que nós obter os resultados medidos. Como na física, ciência da computação deve considerar as medidas como experimentos utilizados para validar ou rejeitar uma teoria. Embora a evolução constante é uma metodologia poderosa, às vezes uma abordagem radicalmente nova é necessária. A maioria dos problemas da primeira geração microkernels foram causados por seu desenvolvimento passo a passo. O microkernels concebido a partir do zero deu completamente resultados diferentes, que não poderia ter sido extrapolado a partir da experiência anterior.