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
|
# 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à.
|
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.
|
Éventuellement jouer à faire quelques optimisations, ajouter des syscalls, etc.
|
||||||
Cette option permet d'apprendre sans trop forcer.
|
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
|
# 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.
|
Que faire avec ces systèmes ? Des pistes :
|
||||||
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 ?
|
|
||||||
|
|
||||||
La question se posera aussi de savoir ce qu'on veut faire avec.
|
- Minix : ajouter des parties manquantes pour le rendre plus proche des fonctionnalités d'un OS moderne.
|
||||||
Des pistes :
|
Il manque actuellement quelques fonctionnalités assez majeures.
|
||||||
- Ajouter des parties manquantes dans Minix pour le rendre plus proche des fonctionnalités d'un OS moderne.
|
Exemple : pas de multicœur, USB incomplet (de mémoire), etc.
|
||||||
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.
|
|
||||||
|
|
||||||
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é)
|
# 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.
|
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.
|
Ma proposition serait de faire 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.
|
|
||||||
|
|
||||||
Intéressant mais bien plus complexe que le reste.
|
Intéressant mais bien plus complexe que le reste.
|
||||||
On en apprendra beaucoup tout en ayant un OS qui pourrait intéresser des gens.
|
On en apprendra beaucoup tout en ayant un OS qui pourrait intéresser des gens.
|
||||||
|
|
||||||
Concernant les fonctionnalités qui m'intéressent bien :
|
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.
|
- 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é)
|
(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.
|
- 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.
|
- 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.
|
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,
|
- 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.
|
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.
|
- 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.
|
- 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.
|
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.
|
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.
|
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):
|
- Running Scheme On Bare Metal (Experience Report):
|
||||||
https://doc.lagout.org/programmation/Lisp/Scheme/An%20Introduction%20to%20Scheme%20and%20its%20Implementation.pdf
|
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
|
- 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)
|
|
||||||
https://ipads.se.sjtu.edu.cn/_media/publications/skybridge-eurosys19.pdf
|
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
|
https://github.com/FFmpeg/asm-lessons
|
||||||
|
|
||||||
# NOTES EN VRAC SUR FUCHSIA
|
# NOTES EN VRAC SUR FUCHSIA
|
||||||
|
|
Loading…
Add table
Reference in a new issue