Diferença entre hypervisor e exokernel


7

Um hypervisor (1º tipo) é um software que cria e executa máquinas virtuais, gerenciando as solicitações dos sistemas operacionais dos hóspedes ao hardware.
Um exokernel é um kernel do sistema operacional, que permite que os programas acessem diretamente o hardware ou, com o apoio de bibliotecas específicas que implementam abstações, executem diferentes tipos de executáveis ​​para essa arquitetura .

Ambos são uma camada de abstração entre o hardware e o software aplicativo.
Os dois permitem executar na mesma máquina diferentes executáveis ​​/ software / sistemas operacionais / qualquer que seja

Então, qual é a diferença entre os dois?


Não sei se isso é ontopico; a noção de "hypervisor" parece estar fora de escopo aqui, enquanto "kernel" provavelmente não está.
Raphael

2
Por que não deveria ser ontopico? Esta pergunta, seguindo a ajuda , não é sobre programação, não é sobre um pedaço específico de sw / hw, não é sobre computação numérica, e eu estou pedindo o conceito científico por trás dos dois pedaços de software descritos
inclua

Respostas:


7

O que é executado em cima de um hipervisor é um ou mais sistemas operacionais completos. Um hipervisor virtualiza o hardware, para que cada sistema operacional seja "induzido" a acreditar que possui uma máquina inteira para si. O gênio da engenharia que se dedica aos hipervisores é como fornecer essa virtualização com pouco ou nenhum custo (em comparação com a execução de um sistema operacional diretamente no hardware físico).

O que é executado em cima de um exokernel é um monte de processos no nível do usuário. Cada um dos processos é anexado a uma biblioteca (talvez a mesma biblioteca, talvez bibliotecas diferentes) que fornecem vários serviços e políticas. O objetivo do exokernel é fornecer apenas proteção (impedindo que um processo use os recursos dedicados a um processo diferente) e deixar programas no nível do usuário para selecionar as políticas que foram mais eficientes para eles. O Exokernel era realmente um projeto de pesquisa cuja saída principal era uma série de estudos sobre diferentes tipos de serviços do sistema operacional e as barreiras para a implementação eficiente desses serviços. Outra maneira de visualizar o projeto Exokernel era que era um projeto para investigar como criar um microkernel isso não é terrivelmente ineficiente e lento.

Um dos grandes problemas dos microkernels é que eles estão constantemente "ultrapassando os limites do processo" e / ou alternando entre o modo de usuário e o modo de kernel com mais freqüência do que um kernel monolítico (como o Linux). O custo de alternar do modo de usuário para o modo de usuário o modo kernel ou do modo kernel para o modo usuário é surpreendentemente alto (nos milhares de ciclos de máquina por switch).

Não está claro para mim em que grau o projeto Exokernel foi bem-sucedido ou falhou. Certamente, existem vários casos em que surgiram novas maneiras surpreendentes de fornecer proteção de recursos (como o modelo de disco em que o sistema operacional gerencia permissões para blocos de disco e todo o sistema de arquivos é gerenciado no nível do usuário). Eles também foram capazes de aproveitar várias das boas idéias da época, por exemplo, as técnicas de agendamento de loteria de Carl Waldsburger. E houve alguns casos em que a proteção baseada em capacidade se mostrou bastante eficiente.

Houve outros casos em que a flexibilidade da política aumentou drasticamente o número de cruzamentos de limites do kernel e eles tiveram que recorrer a outras técnicas. Por exemplo, na filtragem de pacotes de rede, em vez de fazer a filtragem no nível do usuário, eles fizeram isso no kernel, mas deram ao programa do usuário a capacidade de enviar um pequeno programa (em uma linguagem de programação limitada (e, portanto, segura)) que seria executada em o kernel. Idéias semelhantes nesse domínio estavam sendo investigadas na mesma época pelo projeto de sistema operacional SPIN da Universidade de Washington .


11
Parece a distinção entre paravirtualização (onde o SO sabe que não está sendo executado diretamente no hardware e pode explorar uma interface de comunicação com o hipervisor) e o modelo do exokernel pode ser um pouco confuso.
Paul A. Clayton
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.