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 .