Dies sind die Punkte, die ich in der Memory Management Unit der ARM-Architektur gelesen habe:
Nachdem ich den fünften Punkt gelesen habe, möchte ich verstehen, warum die Adressübersetzung erforderlich ist. Liegt es daran, dass der virtuelle Speicher kleiner ist als der physische Speicher? Und warum/wann würde die MMU ausgeschaltet?
Die Übersetzung virtueller Adressen ist aus mehreren Gründen erforderlich:
Es kann mehr RAM adressiert werden als zur Verfügung steht. Beispielsweise kann die CPU in meinem Laptop 256 TB Speicher adressieren, während sie nur 8 GB Speicher hat. Dieser zusätzliche Adressraum ermöglicht es dem Kernel, weit mehr Speicher zuzuweisen, als verfügbar ist, und er kann Seiten für Anwendungen, die nicht verwendet werden, auf die Festplatte auslagern.
Die Übersetzung virtueller Adressen verhindert eine Speicherfragmentierung. Stellen Sie sich ein Programm vor, das große Objekte von der Größe einer Speicherseite häufig zuweist und freigibt. Wenn die Adressen physisch wären, würde der Speicherplatz schnell fragmentiert, ohne dass große Speicherbereiche frei wären. Der Kernel kann jedoch die virtuellen und physischen Adressen neu zuordnen, sodass immer ein großer Teil des Speichers frei ist, und wenn ein Teil des Adressraums fragmentiert ist, na und? Nur die verwendeten Speicherseiten müssen durch physischen Speicher unterstützt werden, und es gibt viel Adressraum für neue Zuordnungen.
Virtuelle Adressen bieten mehr Sicherheit. Erinnern Sie sich an die CPU-Bugs Anfang dieses Jahres, Spectre und Meltdown? Sie verlassen sich darauf, einige Informationen über die Zuordnung virtueller Adressen für verschiedene Prozesse und den Kernel zu kennen. Wenn Sie die virtuelle Adressierung deaktivieren, werden sie und andere Angriffe viel einfacher, weil Sie dann die Adressen des Kernels und anderer Prozesse kennen.
Warum Sie die MMU ausschalten würden, kann ich nur vermuten, dass es sich auf den Zustand der MMU während des Starts des Prozessors bezieht, bevor der Kernel die Seitentabelle eingerichtet hat. Sie würden die MMU während des normalen Betriebs eines Betriebssystems nicht ausschalten.
PlasmaHH
Toni M
Benutzer105009
Benutzer105009