オペレーティングシステムは、仮想アドレスからメモリアドレスへの計算を実行します。

参照リンク:https://blog.csdn.net/weixin_39928544/article/details/90049798

手順:

仮想アドレス(論理アドレス、プログラムアドレス)が16進数、8進数、および2進数の形式で指定されている場合、
最初のステップは仮想アドレスを2進数に変換することです
。2番目のステップでは、ページ番号と変位(下部は変位、上部はページ番号)
。3番目のステップは、タイトルに従ってページテーブルを生成し、変位をメモリアドレスレジスタの下部に直接コピーすることです。4
番目のステップは、ページ番号でページテーブルを確認することです。、対応するページのブロック番号をメモリに取得し、ブロック番号を2進数に変換して、アドレスレジスタの上位部分を埋め、メモリアドレスを形成します。

 

例:
1.システムはページストレージ管理を使用します。1つのジョブのサイズは8KBで、ページサイズは2KBです。ジョブは、メモリの7、9、A、5番目のブロックに順番に読み込まれ、仮想アドレス0AFEHをメモリアドレスに変換しようとします。
溶液:
|ページ番号|ブロック数|
| 0 | 7 |。
| 1 | 9 |。
| 2 | A |
| 3 | 5 |。。
仮想アドレスが二進数0AFEHに変換される:0,000,101,011,111,110(仮想アドレスの16進数に注意してください最後のHフラグは16進数です。
既知のページサイズは2kb(つまり、11ビット、2 ^ 11 = 2kb)であるため、下位部分は11ビットなので、w = 010 1111 1110、p = 0000 1 = 1(下部はページアドレス、上部はページ番号


ページ番号とブロック番号の配置によると、p = 1の場合、ブロック番号は
9、2 進数の9は1001、テーブルヘッダーアドレスは0です。したがって、MR =(最初の0)0100 1010 1111 1110(バイナリ)= 4AFEH(16システム)(段階的な手順に従って、ページ番号の下部をアドレスレジスタに移動する必要があります。その後、1001は上部と見なされ、前に0を埋めるには不十分です

 

質問の例:

リクエストページシステムでは、32のユーザーページ(1ページあたり1KB)と16KBのメインメモリを使用できます。ユーザープログラムが10ページの長さの場合、特定の時間におけるプロセスのページテーブルは次のとおりです。
仮想ページ番号は物理ブロック番号ですかTLBに
0 8
1 7
24なし
3 10なし
45なし
53は
62であり
、さもなければ無効
Q:(1)、1AC5H対応する物理アドレスを仮想アドレス0AC5Hを計算します。
(2)ページテーブルはメインメモリに格納されており、メインメモリへの1回のアクセスに1.5ns必要で、TLBテーブルの検索時間は0として無視されます。

 

回答:

(1)32ページは5ビットで区別する必要があり、ページ内のアドレスは10ビットが必要です。仮想アドレス0AC5Hのページ番号は2で、ページ内のアドレスは1011000101です。ページテーブルからわかるように、その物理ブロック番号は4なので、物理アドレスは1001011000101 = 12C5Hです。仮想アドレス1AC5Hのページ番号は6、ページ上のアドレスは1011000101です。ページテーブルによれば、仮想アドレスに対応する物理ブロック番号は2、物理アドレスは101011000101 = 0AC5Hです。
(2)TLBへの最初のアクセスはヒットしなかったため、ページテーブルを検索し、合計時間3nsの間メインメモリに再度アクセスする必要があります。TLBの2番目の仮想アドレスに必要なメモリアクセスは1回のみで、合計時間は1.5nsです。

おすすめ

転載: www.cnblogs.com/kongbursi-2292702937/p/12710249.html