TacOS-team / tacos

Système d'exploitation / Operating System
GNU General Public License v3.0
9 stars 4 forks source link

Ramdisk, grub, et pagination #167

Open NicolasFloquet opened 11 years ago

NicolasFloquet commented 11 years ago

L'idée du ramdisk passé par grub, c'est d'avoir à moindre frais un accès à un disque contenant des executables et des fichiers de configuration de base, et ce très tôt.

Pour celà, grub propose de charger des "modules". Tout fichier passé à grub comme "module" est chargé en ram après le kernel, et on peut récupérer l'adresse de début/fin de tous les modules chargés via la structure de multiboot. Il suffit donc de passer à grub une image de disque, et d'initialiser un ramdisk sur la zone de mémoire fournie par grub.

Dans l'état actuel, le ramdisk est codé et fonction. j'arrive également à récuperer l'adresse du module chargé par grub sans problème. Là où ça devient compliqué, c'est que l'adresse à laquelle le module est chargé se situant après le kernel, la page ou il se trouve n'est pas mappée, et devient donc inaccessible dès que la pagination est activée.

Pour tester tout le reste, j'ai fait un hack consistant à remplacer le __e_kernel de memory.c par l'adresse de fin de mon module (ce qui revient à "élargir" la zone mémoire du kernel) Cette solution est très moche, faudrait qu'on trouve autre chose, mais je comprend rien à toute la partie memory/pagination, alors j'ai besoin d'aide :D

MaximeCheramy commented 11 years ago

Je n'ai plus en tête la partie memory/pagination mais ça devrait vite revenir. Dis moi quand tu es chaud pour t'attaquer au problème comme ça je me remets dans le code pour t'aider.

MaximeCheramy commented 9 years ago

Est-ce qu'on peut en discuter ? Tu as du code non commité ? N'hésite pas à faire une branche si ça repose sur un hack temporairement. Je dois pouvoir m'occuper de la partie mapping mémoire.