Make my ideas great again.
This commit is contained in:
parent
cf2a007005
commit
a1739fe4f5
1 changed files with 42 additions and 31 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue