22

私はさまざまな種類のメモリ管理を学んでいます。仮想アドレスにオフセットビットがあることのポイントがわかりません。また、なぜページサイズが力になるの2でしょうか。

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

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

4

3 に答える 3

42

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

これについて少し話させてください。うまくいけば、私はいくつかの助けになることができます。まず、例えです。都市に家を見つけようとしていると想像してみてください。それぞれの家に固有の番号が付けられていると想像してみてください。家の数がすぐに非常に大きくなり、混乱することが想像できます。ここで、通りの概念を導入したと想像してください。家番号を素敵なチャンクにグループ化すると、家番号が少し管理しやすくなります。つまり、通り=ページ番号、家番号=オフセットアドレス。

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

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

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

于 2013-03-26T06:59:47.843 に答える
16

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

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

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

これが私が作成したダイグラムで、ページ番号とページオフセットを使用してメモリ内の特定のセルをアドレス指定する方法を示しています。

ここに画像の説明を入力してください

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

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

仮想ページ番号は、20アドレスビットを使用してページマップに渡されます。ページ番号は20アドレスビットのバイナリで渡されるため、ページマップには最大2 ^ 20レコードを含めることができます(20ビットの場合は2 ^ 20の異なる番号を取得できるため)これは、ページ番号が2.2。

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

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

PS:

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

于 2018-10-01T15:40:27.460 に答える
1

私も同じ混乱を抱えていますが、それを正しく理解していれば、次のようになります。2ケースの威力は、トピックの一般的な理解をわずかに超えています。2進値を扱っており、2の累乗が適切に適合するビット間で適切に分割する必要があるため、これは慣例に似ています。

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

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

ここでは、各フレームに5またはその他の値を設定できないことに注意してください。そうしないと、いわゆる規則が失敗します。

于 2016-10-23T17:10:43.737 に答える