1

これに関連するいくつかの記事を既に見てきましたが、私が理解して再現できる方法で解決策を説明している記事はありません。以下に基づいて、物理アドレスをメモリ内の仮想アドレスに変換する方法を知る必要があります。

単純な仮想メモリ システムには、16 ビットの仮想アドレスを持つ 32KB の物理メモリがあり、そのうちの 12 ビットがオフセットとして使用されます。以下は、プロセスの 1 つのページ テーブルの現在の内容です。

ここに画像の説明を入力

基本的に、この仮想メモリ システムのページ サイズは 1024KB だと思います。VA B2A0 の対応する PA を見つけるプロセスが必要です。そこから進むことができるプロセスを教えていただければ、最終的な解決策を教えていただく必要はありません:)

よろしくお願いします。また、これを既に行っている記事を知っていて、それを見逃してしまった場合は、お気軽にその記事にリンクしてください。

乾杯。

4

2 に答える 2

0

32 KB は 2^15 です。したがって、すべての物理アドレスには15ビットがあり、下位12ビットがオフセットとして使用され、上位3ビットがページフレームの数として使用されます。

0xb2a0 が存在する仮想ページは? これを判断するには、2^12 より大きいアドレスのビットを取得する必要があります。ページのサイズは 2^12、つまり 4096 または 0x1000 なので、仮想ページ番号 0xb = 11 (0xb2a0 / 0x1000 のフロア) です。ページ内のオフセットは 0xb2a0 modulo 0x1000 で、0x2a0 です。

次に、テーブルを使用して、仮想ページ番号 11 を物理ページフレームに変換します。仮想ページが存在し (1)、上位ビットが 111 の物理フレーム番号に対応します。つまり、111 + 2 進数の 12 の 0 => 0x7000 - これは、物理フレームの開始アドレスです。

物理アドレスはオフセット 0x2a0 にあるため、求める物理アドレスは 0x7000 + 0x2a0 = 0x72a0 です。

この流れに従って、明確にしてください。質問がある場合は、まずウィキペディアを読み、それでも不明な点がある場合は質問してください :)

于 2012-11-10T08:17:17.490 に答える