Unikernel

Lesunikernelssont des images systèmes spécialisées, où tous lesprocessuspartagent le mêmeespace mémoire, créées en utilisant dessystèmes d'exploitationbibliothèques.
Ledéveloppeursélectionne, à partir d'un ensemblemodulaire, un ensemble minimum de bibliothèques qui correspondent aux services du système d'exploitation nécessaires à l'exécutionde sonapplication. Ces bibliothèques sont alorscompiléesavec l'applicationet desconfigurationspour créer des images fixes, à but unique, qui fonctionnent directement sur unhyperviseurou sur dumatérielsans intervention d'unsystème d'exploitationtel queLinuxouWindows.
Dans un système d'exploitation bibliothèque, les limites de protection sont repoussées vers lesbas niveaux, ce qui permet :
Les premiers systèmes de ce type étaientExokernelet « Nemesis »vers la fin desannées 1990.
L'architecturedes systèmes d'exploitation bibliothèque présente plusieurs avantages et inconvénients en comparaison de la conception de systèmes plus classiques. Un des avantages est que, puisqu'il n'y a qu'un seul espace d'adressage, les transitions deprivilègeentre l'espace utilisateuret l'espace noyau, régulières sur les systèmes classiques, ne sont pas nécessaires. Ainsi, un système d'exploitation bibliothèque peut offrir des performances améliorées en offrant un accès direct aumatérielsans changement de contexte. Un inconvénient est que, puisqu'il n'y a pas de séparation, il est difficile de faire fonctionner plusieursapplicationsde concert dans un système d'exploitation bibliothèque avec une isolation des ressources. De plus, despilotesde matériel sont requis pour la machine sur laquelle le système d'exploitation fonctionne. Les changements fréquents du matériel font de ce besoin de réécrire des pilotes régulièrement un problème.
La virtualisation permet d'éviter ces points négatifs sur du matériel courant. Les hyperviseurs modernes permettent de simplement gérer desmachines virtuellesavec letemps processeurqu'elles consomment, tout en fournissant uneisolationforte. Un système d'exploitation bibliothèque fonctionnant dans une machine virtuelle n'a besoin d'implémenter que les pilotes pour le matériel virtuel stable que fournit cet hyperviseur, et peut laisser la tâche complexe de gérer le véritable matériel à l'hyperviseur. Cependant, des bibliothèques permettant d'utiliser des protocoles réseau sont toujours nécessaires pour remplacer les services fournis par un système d'exploitation plus classique. La création de ces bibliothèques de protocoles est la plus grande partie du travail d'implémentation d'un système d'exploitation bibliothèque moderne.
Les unikernels ont un certain nombre d'avantages, mais aussi d'inconvénients, en comparaison des systèmes d'exploitation classiques :
Ces avantages poussent les unikernels vers l'utilisation en tant que systèmes de typeorienté-servicesoumicroservices
Cependant, le haut niveau de spécialisation signifie que les unikernels ne sont pas appropriés à l'informatiquegénéraliste, avec plusieurs utilisateurs, pour laquelle les systèmes d'exploitation classiques sont utilisés. Ajouter des fonctionnalités ou altérer un unikernelcompiléest en général impossible, et l'approche acceptée est de recompiler et de déployer un nouvel unikernel avec les changements désirés.
Il existe un grand nombre de nouvelles approches à la construction d'unikernels, qui sont à des degrés variables de maturité.
ClickOSest uneplateformehaute performance virtualisée pour lesappliances, basée sur un système de virtualisationopen-source. Des analyses de performance montrent que les machines virtuelles ClickOS sont petites (5Mo), démarrent vite (jusqu'à 20 millisecondes), ajoutent peu de délai à l'application cible (45 microsecondes), et plus de 100 peuvent être en fonctionnement simultané, en saturant uneinterface10Gb, sur unserveurpeu cher standard.
Cliveest un système d'exploitation conçu pour fonctionner dans desenvironnementsdecalcul distribuéet d’informatique en nuage, écrit dans lelangage de programmationGo.
Drawbridge est un prototype de recherche sur une nouvelle forme de virtualisation pour lesandboxingd'applications. Drawbridge combine deuxtechnologiescentrales : un picoprocessus, qui est un conteneur d'isolation basé au niveau processus présentant une surface d'APIkernelminimale, et un système d'exploitation bibliothèque, qui est une version de Windows modifiée pour fonctionner efficacement dans un picoprocessus.
Grapheneest un système d'exploitation bibliothèque compatible avec Linux qui concentre ses efforts sur lasécurisation d'applicationsanciennesmulti-processus, de type serveur oushell. Graphene sépare une application multi-processus sur plusieurs picoprocessus, avec lesabstractionsinter-processus (signaux,files d'attente,sémaphores, etc.) coordonnées sur desfluxsimples. Pour les applications présentant des principes de sécurité multiples, Graphene peut sandboxer dynamiquement un picoprocessus exposé.
HaLVM(Haskell Lightweight Virtual Machine) est un port deGlasgow Haskell Compiler, qui permet auxdéveloppeursd'écrire des machines virtuelleshaut niveaulégères qui fonctionnent sur l'hyperviseurXen.
IncludeOSest un système d'exploitation bibliothèque minimaliste, orienté services, open-source, et intégrable, visant les services dans le nuage.  C'est actuellement un projet de recherche permettant de faire fonctionner ducodeC++sur du matériel virtuel.
LINGest un unikernel basé surErlang/OTP qui est capable d'interpréter les fichiers .beam. Les développeurs peuvent créer du code Erlang et le déployer en tant qu'unikernels LING. LING retire la majorité desfichiersvecteurs, n'utilise que trois librairies externes et n'utilise pasOpenSSL.
MirageOSest un système d'exploitation bibliothèque qui permet de créer des unikernels pour des applicationsréseauà haute performance sécurisées sur une grande variété de plateformesmobilesou dans le nuage. Il existe actuellement plus de cent bibliothèques MirageOSet un nombre croissant de bibliothèques compatibles dans l'écosystèmeOCaml.
OSv(en)est un système d'exploitation conçu par Cloudius Systems spécifiquement pour les machines virtuelles dans le nuage. Capable de démarrer en moins d'une seconde, OSv est développé dans le seul but d’exécuter une application sur un hyperviseur quelconque, ce qui offre de meilleures performances et une gestion simplifiée. OSv peut lancer desexécutablesLinux non-modifiés (avec quelques limitations) et supporte les langagesC,C++,Ruby,Node.js, et les langages basés sur laJVM.
Rumprunest unepilelogiciellequi permet de lancer des logicielsPOSIXnon-modifiés dans un unikernel. Rumprun supporte de multiples plateformes, dont le fonctionnement direct sur du matériel et des hyperviseurs tels queXenouKVM. Il est basé sur desrump kernel(en)qui offrent des pilotes logiciel portables,libres, séparés en composants, et de qualité, pour notamment dessystèmes de fichiers, des gestionnaires d'appels systèmesPOSIX, des pilotes dematérielPCI, une pile de protocoleSCSI,virtioet une pileTCP/IP.
Runtime.jsest un système d'exploitation bibliothèque open-source pour le nuage qui fonctionne sur la machine virtuelleJavaScript, qui peut être incluse avec une application et déployée comme une image virtuelle légère et immuable. Runtime.js est basé sur lemoteur javascriptV8et supporte actuellement l'hyperviseurQEMU/KVM.