Antworten:
Sie können ein Multiprozess-Betriebssystem auch ohne Hardware-Unterstützung (ohne MMU ) ausführen , wobei alle Zeiger eine physische Adresse darstellen. Sie verlieren jedoch einige wichtige Funktionen, die normalerweise über die MMU bereitgestellt werden:
fork
darin, eine Kopie¹ des physischen Speichers des Prozesses zu erstellen und eine neue virtuelle Speicherzuordnung von denselben virtuellen Adressen zu den neuen physischen Adressen zu erstellen.Es gibt Unix-ähnliche Betriebssysteme, die auf Systemen ohne MMU funktionieren.
vfork
unterstützt) und das Fehlen eines Speicherschutzes. Aber es gibt präventives Multitasking.¹ In modernen Unices erfolgt dies normalerweise träge (Copy-on-Write), was wiederum darauf beruht, dass die MMU eine Ausnahme auslöst, wenn sie keine physische Seite findet.
Es ist sicherlich mit einigen Einschränkungen wie dem Speicherschutz möglich, die, wie bereits erwähnt, ein Problem darstellen würden. Beispielsweise unterstützt µClinux http://www.uclinux.org/ mehrere Prozesse, ohne virtuellen Speicher zu implementieren. Beachten Sie, dass einige CPUs wie mindestens die Analog Devices Blackfin eine MPU (Memory Protection Unit) http://docs.blackfin.uclinux.org/doku.php?id=bfin:mpu bereitstellen . Auf diese Weise können Betriebssysteme ohne virtuellen Speicher weiterhin die Partitionierung des Speichers ermöglichen.
Dies hängt davon ab, wie Sie den Prozess im Vergleich zu Threads in Bezug auf den Speicher definieren.
Eine der Funktionen des virtuellen Speichers ist die Partitionierung. Es ist zwar möglich, mehrere Prozesse ohne Partitionierung auszuführen, dies entspricht jedoch eher der Ausführung mehrerer Threads als der Ausführung von Prozessen, die denselben Adressraum verwenden.