Make my ideas great again.

This commit is contained in:
Karchnu 2025-02-23 01:13:51 +01:00
parent cf2a007005
commit a1739fe4f5

View file

@ -1,63 +1,72 @@
# Idées pour la suite
Deux pistes :
Au choix :
* Se contenter de xv6 pour apprendre le dév bas niveau et s'arrêter là.
Éventuellement jouer à faire quelques optimisations, ajouter des syscalls, etc.
Cette option permet d'apprendre sans trop forcer.
1. Se contenter de xv6 pour apprendre le dév bas niveau et s'arrêter là.
Éventuellement jouer à faire quelques optimisations, ajouter des syscalls, etc.
Cette option permet d'apprendre sans trop forcer.
* Contribuer à un projet existant.
2. Contribuer à un projet existant.
Cette option peut être complémentaire à une autre.
C'est l'option qui est la plus sociale, notre travail est directement utile pour plein de gens.
* Tenter de conquérir le monde.
L'étude de ces systèmes est intéressante peu importe ce qu'on décide de faire par ailleurs.
On plonge occasionnellement dans leur code et on apprend.
Par exemple, Plan9 est conceptuellement le système le plus intéressant et doit être étudié.
3. Tenter de conquérir le monde.
# Contribution à un projet existant
Plein de pistes :
L'idée serait de ne pas développer tout un OS, mais seulement contribuer à un projet.
Soit de niche : Minix, DuskOS (c'est du Forth), Plan9, Fuchsia, L4, etc.
Soit un poil plus utilisé : un BSD, un OS embarqué type Zephyr, Linux, etc.
- Ne pas développer tout un OS, mais seulement contribuer à un projet.
Soit de niche : Minix, DuskOS (c'est du Forth), Plan9, Fuchsia ou L4 ?
Soit un poil plus utilisé : un BSD, un OS embarqué type Zephyr, Linux ?
Que faire avec ces systèmes ? Des pistes :
La question se posera aussi de savoir ce qu'on veut faire avec.
Des pistes :
- Ajouter des parties manquantes dans Minix pour le rendre plus proche des fonctionnalités d'un OS moderne.
Il manque actuellement quelques fonctionnalités assez majeures, comme l'USB entre autres.
- Une sortie audio HDMI ou du bluetooth sur OpenBSD.
- Améliorer la prise en charge du matériel sur Plan9 ou Minix.
- Ajouter pledge et unveil sur Linux.
- Minix : ajouter des parties manquantes pour le rendre plus proche des fonctionnalités d'un OS moderne.
Il manque actuellement quelques fonctionnalités assez majeures.
Exemple : pas de multicœur, USB incomplet (de mémoire), etc.
QUELLE QUE SOIT NOTRE DÉCISION : améliorer un OS existant est toujours une bonne idée et peut se faire en parallèle d'un autre projet.
- Sur OpenBSD :
- Une sortie audio HDMI.
- Du bluetooth.
- Un système de fichiers avec un journal (type HAMMER2).
- Plan9 et Minix : améliorer la prise en charge du matériel.
- Linux : pledge et unveil.
# Conquête du monde (en toute humilité)
Cette dernière option implique de développer un OS qui n'a encore jamais été fait, pour se lancer un défi.
Exemple : un OS à micro-noyau en Scheme.
Un OS dans lequel on partirait sur l'implémentation de ce qui nous passe par la tête, sans s'embêter avec les standards dont on ne veut pas.
Ma proposition serait de faire un OS à micro-noyau en Scheme.
Intéressant mais bien plus complexe que le reste.
On en apprendra beaucoup tout en ayant un OS qui pourrait intéresser des gens.
Concernant les fonctionnalités qui m'intéressent bien :
- Avoir un OS qu'on peut améliorer à la volée via un interpréteur Scheme côté noyau.
(ou du Forth, sans doute avec DuskOS car c'est déjà là et activement développé)
- Un interpréteur Scheme côté noyau pour améliorer le système en direct, à la volée.
(Ou du Forth, sans doute avec DuskOS car c'est déjà là et activement développé.)
- Une architecture à micro-noyaux qui permette :
- Une architecture à micro-noyau qui permette :
- L'écriture de pilotes en mode utilisateur.
Ça se fait déjà sur certains systèmes, donc ce n'est pas insurmontable.
Ça se fait déjà sur certains systèmes (comme Fuchsia), donc ce n'est pas insurmontable.
- La mise à jour en live du système, sans redémarrage.
Comme avec Minix par exemple, sauf que si on a un REPL à base de Scheme en espace noyau… le niveau de gloire augmente.
- Un développement unifié de tout le système façon BSD,
contrairement au développement chaotique côté Linux où tous les programmes sont écrits différemment.
- 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.
- Reprendre masse de concepts de Plan9.
Selon moi Plan9 est le système le plus intéressant conceptuellement et devrait être étudié, quoi qu'on décide.
En particulier, voir le concept de « tout est fichier » et comment cela s'intègre pour des actions complexes sur des périphériques.
De même, le protocole 9P ou encore la gestion du partage de ressources (namespace) des processus méritent de l'attention.
- Reprendre quelques concepts de DuskOS.
DuskOS implémente HAL, une couche d'abstration pour générer des instructions binaires.
En particulier, DuskOS implémente HAL, une couche d'abstration pour générer des instructions binaires.
Cette abstraction fournit une API pour que des compilateurs puissent s'y greffer et ne pas eux-même gérer la dernière étape de compilation.
Le développeur principal a fait un compilateur C et Scheme avec cette abstraction.
Cette factorisation de la dernière étape des compilateurs rend le code plus concis.
@ -72,11 +81,13 @@ Il faut lire le code des systèmes actuels pour apprendre et s'inspirer.
- Running Scheme On Bare Metal (Experience Report):
https://doc.lagout.org/programmation/Lisp/Scheme/An%20Introduction%20to%20Scheme%20and%20its%20Implementation.pdf
- un papier qui indique comment faire des micro-noyaux rapides
(l'idée générale est de limiter au maximum les changements de contexte, ce qui semble se faire sans trop de mal sur du x86)
- Un papier qui indique comment faire des micro-noyaux rapides :
https://ipads.se.sjtu.edu.cn/_media/publications/skybridge-eurosys19.pdf
- introduction à x86 par les gens qui font ffmpeg
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.
- Introduction à x86 par les gens qui font ffmpeg :
https://github.com/FFmpeg/asm-lessons
# NOTES EN VRAC SUR FUCHSIA