3

プログラムが OS によってファイル システムからメモリにロードされるとき、オペレーティング システムはプログラムのサイズをどのように認識しますか?

一度にファイル システムから 1 ページだけページインしますか? または、OS がプログラムの大きさを認識できるように、何らかのハードウェアまたはソフトウェアのインジケーターがありますか?

4

1 に答える 1

2

実行可能ファイルの先頭には、OS の実行可能ファイルのセクションをレイアウトするヘッダーがあります。Linux ではこれは一般に"ELF" 形式で、Windows では別の形式ですが、考え方は同じです。

実行可能ファイルのセクションは、メモリに直接コピーすることも、オンデマンドでロード/ページングすることもできます。一部のセクションは仮想の場合があります (たとえば、レイアウトには「8MB のゼロ化されたメモリが必要です」と書かれていますが、ファイルには実際には 8MB のゼロが含まれていません)。セクションは、メモリ内を移動するか、メモリ内の固定位置にロードすることができます。

この方法で OS によって読み込まれるのは、最初の実行可能ファイルだけです。他のファイル (または動的にリンクされたライブラリなど) は、OS によって間接的に読み込まれます (アプリは単にメモリを要求し、ファイルの一部をそのメモリにコピーするように要求し、そのコードにジャンプします)。

于 2012-11-13T21:30:25.960 に答える