
Wir wissen, dass die CPU während der Ausführung eines Programms logische Adressen, auch als virtuelle Adressen bezeichnet, erzeugt. Anschließend werden diese virtuellen Adressen von der Memory Management Unit (MMU) in physische Adressen übersetzt. Wir wissen, dass der virtuelle Speicher es ermöglicht, einen Teil der Festplatte, der als Auslagerungsdatei (Swap Space) bezeichnet wird, auch als Speicher zu verwenden. Die virtuelle Adresse verweist also auf einen Bereich im Speicher (RAM) + Auslagerungsdatei (Swap Space). Aber wie wird das Programm von der Festplatte geladen, die sich weder im Speicher noch in der Auslagerungsdatei befindet, da die CPU eine virtuelle Adresse erzeugt und diese virtuelle Adresse immer auf eine Adresse im Speicher (RAM) + Auslagerungsdatei (Swap Space) verweist. Wie diese Adresse heißt. Anfangs dachte ich, dass die logische Adresse/virtuelle Adresse die Adresse ist, die auf einen physischen Speicherort auf der Festplatte verweist.
Ich bin ziemlich verwirrt. Danke für die Hilfe.
Antwort1
Seiten, die sich nicht im Speicher befinden, werden als ungültig gekennzeichnet. Jeder Zugriff darauf löst einen Seitenfehler im Betriebssystem aus. Das System sucht dann, wo die Seite geladen werden kann (Auslagerungsdatei, zugeordnete Datei usw.), lädt die Seite, aktualisiert den Seitenzeiger und plant den angehaltenen Prozess neu.
Unter FreeBSD gibt es eine Tabelle, die die physischen Adressen jedes Segments (eine Reihe aufeinanderfolgender Seiten) und deren Pager-Attribute (Pager-Objekt, Index, Dateideskriptor usw.) enthält. Ich vermute, dass Windows ein ähnliches System hat.
Antwort2
Anschließend werden diese virtuellen Adressen von der Memory Management Unit (MMU) in physische Adressen übersetzt.
Eine virtuelle Adresse kann nur dann in eine physische Speicheradresse übersetzt werden, wenn der Speicherinhalt des Prozesses vorhanden oder zugeordnet ist.
Andernfalls tritt ein (Seiten-)Fehler auf und entweder wird eine neue Zuordnung erstellt und/oder der Speicherinhalt (z. B. die erforderliche Seite) für diesen Prozess muss aus dem Hintergrundspeicher (z. B. der Auslagerungsdatei) abgerufen werden. Dieser Inhaltsabruf wird vom Kernel mithilfe des Gerätetreibers für das Speichergerät (z. B. eine Festplatte oder SSD) durchgeführt. In der Zwischenzeit unterbricht der Prozessplaner den aktuellen Prozess und (versucht), einen ausführbaren Prozess für die Verwendung der CPU zu aktivieren.
Wir wissen, dass der virtuelle Speicher es ermöglicht, einen Teil der Festplatte, der als Auslagerungsdatei (Swap Space) bezeichnet wird, auch als Speicher zu verwenden. Die virtuelle Adresse verweist also auf einen Bereich im Speicher (RAM) + Auslagerungsdatei (Swap Space).
Falsch.
Die virtuelle Adresse (an sich) hat keine Komponente oder Referenz zum Backing Store.
Die Organisation des Backing Stores (z. B. die Auslagerungsdatei) unterliegt der Kontrolle des Kernels des Betriebssystems (also der Software).
Außerdem muss der Speicherinhalt des virtuellen Speichers nicht unbedingt in der Auslagerungsdatei oder im Swap-Bereich gespeichert werden.
Programmcode, der sich nie ändert, muss nicht ausgelagert werden und kann wieder aus der Programmdatei abgerufen werden. Auf im
Speicher abgebildete Dateien kann direkt zugegriffen werden, anstatt ein Duplikat in der Auslagerungsdatei oder im Swap-Bereich zu haben.
Daher ist eine virtuelle Adresse allein nicht ausreichend, um die physische Speicherzuordnung zu identifizieren, und schon gar nicht, um Informationen zum zugrunde liegenden Speicher zu ermitteln.
Aber wie wird das Programm von der Festplatte geladen, die sich weder im Speicher noch in der Auslagerungsdatei befindet, da die CPU eine virtuelle Adresse generiert und diese virtuelle Adresse immer auf eine Adresse im Speicher (RAM) + Auslagerungsdatei (Auslagerungsspeicher) verweist.
Auf ein Programm (oder eine beliebige Datei) wird über seinen Dateinamen zugegriffen, wobei die Dateisystemschnittstelle und die zugrunde liegende Blockgeräteschnittstelle verwendet werden.
Daten von Peripheriegeräten werden mithilfe von Eingabe-/Ausgabeanweisungen/-operationen und nicht mithilfe von (Haupt-)Speicherzugriffen übertragen.
Das Konzept von E/A-Operationen wird durch die Implementierung von speicherabgebildeter E/A verwischt, bei der auf Geräteregister mithilfe von speziellen Adressen im Speicherbereich und nicht mithilfe von Adressen im E/A- (oder Port-)Bereich zugegriffen wird.
Gerätetreiber sind die Low-Level-Software im Kernel, die die Komplexität solcher Geräte für Lese- und Schreibvorgänge handhabt.
Hierbei handelt es sich um fundamentale Konzepte der digitalen Computerarchitektur, die sich nicht für eine kurze Erklärung im einfachen Frage-und-Antwort-Format eignen.
Wie diese Adresse heißt.
Auf Massenspeichergeräte (z. B. HDD und SSD) (auch Blockgeräte genannt) wird auf Geräteebene über LBA (Logical Block Address) (auch Sektornummern genannt) zugegriffen. Jede LBA verweist auf einen logischen Block mit Daten fester Größe, normalerweise 512 Bytes.
Anfangs dachte ich, dass die logische Adresse/virtuelle Adresse die Adresse ist, die auf den physischen Speicherort auf der Festplatte verweist.
Falsch. Auf
Massenspeichergeräte (z. B. HDD und SSD) wird auf Geräteebene über LBA (Logical Block Address) zugegriffen.
Auf einer höheren Ebene verweist das Dateisystem über die Adressen der Dateisystemzuordnungseinheit (z. B. Clusternummern) auf den Inhalt von Dateien. Das Dateisystem sorgt für Organisation, indem es Dateien über Dateinamen und Verzeichnisse referenziert.
Auf einer noch höheren Ebene regelt die Volume- oder Laufwerksverwaltung, auf welche Partitionen und Dateisysteme zugegriffen werden kann.
Es gibt keine feste Beziehung oder Verbindung zwischen LBAs und virtuellen Speicheradressen.
Jede Beziehung zwischen dem Inhalt des Backing Stores (z. B. Auslagerungsdatei) und dem virtuellen Speicher würde vom Kernel mithilfe von Prozessinformationen und Informationen wie einer Seitentabelle gesteuert.
Beachten Sie, dass die meisten Implementierungen modernen virtuellen Speichers Seiten mit fester Größe verwenden, es sind jedoch auch andere Schemata möglich.