1

オペレーティング システムのトピックに興味があり、ダミーの質問があります。標準の PE 実行可能ファイルは にリンクされてい0x400000ます。私の質問は、仮想メモリが仮想アドレスを物理アドレスにマップするだけの場合、オペレーティングシステムが同じイメージベースで複数の実行可能ファイルをロードする方法です。スレッドの PDE と PTE インデックスをどこかに保存していますか? 実行が開始される前に、各アドレスに何らかの追加がありますか? それはどのように機能しますか?

4

1 に答える 1

3

各プロセスは独自の仮想アドレス空間を取得するため、競合はありません。システムに一度に存在するすべての仮想アドレス空間は、物理アドレス空間にマップされます。特定の物理メモリにマッピングできない、または現在マッピングされていない仮想メモリは、スワップ ファイル (スワップ パーティションなど) に保持されます。これは、ページングと呼ばれます。

スレッドの切り替え中に、CPU がそれまで実行していたプロセスとは異なるプロセスからスレッドを実行しようとすると、オペレーティング システムのスケジューラは、使用する新しい仮想アドレス変換テーブルについて CPU に通知します (それぞれのレジスタを設定します)。したがって、CPU は、特定の時点で 1 つの仮想アドレス空間しかないと考えますが、オペレーティング システムは、プロセスごとに 1 つずつ、さらに多くの仮想アドレス空間を管理できます。


免責事項:私の答えは、現実とは対照的に、少し表面的または不正確なものとして考えられている可能性があります. これは、OP の質問の性質に関して単純化するためです。また、これらのメカニズムは、CPU に依存し、オペレーティング システムに依存します。

于 2013-04-14T09:10:54.967 に答える