0

仮想アドレスの内容を特定のレジスタにロードするとき、プロセスの一部としてハードウェアとオペレーティング システムで発生する必要があるイベントの一般的なシーケンスは何ですか?

たとえば、LD 0xffe4ca32、R1

これに使われるアドレスは仮想アドレスですよね?また、物理アドレスを取得するには、まずアドレス変換を行う必要があります。

私の最初の質問は、

  When this instruction executes, how is this instruction handled by the Hardware and Operating System?

2 つ目の質問は、

  Is the "value" of that virtual address, 0xffe4ca32, the contents of its mapped physical address or is it the physical address itself?

R1に何がロードされているのかわかりません

4

1 に答える 1

0

ここ:

  1. x86を想定しましょう。まず、CPU は MMU (メモリ管理ユニット) にアドレスの変換を要求します。まず、MMU は、仮想から物理への最近の変換が格納されている TLB (変換ルックアサイド バッファー) と呼ばれるものをチェックします。存在する場合は、参照されたアドレスが返されます。それ以外の場合、MMU はページ テーブルでアドレスを検索します。ページがスーパバイザのみのページ、またはメモリに存在しないとマークされたページのいずれかである場合、CPU は保護違反またはページ違反をスローします。保護違反の場合、OS は通常、責任のあるプロセスを終了しますが、そうします。ページ フォールトの場合、OS は独自の特別なページング構造をチェックして、そのページがページ アウトされているかどうか、または単に存在しないかどうかを確認します。ページアウトされている場合は、メモリ内のどこかにあるページに読み込まれます。仮想アドレスはその新しい場所に再マッピングされます。スペースが見つからない場合、スペースを空けるために別のページがディスクに置かれます (これの多くはスラッシングと呼ばれます)。ページアウトされていない場合、OS は存在しないページを参照しようとしているため、プロセスを強制終了する可能性が高くなります。
  2. マッピングされた物理アドレスの値。仮想メモリ ポインタは、ユーザー空間の観点から見ると、物理メモリ ポインタと同じように動作します。カーネル空間では、物理メモリ アクセスが必要なため、いくつかの複雑な問題があります (これは通常、最初の数百ページが対応する物理メモリに直接マップされる ID ページングと呼ばれるものによって実現されます。
于 2012-12-12T15:18:13.750 に答える