Sinn von Memory Paging



  • Welchen Sinn hat Memory Paging? Virtuelle Adressen kann man doch auch dirket in physikalische übersetzen.

    MfG



  • Ja, man könnte Prinzipiell einfach sowas wie einen Offset addieren. Das gitb aber eine miserable Lösung ab, weil du dann immer einen kompletten Adressraum eines Programmes am Stück haben musst. Und nun das wort-case-szenario. Sagen wir es passen 100 Instanzen eines kleinen Programmes genau in den Speicher, man startet diese 100 Instanzen. Nun beendet sich jedes zweite davon recht schnell. Du hast dann ganz viele kleine Lücken und wenn du ein großes Programm laden willst ist zwar theoretisch der halbe Speicher frei, aber halt verstreut. Dann müsste man schon alle Speicherbereiche wieder zusammenschieben und das ist langsam.
    Ansonsten hat Paging ein paar schöne Vorteile. Man kann nämlich den Adressraum eines Prozesses stückchenweise zerlegen. Zum einen kannst du (eventuell selten verwendete) Teile eines Programmes auf die Festplatte o.ä. auslagern, ohne dass das ganze Programm stoppen muss. Zum zweiten kannst du sog. Speicherbereiche vorbelegen. Ein Prozess kann Speicher anfordern, aber solange er ihn nicht benutzt muss nichts im realen Speicher belegt werden. Zum dritten kannst du im Gegensatz zum ersten Ansatz die Prozesse miteinander vermischen, die Prozesse müssen so nicht am Stück liegen und der Speicher ist erst voll, wenn jede Speicherseite benitzt wird. Und selbst dann kann man wie am Anfang gesagt immernoch Teile von Prozessen auslagern.



  • ich verschieb das mal in das Assembler Forum, da kennen sich mit dem Thema sicher mehr Leute aus


Anmelden zum Antworten