ここには、答えに影響するいくつかの層が含まれています。
最新の仮想メモリオペレーティングシステムを想定している場合、割り当てたページに別のプロセスデータの残りを表示することはできません。
プロセスが最初にロードされると、ページテーブルがロードされ、潜在的に実メモリのフレームがそれらのページに割り当てられます。少なくとも、ページテーブルまたはその補足テーブルには、プロセスが割り当てることができるすべてのメモリのマップが含まれます。これは、上記の最初のプロセスブレークが設定される場所でもあります。
プロセスが許可されている場合、malloc()はプロセスブレークを変更し、プロセスページ(補足ページ)テーブルにさらにページを追加して要求を満たすことができます。下位の実メモリ層。
これらのシナリオの両方で、デマンドページングまたは遅延割り当てを使用する最新のオペレーティングシステムは、物理メモリ(フレーム)をまだ割り当てていません。オペレーティングシステムは、そのプロセスのどの仮想メモリが有効と見なされるかについて「メモを作成する」だけです。実際のメモリは、必要な場合にのみ割り当てられます。
仮想ページが実現され、プロセスページテーブルにマッピングされると、物理メモリまたはフレームがプロセスに割り当てられます。これは、データが露出する可能性がある場所です。これは、ページフォールト中に発生します。これは、前のプロセスが同じフレームを使用しており、現在の物理メモリ要求のためのスペースを確保するために、そのデータが破棄またはスワップアウトされたためです。オペレーティングシステムは、プロセスを再開する前に、要求しているプロセスデータが適切にスワップインされるか、フレームがクリア(ゼロ)されるように注意する必要があります。これは、上記の「古いが解決済み」の問題としても言及されています。
これにより、他のプロセスのメモリが「解放」されているかどうかに関係なく、多少無関係になります。別のプロセスが「解放」したメモリは、そのプロセスに割り当てられたページにまだ存在し、メモリが少なくなった場合やスワップされた場合にプロセスが終了するまで通常はマップ解除されません。malloc()およびfree()は、(ユーザー)レベルでプロセスに割り当てられた仮想メモリを管理します。
あなたの質問であるあなたのプロセスは、理論的にはより多くのメモリを要求し続け、他のすべてのプロセスをメモリから追い出します。実際には、グローバルおよびローカルのフレーム割り当て戦略がありますが、これも答えに影響する可能性があります。プロセスがオペレーティングシステムやその他すべてのプロセスのオーバーランを許可する前に、プロセスが自身のページをメモリから強制的に削除する可能性があります。これは最初の質問を超えていますが。
これはすべて、MS-DOSのようなシステムでは意味がありません。MS-DOS(および他のよりシンプルなシステム)は仮想メモリを(それ自体で)使用せず、別の「プロセス」データを簡単に突いて突くことができます。
Linuxのソースコードよりも理解しやすいいくつかの優れたリファレンスは、優れたオペレーティングシステムのテキストブック、Silberscatz、Gavin、およびGangeによるOperating Systems Concepts、またはAndrew TanenbaumによるOperating Systems Designです。また、バークレーのナチョスやスタンフォードのピントスのようなものは、学習用に構築された小さなオペレーティングシステムであり、それらに同じアイデアがあります。