プログラムが OS によってファイル システムからメモリにロードされるとき、オペレーティング システムはプログラムのサイズをどのように認識しますか?
一度にファイル システムから 1 ページだけページインしますか? または、OS がプログラムの大きさを認識できるように、何らかのハードウェアまたはソフトウェアのインジケーターがありますか?
プログラムが OS によってファイル システムからメモリにロードされるとき、オペレーティング システムはプログラムのサイズをどのように認識しますか?
一度にファイル システムから 1 ページだけページインしますか? または、OS がプログラムの大きさを認識できるように、何らかのハードウェアまたはソフトウェアのインジケーターがありますか?
実行可能ファイルの先頭には、OS の実行可能ファイルのセクションをレイアウトするヘッダーがあります。Linux ではこれは一般に"ELF" 形式で、Windows では別の形式ですが、考え方は同じです。
実行可能ファイルのセクションは、メモリに直接コピーすることも、オンデマンドでロード/ページングすることもできます。一部のセクションは仮想の場合があります (たとえば、レイアウトには「8MB のゼロ化されたメモリが必要です」と書かれていますが、ファイルには実際には 8MB のゼロが含まれていません)。セクションは、メモリ内を移動するか、メモリ内の固定位置にロードすることができます。
この方法で OS によって読み込まれるのは、最初の実行可能ファイルだけです。他のファイル (または動的にリンクされたライブラリなど) は、OS によって間接的に読み込まれます (アプリは単にメモリを要求し、ファイルの一部をそのメモリにコピーするように要求し、そのコードにジャンプします)。