Sep 28 2009
Un nouveau système d’exploitation pour les systèmes multi-coeurs: BarrelFish
Lors de la prochaine conférence SIGOPS sur les principes fondamentaux des systèmes d’exploitations (SOSP’09), les nombreux auteurs (Andrew Baumann (ETH Zurich), Paul Barham (MSR Cambridge), Pierre-Evariste Dagand (ENS Cachan Bretagne), Tim Harris (MSR Cambridge), Rebecca Isaacs (MSR Cambridge), Simon Peter (ETH Zurich), Timothy Roscoe (ETH Zurich), Adrian Schüpbach (ETH Zurich), Akhilesh Singhania (ETH Zurich)) vont présenterun papier intitulé: The Multikernel: A New OS Architecture for Scalable Multicore Systems.
Ce papier présente une nouvelle architecture pour les systèmes d’exploitation. Tout d’abord, malgré la présence de nombreuses personnes de Microsoft Research, le système d’exploitation qui en résulte, n’est pas du tout un Windows mais un bien un nouveau système d’exploitation. Ce système n’a pas pour but d’être utilisable mais il présente une nouvelle architecture. C’est un OS d’expérimentation uniquement qui n’ira surement pas plus loin que le prototype. Néammoins, il est possible que certains principes soient ensuite utilisé dans des systèmes fonctionnels.
Le principe de cet OS est de pouvoir passer outre le problème actuel que les OS rencontrent de plus en plus: la synchronisation des coeurs dans les systèmes massivement multicoeur et l’hétérogénité du fonctionnement hardware des processeurs multi-coeurs. Par hétérogénité hardware, les auteurs veulent parler du fonctionnement différents des multicoeurs proposées par les acteurs du marché (Sun, Intel, AMD). En effet, chacun utilise un fonctionnement différent sur les communication inter-coeurs avec des controleurs de mémoire à différents niveaux.
Les OS actuelles permettant la prise en charge de coeur multiples fonctionnent en utilisant une mémoire partagée pour l’échange d’informations mais également le stockage des données. En introduisant leur architecture multikernel, les auteurs proposent une communication explicite (contrairement à celle implicite via le partage de mémoire) en utilisant un système de message. Cela leur permet d’éviter que la mémoire partagée deviennent un goulot d’étranglement. Les études récentes montrent qu’au delà de 80 coeurs, le partage de la mémoire devient critique. Le système par message doit permettre de passer outre ce problème. Il se base sur un système de type RPC et a une complexité qui est linéaire mais également largement inférieur à celle du système par mémoire partagée. Dans le cas du multikernel, chaque coeur et chaque noyau se retrouve avec un espace de mémoire dédiée et partage donc les informations par un système de message proche de celui de RPC et très compacte (64bit).
Le principe de leur architecture est un système distribué communiquant avec des messages et sans partage de mémoire. Le partage de lock ne fonctionne plus par une structure unique de donnée se situant dans la mémoire partagée mais par un lock répliqué autant de fois que de nombre de coeurs accédant à la donnée et synchroniser via des échanges de messages. Le système de message est au final relativement proche de celui des micronoyaux et tout particulièrement celui de L4.
Pour conclure, c’est un nouveau model très intéressant et qui propose une nouvelle solution pour mieux prendre en compte les machines multicoeurs. D’un point de vue de la sécurité, toutes les communications entre coeurs étant explicites, cela devrait pouvoir faciliter le travail pour détecter des fluxs d’informations illicites. En se basant sur des principes de micronoyau, on peut espérer que la sécurité amenée par ce modèle pourra également améliorer la sécurité du multikernel. C’est bien un OS à surveiller si son développement continue contrairement à la plupart des projets de recherche qui ne sont rarement développé très longtemps.
