Ich beziehe mich auf die Wikipedia-Seite über virtuellen Speicher , den letzten Absatz im Abschnitt Verwendung:
Eingebettete Systeme und andere Computersysteme für spezielle Zwecke, die sehr schnelle und/oder sehr konsistente Antwortzeiten erfordern, können sich aufgrund des verringerten Determinismus dafür entscheiden, keinen virtuellen Speicher zu verwenden; Virtuelle Speichersysteme lösen unvorhersehbare Traps aus, die unerwünschte und unvorhersehbare Verzögerungen als Reaktion auf Eingaben erzeugen können, insbesondere wenn der Trap erfordert, dass Daten aus dem Sekundärspeicher in den Hauptspeicher gelesen werden. Die Hardware zum Übersetzen virtueller Adressen in physische Adressen erfordert typischerweise eine beträchtliche Chipfläche zum Implementieren, und nicht alle Chips, die in eingebetteten Systemen verwendet werden, enthalten diese Hardware, was ein weiterer Grund dafür ist, dass einige dieser Systeme keinen virtuellen Speicher verwenden.
Allerdings können wir beispielsweise in der CodeWarrior-IDE (verwendet mit NXP-MCUs) oder der STM32-Cube-IDE (verwendet mit STM32-MCUs) Speichermonitore des virtuellen Speichers sehen, wie diese:
Wie gehen Mikrocontroller mit der Speicheradressierung und der Übersetzung von Speicheradressen um? Was ist diese "signifikante Chipfläche"?
Die Hardware zum Übersetzen virtueller Adressen in physische Adressen erfordert typischerweise eine beträchtliche Chipfläche zum Implementieren, und nicht alle Chips, die in eingebetteten Systemen verwendet werden, enthalten diese Hardware, was ein weiterer Grund dafür ist, dass einige dieser Systeme keinen virtuellen Speicher verwenden.
Dies wird als "MMU" bezeichnet. Um es klar zu sagen, es ist nicht separat, falls vorhanden, wird es Teil desselben Chips wie der Mikrocontroller sein.
Im Allgemeinen haben Cortex-M-Systeme keine MMU, Cortex-A jedoch schon.
Der signifikante Bereich stammt aus den Seitentabellen: Dies ist ein Array von Adressen, dh ein signifikanter Teil des Speichers, der eine Nachschlagetabelle bildet, in der die HW (die MMU) die physische Adresse nachschlägt, die einer virtuellen Adresse zugeordnet ist (und sich beschwert, wenn die virtuelle Adresse ist nicht zugeordnet). Diese Seitentabellen machen den Großteil des MMU-Bereichs aus.
Die Beschwerde ist als "Seitenfehler" bekannt und wird vom Betriebssystem behandelt, indem es den Inhalt des virtuellen Speichers von der Festplatte in eine freie Seite des physischen Speichers holt. Dazu kann es erforderlich sein, zuerst etwas physischen Speicher freizugeben. Beinhaltet typischerweise das Suchen der ältesten Seite ("am längsten verwendet" oder LRU), Speichern auf der Festplatte, Markieren ihres Pager-Tabelleneintrags als nicht zugeordnet und dann Markieren des neuen Pager-Tabelleneintrags mit der neu freigegebenen physikalischen Adresse, bevor die neuen Daten geladen werden.
Kleine eingebettete Systeme haben diese Übersetzung nicht; die "virtuelle" Adresse ist die physische Adresse.
(Sie haben oft kein Betriebssystem oder auch keine Festplatte!)
pjc50
brhans
jonk
Supernova