Il est possible de classer les systèmes d'exploitation selon plusieurs critères. L'un d'entre eux est le type de noyau qu'ils utilisent. Dans cette catégorie, on distingue deux grandes familles, la première regroupe les noyaux monolithiques, c'est le cas de Linux où toutes les fonctionnalités (gestion du matériel, des processus, gestion du réseau et des systèmes de fichiers) sont regroupées dans un seul gros morceau de code. Ceci est la vision traditionnelle des sytèmes de type Unix. Mais il existe une alternative ...
L'autre grande famille de systèmes se base sur un noyau bien plus petit. Dans ce cas, le micro-noyau est conçu de manière complètement différente. En effet, tout ce qui sort du cadre strict de la gestion de matériel, de processus, de mémoire et de la communication inter-processus ne fait plus partie du micro-noyau. Le gros avantage qui en découle est naturellement une modularité extrême. Il est alors possible d'implémenter toutes les autres fonctionnalités en dehors du kernel, ce qui a pour effet de les placer dans le mode utilisateur.
Mach
Le micro-noyau Mach (prononcer "mârr") a été conçu dans une optique de portabilité et de support multi-processeurs. Aujourd'hui, ces arguments ne sont plus d'actualité. Linus Torvalds a, en effet, démontré qu'il était parfaitement possible de gérer de manière performante une architecture multi-processeurs avec un noyau monolithique, tout en permettant une portabilité exemplaire. Fort heureusement, les motivations originelles des concepteurs de Mach apportent bien d'autres avantages, mais avant tout, voyons son histoire ...
Les racines de Mach proviennent d'un système développé par l'université de Carnegie Mellon (CMU) sous le nom de Accent. Ce dernier était très en avance au niveau conceptuel mais interdisait malheureusement toute compatibilité avec les Unix classiques de l'époque. Mach a donc été développé en reprenant des principes déjà présents dans Accent, mais avec deux nouveaux objectifs que nous avons cités plus haut : portabilité et gestion SMP. Mach est donc historiquement une fusion entre Accent et le noyau BSD 4.2. Au fil du développement de Mach, les composants de BSD étaient réimplémentés et remplacés par ceux de Mach. A la fin des années 80, Mach reprenait déjà une grande partie du code du noyau BSD, mais ce n'est qu'avec Mach 3 que ce code fut déplacé à l'extérieur du noyau. Tout le code Unix fut déplacé dans le mode utilisateur sous la forme de serveurs. Il était ainsi possible d'utiliser Mach 3 et des serveurs implémentant des systèmes comme Dos, MacOS, OS/2 ou encore HP-UX. Plus intéressant encore, il était possible de faire fonctionner de concert plusieurs serveurs et donc virtuellement plusieurs systèmes en même temps sur la même machine. Il ne s'agit pas là de théorie mais bel et bien de fait; vous trouverez sur http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/publications.html toutes les documentations utiles répertoriant ces expérimentations.
1989 fut l'année de la révélation pour Mach. L'Open Software Fondation (OSF) annonça l'utilisation de Mach comme base pour la création d'un nouveau système appelé OSF/1 (qui sortit en 90). Depuis, les concepts de Mach sont toujours d'actualité. En effet, Mach est également la base du système utilisé sur les stations NeXT, qui sont elles-mêmes l'une des sources d'inspiration de MacOS X. Il n'est donc pas étonnant de voir que Mach 3 et FreeBSD 3.2 forment la base de MacOS X (http://www.apple.com/macosx/server/features/architecture.html). Mach (GnuMach) est également le micro-noyau utilisé pour le système d'exploitation GNU/Hurd.
Principes
L'approche utilisée avec Mach est relativement différente de ce que l'on rencontre avec un Unix classique. Ainsi, par exemple, la notion de processus n'existe pas ou, du moins, pas dans le sens traditionnel. Les fonctionnalités offertes sont réduites au minimum. Mach ne fait pas grand chose mais il le fait très bien. Voyons comment est organisé ce système :
Nous ne pourrons pas exposer ici toutes les caractéristiques du micro-noyau Mach. Vous trouverez dans les liens en fin d'article des références à plusieurs documentations importantes qu'il convient d'étudier pour bien comprendre les nouveautés apportées par un tel concept.
Et le Hurd ?
Le GNU Hurd utilise un micro-noyau de type Mach. Il s'agit de GnuMach qui se place, en termes de fonctionnalités, entre Mach 3 et Mach 4. Il ne s'agit pas là de la première utilisation globale d'un micro-noyau Mach. En effet, les utilisateurs de MkLinux emploient déjà un Mach mais le concept reste très différent.
MkLinux utilise un micro-noyau Mach au-dessus duquel fonctionne un seul serveur qui est dérivé des sources du noyau Linux. C'est là ce qu'on appelle une architecture micro-noyau mono-serveur. Par opposition, GnuHurd utilise une architecture multi-serveurs.
Arrêtons là cette courte introduction. Nous avons présenté quelques-uns des principes de base de Mach et du Hurd et le mois prochain, nous commencerons une exploration plus poussée de ces concepts.
Liens
La page officielle du Hurd
http://www.gnu.org/software/hurd/
Mach homepage
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/mach/public/www/mach.html
Chapitre Mach du livre "Operating System Concepts"
http://www.bell-labs.com/topic/books/os-book/mach-dir/
Les documentations OSF Mach
http://www.hurd-fr.org/ps/
Une collection de documentations sur Mach
ftp://ftp.cs.cmu.edu/project/mach/doc/published/
Oskit/Mach
http://www.cs.utah.edu/flux/
Site de documentation du Hurd
http://hurddocs.sourceforge.net