1. Jeder Prozess verfügt über einen eigenen unabhängigen 4G-Speicherplatz, und der Speicherplatz jedes Prozesses hat eine ähnliche Struktur.
Die Linux-Speicherverwaltung übernimmt die Seitenverwaltung und verwendet einen dynamischen Adressübersetzungsmechanismus. Hauptspeicher und Hilfsspeicher realisieren gemeinsam den virtuellen Speicher,
Es wird ein eigener Speicherbereich eingerichtet und die Daten, der Code usw. dieses Prozesses werden von der Festplatte in den eigenen Prozessbereich kopiert.
Sie werden alle von task_struct in der Prozesssteuerungstabelle aufgezeichnet. Es gibt eine verknüpfte Liste, die in task_struct aufgezeichnet ist, und die Speicherplatzzuordnung im Datensatz wird aufgezeichnet,
Welche Adressen Daten enthalten, welche Adressen keine Daten enthalten, welche lesbar und welche beschreibbar sind, kann über diese verknüpfte Liste aufgezeichnet werden. Der von jedem Prozess zugewiesene Speicherplatz kann dem entsprechenden Speicherplatz zugeordnet werden.
2. Jedes Programm kann einen vollständigen und kontinuierlichen Adressraum sehen. Diese Räume stehen nicht in direktem Zusammenhang mit dem physischen Speicher, aber das Betriebssystem stellt ein abstraktes Speicherkonzept bereit Dadurch verfügt jeder Prozess über einen kontinuierlichen und vollständigen Adressraum. Während des laufenden Prozesses des Programms wird die Konvertierung von der virtuellen Adresse in die physische Adresse abgeschlossen.
Wir wissen auch, dass der Adressraum eines Prozesses segmentiert ist und es sogenannte Datensegmente, Codesegmente, BBS-Segmente, Heaps, Stacks usw. gibt. Jedes Segment hat eine bestimmte Rolle.
Gleichzeitig verfügt der Computer nicht über so viel Speicher (n Prozesse müssen n*4G Speicher entsprechen, Sie müssen die Programmdateien auf der Festplatte in den Speicher kopieren, der dem Prozess entspricht,
).Für den Fall, dass ein Programm mehreren Prozessen entspricht, wird Speicher verschwendet.
3. Der 4G-Speicherplatz jedes Prozesses ist nur ein virtueller Speicherraum. Jedes Mal, wenn Sie auf eine Adresse im Speicherraum zugreifen, müssen Sie die Adresse in eine tatsächliche physische Adresse übersetzen.
Jeder Prozess ordnet nur den virtuellen Speicherplatz zu, den er gerade benötigt, und speichert ihn im physischen Speicher. Der Prozess muss wissen, welche Speicheradressen sich im physischen Speicher befinden, welche nicht und wo sie sich im physischen Speicher befinden,
Die Seitentabelle muss in zwei Teile unterteilt werden. Der erste Teil zeichnet auf, ob sich die Seite im physischen Speicher befindet ,
Überprüfen Sie die Seitentabelle. Wenn sich die entsprechenden Daten nicht im physischen Speicher befinden, besteht der Verarbeitungsprozess für fehlende Seiten darin, die für den Prozess erforderlichen Daten von der Festplatte in den physischen Speicher zu kopieren Wenn der Speicher voll ist Wenn kein freier Speicherplatz vorhanden ist, suchen Sie eine Seite zum Überschreiben. Wenn die überschriebene Seite geändert wurde, muss diese Seite natürlich wieder auf die Festplatte geschrieben werden.
4. Der Speicherplatz jedes Prozesses ist konsistent und fest, sodass der Linker beim Verknüpfen der Ausführungsdatei die Speicheradresse festlegen kann, ohne sich um die endgültige tatsächliche Speicheradresse dieser Daten kümmern zu müssen,Dies verfügt über ein unabhängiges Gedächtnis Vorteile des Speicherplatzes: Wenn verschiedene Prozesse denselben Code verwenden, beispielsweise Code in einer Bibliotheksdatei, kann nur eine Kopie dieses Codes im physischen Speicher gespeichert werden,
Verschiedene Prozesse müssen nur dann ihren eigenen virtuellen Speicher zuordnen, um Speicher zu sparen, wenn das Programm kontinuierlichen Speicherplatz zuweisen muss Im virtuellen Speicher muss nur zusammenhängender Speicherplatz zugewiesen werden, ohne dass zusammenhängender Speicherplatz im tatsächlichen physischen Speicher erforderlich ist, und Fragmentierung kann verwendet werden.
Das obige ist der detaillierte Inhalt vonWas ist der virtuelle Speichermechanismus von Linux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!