Frage von maxschoen, 7

Warum muss der Hauptspeicher eines Prozesses zusammenhängend sein wenn keine virtuelle Speicheradressierung unterstützt wird?

Hallo,

warum werden Prozesse in zusammenhägend freie Speicherbereiche des RAM beim Starten geladen wenn keine virtuelle Speicheradressierung unterstützt wird?

Vielen DAnk

Antwort
von PWolff, 5

Dann kann man dem Prozess sagen: Der Speicherbereich von A bis B gehört dir.

Prozessverwaltungen sind traditionell nicht darauf ausgelegt, nichtzusammenhängende Speicherbereiche zu verwalten. Das wäre ziemlich viel zusätzlicher Verwaltungsaufwand und kann (prinzipiell unvermeidbar) dazu führen, dass ein laufendes Programm den Speicherplatz für ein Array oder eine andere Variable mit viel Speicherbedarf nicht allozieren kann, obwohl noch genügend freier Speicher vorhanden ist.

Dass der Speicher für ein Array zusammenhängend ist, ist für C-Programme wesentlich - nach der C-Spezifikation kann der Programmierer sich darauf verlassen, dass es so ist.

Natürlich kann man der Prozessverwaltung beibringen, dem Programm gegenüber von der tatsächlichen Anordnung des Speichers zu abstrahieren - aber das wäre nichts anderes als eine virtuelle Speicheradressierung, die der Speicherverwaltung des Prozesses aufgeladen wird.

Da ist es effizienter, einfacher und damit wesentlich weniger fehleranfällig, diese virtuelle Speicherverwaltung an einer Stelle für alle Prozesse zusammenzufassen.

(Anwendungen, die traditionell mit riesigen Datenmengen zu tun haben - wie Bildbearbeitung für höchstauflösende Bilder, Videobearbeitung - haben oft eigene Routinen für die Speicherverwaltung, insbesondere für das Auslagern auf Festplatte, aber damit müssen sie es auch beherrschen, festzustellen, auf welche physikalische Arbeitsspeicheradresse eine virtuelle umgeleitet wird und ob ggf. ein Block von Festplatte geladen werden muss.)

Kommentar von maxschoen ,

Vielen vielen Dank! :)

Vielleicht kannst du ja auch meine nächste Frage beantworten

https://www.gutefrage.net/frage/was-fuer-eine-konsequenz-hat-es-fuer-ein-program...

Grüße :)

Keine passende Antwort gefunden?

Fragen Sie die Community