
Ce soir j'ai l'occasion de discuter sur un forum d'un projet sur lequel microsoft travaille depuis près de 5 ans maintenant. En effet ce dernier s'appelle "
Singularity" et consiste à écrire un nouveau système d'exploitation basé sur un "micro noyau": "
repenser les fondamentaux qui régissent la conception d'un système d'exploitation".
Tout d'abord rappelons ce qu'est le noyau d'un système d'exploitation: "
c'est la partie fondamentale de certains systèmes d’exploitation. Elle gère les ressources de l’ordinateur et permet aux différents composants — matériels et logiciels — de communiquer entre eux.
En tant que partie du système d’exploitation, le noyau fournit des mécanismes d’abstraction du matériel, notamment de la mémoire, du (ou des) processeur(s), et des échanges d’informations entre logiciels et périphériques matériels. Le noyau autorise aussi diverses abstractions logicielles et facilite la communication entre les processus."
Vous l'avez donc compris c'est le "coeur" du système et c'est donc lui qui, en grande partie, est garant de sa stabilité.
Actuellement les principaux systèmes d'exploitations utilisent des noyaux de type "monolithique modulaire" ou "micro-noyau enrichi".
On distingue sur un système informatique 3 zones qui communiquent de la façon suivante:
Le matériel <-> Le noyau <-> L'espace utilisateur
L'espace utilisateur regroupe des processus utilisateurs: des programmes. Concernant la zone noyau on distingue 2 choses, tout d'abord un bloc dans lequel se trouve les fonctions fondamentales de ce dernier puis un autre regroupant ce que l'on appelle les "modules": un module est par exemple un pilote matériel.
Pourquoi migrer vers un autre type de noyau?
Un des inconvénients principal des noyaux monolithique modulaire est que le système de modules se trouve dans la zone "noyau", imaginons qu'un module contienne des erreurs celui-ci met alors la stabilité du système en péril. Aussi prenons exemple sur linux son noyau dépasse aujourd'hui allègrement les 6 millions de lignes de code si mes souvenirs sont corrects, vous comprenez donc qu'il est théoriquement de plus en plus difficile de le maintenir.
Un micro noyau propose donc des solutions face à ces 2 problèmes majeurs. Dans un premier temps un micro-noyau regroupe que les fonctions indispensables au système pour environ 50000 lignes de code et dans un second temps en migrant les "modules" de la zone "noyau" vers l'espace utilisateur.
On appelle alors maintenant ces modules des services. On comprend donc que la stabilité générale du système est améliorée notamment car chaque service bénéficie de la protection de la mémoire, un service qui plante n'aura théoriquement donc qu'une conséquence faible sur la stabilité générale de la machine.
Cependant les développeurs sont confrontés à 2 problèmes avec ces micro-noyaux:
- Le nombre d'appel système fait par les services.
- Il faut mettre en oeuvre des moyens de communication sécurisé entre les services et le noyaux ce qui augmente les temps de traitement.
Il semble évident qu'a terme tous les OS migrerons vers ces noyaux (next gen?) qui en théorie permettent de rendre les systèmes plus stables.
Bref corrigez moi si j'ai fais des erreurs, j'espere avoir résumé la situation correctement