Helios : le futur des systèmes d'exploitation chez Microsoft ?

Une vaste convergence de projets chez Microsoft 129
Entre les dates de sortie de Windows XP et de Vista, Microsoft a travaillé sur de nombreux projets qui commencent à peine à produire leurs fruits. L’environnement .NET par exemple commence à montrer véritablement sa maturité, tandis que d’autres projets plus lointains font maintenant parler d’eux.

La convergence de différents projets

Parmi ces derniers, on citera par exemple Singularity, un système d’exploitation codé dans sa plus grande partie en code managé et n’utilisant que des processus isolés. D’un autre côté, Microsoft Research a travaillé en collaboration avec l'ETH Zurich System Group sur BarrelFish, un autre système d’exploitation, mais qui considère cette fois que l’ordinateur est un ensemble de nœuds, exactement comme dans un réseau informatique. À la frontière de ces deux projets, on en trouve un autre, qui représente peut-être la finalité de tout ce que l’éditeur entreprend : Helios.

singularity 
L'architecture de Singularity

Charon, le créateur du site Ma-Config.com et co-auteur des dossiers sur Vista et Windows 7, a publié une explication intéressante de ce travail très spécial. Le projet Helios fait référence au Soleil, et plus particulièrement au système solaire, l’étoile entourée de ses planètes qui lui gravitent autour. Dans le concept d’Helios, on reprend les bases de BarrelFish. Chaque unité de calcul va se voir attribuer un noyau, ce qui inclut aussi bien les processeurs que les GPU par exemple. C’est le concept du « manycore » : un lot d’unités, toutes considérées globalement sur un pied d’égalité. Et, pour reprendre l’analogie du système solaire, un noyau principal se tient au centre de l’ensemble et joue le rôle de chef d’orchestre.

Un soleil et ses planètes

Le fonctionnement d’Helios est très particulier. Les noyaux qui sont arbitrés ne sont pas amputés : ce sont des micronoyaux qui possèdent chacun leur propre ordonnanceur (scheduler) et leur propre gestion de la mémoire.

Dans Helios, le noyau central coordonne l’ensemble. Il démarre et arrête les noyaux satellitaires et leur distribue les travaux à accomplir, tout en établissant les communications entre eux. Les processus qui sont envoyés à ces noyaux sont de type Singularity, c’est-à-dire scellés : chaque processus est complètement isolé du noyau (SIP, Software Isolated Process) par le langage de développement. De plus, contrairement à Windows où les DLL sont chargées dans la zone mémoire du processus, elles ont sous Singularity leur propre processus. Une application ne signifie ainsi plus un seul processus. Enfin, tous ces processus communiquent entre eux par des canaux spécifiés et typés.

Voici donc comment les choses se passent dans les grandes lignes :
  • Les processus Singularity sont distribués aux noyaux satellitaires, chaque processus ne pouvant s’exécuter que sur un seul noyau, ce qui inclut l’ensemble des threads qui y sont rattachés.
  • Les noyaux communiquent entre eux par les canaux cités plus haut, mais ce système peut en outre être utilisé pour les échanges distants, ce qui inclut par exemple les communications TCP.
  • On peut attribuer une affinité pour un noyau satellitaire particulier à une application
  • L’interface entre les noyaux et les processus est la même partout, quel que soit le noyau. Cette uniformité est nécessaire pour que le noyau coordinateur puisse distribuer les tâches sans barrières.
Il faut bien préciser que l’installation d’une application Helios fonctionne exactement comme pour Singularity. Le code présenté est intermédiaire (MSIL) et est compilé (par le compilateur Bartok) en tenant compte de l’architecture matérielle gérée par le noyau satellitaire choisi. L’apparition d’une nouvelle architecture se traduirait simplement par une nouvelle version du compilateur ou une extension.

Si l’on regarde du côté de l’architecture actuelle de nos ordinateurs familiaux ou même professionnels, on peut considérer que rien n’est encore compatible. Helios possède actuellement deux types de noyaux satellitaires fonctionnels pour les architectures suivantes :
  • XScale d’Intel
  • NUMA (un noyau par domaine)
Du côté des GPU, rien n’est encore compatible, car Helios exige la présence d’un timer et d’un contrôleur d’interruption. Mais il est important de signaler que les développeurs travaillent actuellement sur un noyau satellitaire pour l’architecture Larrabee d’Intel.

La question que l’on se pose est : ce système est-il performant ? Selon des tests internes et, bien entendu, préliminaires, il semble bien que ce soit le cas.

helios 

Ces graphiques montrent deux tests :
  1. Le premier compare, sur une architecture XScale, le temps de résolution d'opérations mathématiques pendant qu'une indexation de fichiers est en cours. La colonne grise représente les performances sur les opérations mathématiques sans noyau satellite, la colonne hachurée, avec un noyau satellite. L’écart de performances est de 28 % en faveur du noyau satellite, celui-ci récupérant le travail sur l'indexation.
  2. Le second test prend place sur une architecture NUMA et mesure le temps pris par 16 threads pour appeler un million de fois une API responsable du basculement des threads. Via le noyau satellite, le temps nécessaire est plus cours de 68 %.
Reste à savoir maintenant comment Helios va se glisser jusque dans le marché informatique, et sous quelle forme. Les chercheurs travaillent à rapprocher Windows de ce nouveau système, et l’on peut considérer MinWin, dans l’absolu, comme l’un des noyaux satellitaires potentiels. Windows deviendrait alors un système extérieur, ce qui ouvre des perspectives intéressantes pour la compatibilité et les transitions technologiques.

Ceux qui n'ont pas peur des détails techniques en anglais pourront lire le document source de Microsoft Research au sujet d'Helios.