Réponses:
Vous pouvez exécuter un système d'exploitation multi-processus même sans prise en charge matérielle (pas de MMU ), tous les pointeurs représentant une adresse physique. Vous perdez cependant plusieurs fonctionnalités clés généralement fournies par le MMU:
fork
est de faire une copie¹ de la mémoire physique du processus et de créer une nouvelle carte de mémoire virtuelle à partir des mêmes adresses virtuelles vers les nouvelles adresses physiques.Il existe des systèmes d'exploitation de type Unix qui fonctionnent sur des systèmes sans MMU.
vfork
est prise en charge) et l'absence de protection de la mémoire; mais il y a un multitâche préemptif.¹ Dans les unités modernes, cela se fait généralement paresseusement (copie sur écriture), qui s'appuie à nouveau sur le MMU levant une exception lorsqu'il ne trouve pas de page physique.
C'est certainement possible avec certaines contraintes comme la protection de la mémoire qui serait un problème comme déjà indiqué. Par exemple, µClinux http://www.uclinux.org/ prend en charge plusieurs processus sans implémenter de mémoire virtuelle. Notez que certains processeurs comme au moins les Analog Devices Blackfin fournissent un MPU (Memory Protection Unit) http://docs.blackfin.uclinux.org/doku.php?id=bfin:mpu . Cela permet aux systèmes d'exploitation moins de mémoire virtuelle de toujours autoriser le partitionnement de la mémoire.
Cela dépend de la façon dont vous définissez le processus par rapport aux threads en termes de mémoire.
L'une des fonctions de la mémoire virtuelle est le partitionnement. Bien qu'il soit possible d'exécuter plusieurs processus sans partitionnement, ce serait plus comme exécuter plusieurs threads que des processus - partager le même espace d'adressage.