Qui ci sono diversi livelli che influenzano la risposta.
Se si presuppone un sistema operativo di memoria virtuale moderna, non sarà possibile visualizzare i resti di altri dati di processi nelle pagine che si assegnano.
Quando un processo viene caricato per la prima volta, viene caricata la tabella delle pagine e vengono allocati potenzialmente frame di memoria reale a tali pagine. Come minimo, la tabella delle pagine o la sua tabella supplementare, conterrà una mappa di tutta la memoria che il processo può allocare. Questo è anche il punto in cui viene interrotta l'interruzione del processo iniziale, menzionata sopra.
Sebbene malloc () possa, se il processo è permesso, fare in modo che l'interruzione del processo cambi, aggiungendo più pagine a una pagina di processi (tabella supplementare) per soddisfare la richiesta, il luogo in cui un processo può "ottenere un altro" processo i dati sono al livello di memoria reale inferiore.
In entrambi questi scenari un moderno sistema operativo che utilizza la paginazione della domanda, o allocazione pigra, non sta ancora assegnando memoria fisica (frame). Il sistema operativo sta semplicemente "prendendo appunti" su quale memoria virtuale per quel processo è considerata valida. La memoria effettiva viene assegnata solo quando necessario.
La memoria fisica oi frame vengono allocati a un processo quando la pagina virtuale viene realizzata e mappata in una tabella di pagine dei processi È qui che esiste il potenziale per l'esposizione dei dati. Questo succede durante un errore di pagina. L'esposizione è dovuta al fatto che un precedente processo potrebbe aver utilizzato lo stesso frame ei suoi dati sono stati abbandonati o scambiati, per lasciare spazio alla richiesta di memoria fisica corrente. Il sistema operativo deve fare attenzione a garantire che i dati dei processi di richiesta siano scambiati correttamente o che il frame sia cancellato (azzerato) prima di riprendere il processo. Questo è anche menzionato sopra come un problema "vecchio ma risolto".
Ciò rende alquanto irrilevante se la memoria degli altri processi è stata "rilasciata" o meno. Un'altra memoria "rilasciata" dei processi risiede ancora nelle pagine assegnate a quel processo e di solito non vengono mappate fino alla fine del processo, in quanto verranno semplicemente scambiate quando la memoria si scarica o sono altrimenti sfrattati. malloc () e free () gestiscono la memoria virtuale assegnata al processo a livello (utente).
Nella tua domanda, il tuo processo, continua a richiedere sempre più memoria, in teoria, spingendo tutti gli altri processi fuori dalla memoria. In realtà, ci sono strategie di allocazione dei frame, globali e locali, che possono influenzare anche la risposta. È probabile che il processo costringerà le proprie pagine fuori dalla memoria prima che sia consentito il sovraccarico del sistema operativo e di tutti gli altri processi. Anche se questo va oltre la tua domanda iniziale.
Tutto ciò è discutibile in un sistema come MS-DOS. MS-DOS (e altri sistemi più semplici) non usano la memoria virtuale (da soli) e potresti facilmente spingere e pungere su altri dati "processi".
Alcune buone referenze, che potrebbero essere più facili da comprendere rispetto al codice sorgente di Linux, sarebbero un buon libro di testo sui sistemi operativi, Operating Systems Concepts di Silberscatz, Gavin e Gange, o Operating Systems Design di Andrew Tanenbaum. Anche qualcosa come Nachos di Berkeley o Pintos di Stanford sono piccoli sistemi operativi costruiti per l'apprendimento e hanno queste stesse idee al loro interno.