Hier sind mehrere Ebenen beteiligt, die sich auf die Antwort auswirken.
Wenn Sie von einem modernen Betriebssystem für virtuellen Speicher ausgehen, können Sie die Überreste anderer Prozessdaten auf den von Ihnen zugewiesenen Seiten nicht sehen.
Wenn ein Prozess zum ersten Mal geladen wird, wird die Seitentabelle geladen, und diesen Seiten werden möglicherweise Frames des realen Speichers zugewiesen. Die Seitentabelle oder ihre Ergänzungstabelle enthält mindestens eine Karte des gesamten Speichers, den der Prozess zuordnen kann. Hier wird auch die oben erwähnte anfängliche Prozessunterbrechung festgelegt.
Während malloc (), wenn der Prozess zulässig ist, eine Änderung des Prozessabbruchs verursachen kann und einer Tabelle mit Prozessseiten (ergänzenden Seiten) weitere Seiten hinzufügt, um die Anforderung zu erfüllen, befindet sich der Ort, an dem ein Prozess möglicherweise andere Prozessdaten abruft die untere reale Speicherschicht.
In beiden Szenarien weist ein modernes Betriebssystem, das Demand Paging oder Lazy Allocation verwendet, noch keinen physischen Speicher (Frames) zu. Das Betriebssystem "macht nur Notizen" darüber, welcher virtuelle Speicher für diesen Prozess als gültig angesehen wird. Der tatsächliche Speicher wird nur bei Bedarf zugewiesen.
Physischer Speicher oder Frames werden einem Prozess zugewiesen, wenn die virtuelle Seite realisiert und in eine Prozessseitentabelle abgebildet wird. Hier besteht das Potenzial für die Offenlegung von Daten. Dies geschieht während eines Seitenfehlers. Dies liegt daran, dass ein vorheriger Prozess möglicherweise denselben Frame verwendet hat und seine Daten entweder aufgegeben oder ausgetauscht wurden, um Platz für die aktuelle physische Speicheranforderung zu schaffen. Das Betriebssystem muss darauf achten, dass die anfragenden Prozessdaten ordnungsgemäß ausgetauscht werden oder der Frame gelöscht (auf Null gesetzt) wird, bevor der Prozess fortgesetzt wird. Dies wird auch oben als ein "altes, aber gelöstes" Problem erwähnt.
Dies macht es etwas irrelevant, ob der Speicher der anderen Prozesse "freigegeben" wurde oder nicht. Der "freigegebene" Speicher eines anderen Prozesses befindet sich immer noch auf Seiten, die diesem Prozess zugewiesen sind, und wird normalerweise erst nach Beendigung des Prozesses freigegeben, da sie nur ausgelagert werden, wenn der Speicher knapp wird oder wenn sie anderweitig entfernt werden. malloc () und free () verwalten den dem Prozess zugewiesenen virtuellen Speicher auf (Benutzer-) Ebene.
In Ihrer Frage fordert Ihr Prozess theoretisch immer mehr Speicher an und verdrängt alle anderen Prozesse aus dem Speicher. In der Realität gibt es Rahmenzuweisungsstrategien - global und lokal -, die sich ebenfalls auf die Antwort auswirken können. Es ist ebenso wahrscheinlich, dass der Prozess seine eigenen Seiten aus dem Speicher zwingt, bevor er das Betriebssystem und alle anderen Prozesse übersteuern kann. Dies geht jedoch über Ihre ursprüngliche Frage hinaus.
All dies ist in einem System wie MS-DOS umstritten. MS-DOS (und andere, einfachere Systeme) verwenden keinen virtuellen Speicher (für sich), und Sie könnten leicht andere "Prozess" -Daten anstoßen und anstoßen.
Einige gute Referenzen, die einfacher zu verstehen sind als der Linux-Quellcode, sind ein gutes Lehrbuch für Betriebssysteme, Betriebssystemkonzepte von Silberscatz, Gavin und Gange oder Betriebssystemdesign von Andrew Tanenbaum. Auch so etwas wie Nachos von Berkeley oder Pintos von Stanford sind kleine Betriebssysteme, die zum Lernen gebaut wurden und die gleichen Ideen enthalten.