rump kernels

This commit is contained in:
Philippe Pittoli 2025-03-03 01:23:56 +01:00
parent 6143015a54
commit 8b2d60cd4e

View file

@ -57,13 +57,15 @@ Concernant les fonctionnalités qui m'intéressent bien :
- Une architecture à micro-noyau
- Écriture de pilotes en mode utilisateur.
Ça se fait déjà sur certains systèmes (comme Fuchsia), donc ce n'est pas insurmontable.
La partie (un peu) complexe est de rendre cela rapide, mais ça se fait (voir le papier skybridge-eurosys19).
Ça se fait déjà sur certains systèmes (comme NetBSD, Fuchsia, etc.), donc ce n'est pas insurmontable.
La partie (un peu) complexe est de rendre cela rapide, mais ça se fait (voir le papier skybridge-eurosys19 pour un point de départ).
Par ailleurs, NetBSD a le concept de "rump kernel", ses pilotes peuvent être inclut dans le noyau NetBSD ou en espace utilisateur (voire sans OS du tout).
Il serait donc possible de récupérer leurs pilotes assez rapidement.
- Mise à jour en live du système, sans redémarrage.
Comme avec Minix par exemple, une fois que le noyau est dans un état stable et permet les différentes fonctionnalités de base, on pourra le mettre de côté jusqu'au jour où on cherchera à améliorer ses performances.
En attendant, toutes les mises à jour du système incluant les nouveaux pilotes, les nouveaux systèmes de fichiers, la gestion des utilisateurs… peuvent se faire sans redémarrage.
sauf que si on a un REPL à base de Scheme en espace noyau… le niveau de gloire augmente.
Une fois que le noyau dans un état stable et qu'il offre les services de base, il ne reçoit plus beaucoup de mises à jour.
L'ajout de nouveaux pilotes, de nouveaux systèmes de fichiers, la gestion des utilisateurs… peuvent se faire sans toucher au noyau, donc sans (forcément) redémarrer le système.
- Un développement unifié de tout le système façon BSD.
C'est le contraire du développement chaotique côté Linux où tous les programmes sont écrits différemment.
@ -103,7 +105,10 @@ Il faut lire le code des systèmes actuels pour apprendre et s'inspirer.
https://ipads.se.sjtu.edu.cn/_media/publications/skybridge-eurosys19.pdf
L'idée générale est de limiter au maximum les changements de contexte.
Cela se fait sans mal sur x86 grâce à des instructions spécialisées, à voir si on peut l'adapter sur RISC-V.
Cela se fait sans mal sur x86 grâce à des instructions spécialisées.
Certains micro-noyaux sont certes plus lents sans SkyBridge, mais gardent des performances acceptables.
Ce papier peut être vu comme un point de départ dans le monde de la recherche dans les micro-noyaux et les IPC.
- Introduction à x86 par les gens qui font ffmpeg :
https://github.com/FFmpeg/asm-lessons
@ -123,6 +128,11 @@ Il faut lire le code des systèmes actuels pour apprendre et s'inspirer.
Peut-être plus complexe et moins adapté à ce qu'on voudrait faire que LCC, mais méritait une mention.
Ici il y a de la vérification de types et autres joyeusetés.
- Le concept de "rump kernel" est de faire tourner des pilotes soit dans un noyau monolithique, en espace utilisateur ou sans système du tout.
https://www.usenix.org/system/files/login/articles/login_1410_03_kantee.pdf
Concept utilisé dans NetBSD pour simplifier l'écriture et la correction rapide de pilotes.
Par la même occasion, cela permet d'avoir une très haute portabilité des pilotes sur d'autres systèmes.
# NOTES EN VRAC SUR FUCHSIA
Le noyau Zircon (de Fuchsia, OS de Google), en quelques mots :