web-dev-qa-db-ja.com

ページ番号とオフセット

さまざまな種類のメモリ管理について学習しています。仮想アドレスにオフセットビットがあることの意味がわかりません。また、ページサイズが2

  • 主な混乱は、特定の仮想アドレスにアクセスするための命令で使用されているオフセットの例を教えてください。

  • 私の2番目の混乱は、次のとおりです。通常のステートメントは、論理アドレスのサイズが2^mおよびページサイズは2^nの場合、論理アドレスの上位m-nビットはページ番号を指定します。

18
user1493786

私はあなたの一次と二次の混乱は主題に関する一般的な混乱によるものだと思います:)

これについて少しお話ししましょう。うまくいけば、私はいくつかの助けになることができます。まず、類推-あなたが都市の家を見つけようとしていると想像してください。各家に一意の番号が割り当てられていると想像してみてください。家の数がすぐに非常に多くて混乱するようになると想像できます。ここで、ストリートの概念を導入するとしましょう。家の番号をニースのチャンクにグループ化すると、家の番号が少し管理しやすくなります。つまり、通り=ページ番号、家番号=オフセット住所。

仮想メモリページを持つことの重要な点は、コンピュータがメモリを管理可能なチャンクに分割し、メモリを無駄にしないようにすることです。それをチャンク(ページ)に分割することで、アクセス、ページング、およびその他のそのような素晴らしいものをきめ細かく制御できます。ページが小さいほど、無駄になるメモリは少なくなります(プロセスAが32kのメモリを必要とし、ページサイズが64kである場合、使用されないもので終了することになります)。システムのオーバーヘッド。

ページサイズが2の累乗である理由については、これはアドレス内のスペースを無駄にしないということです。コンピューターは(現時点では)バイナリに基づいているため、すべてが2の累乗に低下する傾向があります。10の係数に基づくものがあると想像してください。バイナリの10は1010です。それを保持するには4ビットを使用する必要があります。 、それでは、4ビットから取得できる値の全範囲を求めてみてください:0000-1111(0〜15 = 16個の値)。

ごめんなさい、少し困惑しました-これがあなたを正しい方向に動かしてくれることを願っています!

27
GHC

私は、なぜページングが必要なのかについて、通りや都市とのGHCのアナロジーが好きです。また、メモリのバイトをページにグループ化すると、CPUがより多くのメモリを使用できるようになります。

次のプロパティが指定されているとします。

  • 仮想アドレスは32ビット
  • ページオフセットは12ビット
  • 物理アドレスは30ビット
  • RAMは1GiBです

以下は、メモリ内の特定のセルをアドレス指定するためにページ番号とページオフセットがどのように使用されるかを示す、私が作成したダイグラムです。

enter image description here

CPUによって生成され、仮想ページ番号(20ビット)とページオフセット(12ビット)で構成される仮想アドレスがあります。

また、仮想ページ番号から物理ページ番号へのマッピングに使用されるページマップがあり(さらに、ダーティビットはページが変更されたかどうかを示し、常駐ビットはページがメモリに常駐しているかどうかを示します)、右側はメモリがページに分割される方法です(図の青色)。

仮想ページ番号は、20アドレスビットを使用してページマップに渡されます。ページ番号は20アドレスビットのバイナリで渡されるため、ページマップは最大2 ^ 20レコードを保持できます(20ビットでは2 ^ 20の異なる数値を取得できるため)。これは、ページ番号がべき乗である理由でもあります。 2。

したがって、ページマップを使用して、要求された仮想ページ番号にマップされている物理ページ番号を見つけることができます。ページオフセットは変更されません。物理ページ番号とページオフセットがあれば、物理アドレスがわかります。ページ番号を使用してメモリの特定のページに移動し、オフセットを使用して特定のバイトセルに移動します。 (また、ページオフセットはページサイズを定義します。オフセット用の12ビットは、ページ内の2 ^ 12 = 4096セル(図ではオレンジ色)をアドレス指定できることを意味します)

緑色で、ページオフセット4095の仮想ページ番号2を要求する例を示します。ページマップによれば、仮想ページ番号2は物理ページ15にマップされ、物理ページ番号15とオフセット4095の物理アドレスを提供します。通常、仮想/物理ページ番号とページオフセットは16進数で表示されますが、単純にするために10進数を使用しました)

PS:

サンプルデータはこの講義から取得したものです- https://www.youtube.com/watch?v=3akTtCu_F_k -仮想メモリの非常に優れた概要を提供します。

2
Viktor Nonov

私も同じように混乱していますが、正しく理解していると、次のようになります。2ケースのベキ力は、トピックの一般的な理解に加えてわずかです。 2の累乗が適切に適合するビット間で適切な除算を行う必要があるため、これは慣習に近いものです。

たとえば、pGeに64kワードがあり、フレームあたり4ワードがある場合、2 ^ x = 64-> x = 6

つまり、各フレームは6つのバイナリ値を構成する物理アドレスを持つことができます。 0または1。4はフレーム番号を表します。そして最後に、4つの中での言葉の正確な位置を示します。

ここでは、各フレームに5または他の値を設定することはできません。

1
Richa Chandra