Le système d'exploitation Singularity
26 Avril 2010
Singularity est un important projet de Microsoft, lancé en 2003 avec une équipe de quelques dizaines de chercheurs, visant à repenser la façon de faire un système d'exploitation.
L'idée de base consiste à utiliser du code managé (sur machine virtuelle), dans une architecture de type micro-noyau, pour assurer la sécurité, la stabilité et l'isolation des différents processus, au lieu de reposer sur une protection matérielle. Le but est de gagner en souplesse et en légèreté.
Un processus (SIP : Software Isolated Process) peut-être aussi bien un pilote qu'un programme utilisateur, en fonction de ses privilèges. Chacun est indépendant et possède son propre GC. Ils sont écrit en byte-code .Net, typiquement généré à partir de Sing#, une variante du C#, et statiquement vérifiés avant exécution. Ainsi, ils peuvent tourner avec les même privilèges et dans le même espace mémoire que le noyau, les opérations assembleurs ou manipulations de pointeurs étant interdites. Un MBP (Manifest Based Program) décrit la liste des dépendances requises pour un déploiement simplifié.
Les communications entre SIP, qui constituent le point chaud d'un micro-noyau, s'effectuent au travers de canaux bi-directionnels typés. Le système de type est essentiellement une logique temporelle décrivant le protocole utilisé aux deux bouts, et assure que les 2 processus n'échangent que des messages de type attendu. Un type de message particulier étant l'établissement d'un nouveau canal.
Pour des raisons de performances, les messages s'échangent sans être recopiés : un tas d'échange, zone mémoire soumise à de nombreuses contraintes (un seul processus à la fois peut posséder un pointeur vers un objet) est alors utilisé. Les canaux peuvent également servir à une gestion fine des privilèges : en effet, le droit d'accès à un fichier, ou à un pilote, est simplement la possession d'un canal particulier.
blog comments powered by Disqus