Hallo,

Ich könnte ja theoretisch den linearen Speicher doppelt benutzen, es wäre durchaus möglich das an der selben linearen Stelle 2 verschiedene Segmente liegen, einmal mit und einmal ohne Paging, die dann auf verschiedene physische Speicher-Bereiche verweisen. Aber wie gesagt, das wäre selbst für meine Verhältnisse ziemlich verrückt (und dann wohl doch der Weg in die Hölle).
Auch hier wollte jemand einen ähnlichen Weg gehen http://www.halfbakery.com/idea/Hardware_20concurrent_20memory-compaction_20assist, zusätzliche Aufmerksamkeit verdienen die Kommentare.
Zumindest bin ich nicht der einzigste auf diesem Erdenrund der solche Gedanken hat.
Grüße
Erik
Wie gesagt, ihr schreibt mir zu viel, um alles zu lesen.Ich hätte erwartet das Du wenigstens den Beitrag liest den Du zitierst.
Der war doch nun wirklich nicht mehr soooooooo lang.[.....]

Wenn du mit dem Defragmentieren anfängst, ist das Segment doch am Stück.Nicht immer, das hängt von der Ursache des Defragmentierens ab. Falls ein Segment vergrößert werden soll aber nicht einfach wachsen kann oder falls ein neues Segment angelegt werden soll und es keinen ausreichenden Frei-Speicher in einem Stück gibt dann muss das Segment sofort (sonst würde das System blockiert) in mehreren Teilen entstehen. Dazu benötige ich aber eben auch sofort einen neuen Bereich im linearen Speicher (der gerade beim zweiten Fall) nicht unbedingt im 1:1-Bereich liegt. Daher ist mir die Idee mit der virtuellen "Swap-Out-Arrea" gekommen. Wo die liegt ist erst mal egal und komplett 4 GByte RAM geht auf der 32Bit-Plattform eh nicht.
Warum es nicht einfach dort lassen, wo es ist, während Paging aktiv ist?Das wird wohl nur selten gehen. Das geht IMHO nur wenn ich nicht-fragmentierte Segmente nur verschieben möchte (wegen memory-compaction bzw. free-space-consolidation). Obwohl auch dazu der Ziel-Bereich im linearen Speicher ja bereits frei sein muss oder nur durch das betroffene Segment selber belegt sein darf und ich daher auch das virtuelle verschieben vor dem physischen Verschieben durchführen kann.
Oder wenn dir der Quellbereich nciht gefällt, nimmst du eben den Zielbereich herDas dürfte schon eher was bringen. Wenn ich ein Segment vergrößern muss und es nicht wachsen kann (weil was anderes im Weg liegt) dann kann ich auch gleich einen neuen Bereich für das ganze Segment suchen und dort das Segment gleich virtuell hin verlegen. Der neue Segmen-Teil wird gleich 1:1 genommen (trotz Paging) und der alte Teil wird erst mal über das Paging eingeblendet. Nach dem der Paging-Teil in die neue Heimat umgezogen ist kann dann das Paging-Enable-Flag im Segment-Descriptor einfach aus geschaltet werden.
den brauchst du genauso in zusammenhängender Form, wenn du Paging irgendwann wieder ausschalten willst.Ja, es ist mein Ziel das nach dem defragmentieren jedes Segment an einem Stück im physischen Speicher liegt. Sonst werde ich ja das böse Paging nicht los.
Wenn es keinen passenden Bereich gibt, hast du doch sowieso verloren, oder?Ja, genau das ist mein Problem.
Ich könnte ja theoretisch den linearen Speicher doppelt benutzen, es wäre durchaus möglich das an der selben linearen Stelle 2 verschiedene Segmente liegen, einmal mit und einmal ohne Paging, die dann auf verschiedene physische Speicher-Bereiche verweisen. Aber wie gesagt, das wäre selbst für meine Verhältnisse ziemlich verrückt (und dann wohl doch der Weg in die Hölle).
Auch hier wollte jemand einen ähnlichen Weg gehen http://www.halfbakery.com/idea/Hardware_20concurrent_20memory-compaction_20assist, zusätzliche Aufmerksamkeit verdienen die Kommentare.

Zumindest bin ich nicht der einzigste auf diesem Erdenrund der solche Gedanken hat.
Grüße
Erik

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert





