Unikernel
From Wikipedia, the free encyclopedia

Les unikernels sont des images systèmes spécialisées, où tous les processus partagent le même espace mémoire, créées en utilisant des systèmes d'exploitation bibliothèques.
Le développeur sélectionne, à partir d'un ensemble modulaire, un ensemble minimum de bibliothèques qui correspondent aux services du système d'exploitation nécessaires à l'exécution de son application. Ces bibliothèques sont alors compilées avec l'application et des configurations pour créer des images fixes, à but unique, qui fonctionnent directement sur un hyperviseur ou sur du matériel sans intervention d'un système d'exploitation tel que Linux ou Windows.
Dans un système d'exploitation bibliothèque, les limites de protection sont repoussées vers les bas niveaux, ce qui permet :
- un ensemble de bibliothèques qui implémentent les mécanismes nécessaires pour faire fonctionner le matériel ou pour gérer les protocoles réseau;
- un ensemble de règles permettant d'appliquer une politique d'accès et d'isolation au niveau de l'application.
Les premiers systèmes de ce type étaient Exokernel et « Nemesis »[note 1] vers la fin des années 1990.
L'architecture des 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 de privilège entre l'espace utilisateur et 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 au matériel sans changement de contexte. Un inconvénient est que, puisqu'il n'y a pas de séparation, il est difficile de faire fonctionner plusieurs applications de concert dans un système d'exploitation bibliothèque avec une isolation des ressources. De plus, des pilotes de 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 des machines virtuelles avec le temps processeur qu'elles consomment, tout en fournissant une isolation forte. 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[1].