J'ai pensé à écrire un système d'exploitation pour certains des processeurs ARM. Il existe de nombreux ordinateurs à carte unique populaires avec ARM MPU, donc je voulais simplement en acheter un (en choisir un avec une documentation plus ouverte). J'ai été surpris quand j'ai découvert que même les cartes avec vraiment assez de mémoire n'avaient pas de MPU avec Memory Management Unit.
Comme j'ai toujours travaillé avec des processeurs i386 + et jamais rien d'autre (sauf pour certains PIC Microchip), je suis maintenant confus et je ne sais pas si on peut écrire un système d'exploitation fonctionnel dont les fonctionnalités ne seraient pas limitées en comparaison avec les OS écrits pour les MPU avec MMU.
Je pourrais penser à quelques solutions pour "remplacer" ou "simuler" MMU et j'ai quelques questions:
- Sur les processeurs Intel en modes 16 et 32 bits, il existe un moyen d'utiliser des segments et des sélecteurs de segments pour utiliser différents blocs de mémoire pour différentes tâches. Cela signifie que je pouvais changer l'espace mémoire en modifiant le contenu des registres de segments lors d'un changement de tâche sur x86. Existe-t-il des concepts généraux de segmentation de la mémoire qui pourraient être utilisés sur l'architecture ARM?
- En chargeant un fichier objet lié au lieu d'exécutable, je pouvais utiliser des relocalisations (corrections) ou positionner du code indépendant pour pointer des tâches sur des morceaux de mémoire de la même manière que si j'avais mappé la mémoire à l'aide de structures de pagination. Serait-ce assez efficace?
- J'ai également lu quelque chose sur les unités de protection de la mémoire sur les processeurs ARM. Ces informations pourraient-elles être utiles?
Existe-t-il des moyens "habituels" de gérer les tâches sur des systèmes sans MMU?