Ci sono diversi livelli coinvolti qui che influenzano la risposta.
Se si assume un moderno sistema operativo di memoria virtuale, non sarà possibile visualizzare i resti di un altro processo dati nelle pagine allocate.
Quando un processo viene caricato per la prima volta, viene caricata la tabella delle pagine e potenzialmente vengono allocati 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 impostata l'interruzione iniziale del processo, menzionata sopra.
Mentre malloc () può, se il processo è consentito, causare l'interruzione del processo, aggiungendo più pagine alla tabella di una pagina di processi (pagina supplementare) per soddisfare la richiesta, il punto in cui un processo può "ottenere un altro" dati sui processi è in il livello di memoria reale inferiore.
In entrambi questi scenari un moderno sistema operativo che utilizza il paging della domanda, o allocazione lazy, non sta ancora allocando 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 o i frame vengono allocati a un processo quando la pagina virtuale viene realizzata e mappata in una tabella della pagina dei processi Qui esiste il potenziale per l'esposizione dei dati. Questo accade durante un errore di pagina. L'esposizione è dovuta al fatto che un processo precedente potrebbe aver utilizzato lo stesso frame e che i suoi dati sono stati abbandonati o scambiati, per fare spazio all'attuale richiesta di memoria fisica. Il sistema operativo deve fare attenzione a garantire che i dati dei processi richiesti vengano scambiati correttamente o che il frame venga cancellato (azzerato) prima di riprendere il processo. Questo è anche menzionato sopra come un problema "vecchio ma risolto".
Ciò rende in qualche modo irrilevante se la memoria degli altri processi è stata "rilasciata" o meno. Un altro processo di memoria "liberata" risiede ancora nelle pagine assegnate a quel processo e di solito non viene decompresso fino a quando il processo non termina poiché verranno scambiati quando la memoria si esaurisce o vengono 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à, esistono strategie di allocazione dei frame - globali e locali - che possono influenzare anche la risposta. È altrettanto probabile che il processo forzerà la memoria delle proprie pagine prima che sia autorizzato a sovraccaricare il sistema operativo e tutti gli altri processi. Anche se questo va oltre la tua domanda iniziale.
Tutto questo è discutibile in un sistema come MS-DOS. MS-DOS (e altri sistemi più semplici) non usano la memoria virtuale (da soli) e si potrebbe facilmente cercare e stimolare altri dati "process".
Alcuni buoni riferimenti, che potrebbero essere più facili da comprendere rispetto al codice sorgente di Linux, sarebbero un buon libro di testo sui sistemi operativi, Concetti sui sistemi operativi di Silberscatz, Gavin e Gange, o Sistemi operativi progettati da Andrew Tanenbaum. Anche qualcosa come Nachos di Berkeley o Pintos di Stanford sono piccoli sistemi operativi creati per l'apprendimento e hanno le stesse idee al loro interno.