ページングストレージ管理システムの計算

目次

ページフレームとページ

ページテーブル

ページテーブルの構造

論理アドレスから物理アドレスへの変換

論理アドレス構造


ページフレームとページ

メモリ空間を同じサイズのパーティションに分割し (例: 各パーティションは 4KB)、各パーティションは「ページ フレーム」です (ページ フレーム = ページ = メモリ ブロック = 物理ブロック = 物理ページ)。各ページフレームには「ページフレーム番号」という番号が付いており(ページフレーム番号=ページフレーム番号=メモリブロック番号=物理ブロック番号=物理ページ番号)、ページフレーム番号は0から始まります。

プロセスのデータをページ フレームに配置するために、プロセスの論理アドレス空間もページ フレームのサイズに等しい部分に分割されます。< /span>< a i=2>各部分を「ページ」または「ページ」と呼びます。また、各ページには「ページ番号」という番号が付いており、ページ番号も0から始まります。

オペレーティング システムは、ページ フレーム単位で各プロセスにメモリ領域を割り当てます。プロセスの各ページはページ フレームに配置されます。言い換えれば、プロセスのページとメモリのページ フレームの間には 1 対 1 の対応関係があります。 (各ページは連続して保存する必要はなく、隣接しないページ フレームに配置できます)

ページ フレームとは、メモリ上の物理に分割されたものを指します。ブロックの場合、このページはブロックに分割されたロジックプロセスを参照しています。 /span>

では、プロセスのページはページ フレームとのこの 1 対 1 の対応をどのように記録するのでしょうか?

ページテーブル

プロセスの各ページがメモリ内のどこに格納されているかを知るために、オペレーティング システムはプロセスごとにページ テーブルを作成する必要があります。

注: ページ テーブルは通常、PCB (プロセス コントロール ブロック) 内に存在します。

ページテーブルの構造

各ページテーブルエントリのサイズ:

メモリ ブロック番号の数---->ページ テーブル エントリ内のブロック番号が占める最小バイト数

ページ フレーム サイズ = ページ サイズ=4KB=2^{12}B 4GB=2^{32}バイト

したがって、4 GB のメモリは2^{32}/2^{12}=2^{20} メモリ ブロックに分割できます。

メモリ ブロック番号の範囲は 0 ~2^{20}-1 である必要があります。メモリ ブロック番号は少なくとも 20 ビットで表現する必要があります。コンピュータはメモリ領域をバイト単位で割り当てるため、少なくとも 20 ビットである必要があります。3B はブロック番号 (3*8=24 ビット) を表します

ページ番号が占めるバイト数:

ページ テーブル エントリは継続的に格納されるため、ページ番号は暗黙的であり、(配列に似た) ストレージ スペースを占有しません。

ページ番号は記憶領域を占有せず、ブロック番号のみが記憶領域を占有するため、0~n ページを記憶するには 3*(n+1)B が必要です

注: ページ テーブルにはメモリ ブロック番号のみが記録され、メモリ ブロックの開始アドレスは記録されません。J メモリ ブロックの開始アドレス = J* メモリ ブロック サイズ

論理アドレスから物理アドレスへの変換

プロセスがメモリに継続的に保存されている場合、オペレーティング システムはどのようにして論理アドレスを物理アドレスに変換するのでしょうか?

物理アドレスは絶対アドレスであり、メモリブロックのみが必要です。

論理アドレス (開始位置からのオフセット) + メモリ内のプロセスの開始アドレス

物理アドレスを取得できます 

プロセスのアドレス空間をページングした後、オペレーティング システムは論理アドレスを物理アドレスにどのように変換しますか?

プロセスの各ページは個別に保存されますが、内部では連続して保存されます。
論理アドレス A にアクセスする場合は、
①論理アドレスAに対応する「ページ番号」Pを確認します。

②メモリ内のページPの開始アドレスを求める(ページテーブルが必要)

③論理アドレスAの「ページ内オフセット」wを求める

論理アドレス A に対応する物理アドレス = メモリ内のページ P の開始アドレス + ページ内のオフセット w

論理アドレスに対応するページ番号とページ オフセットを決定するにはどうすればよいですか?

注: コンピュータ内部では、アドレスは 2 進数で表されます。ページ サイズが 2 の整数乗である場合、コンピュータ ハードウェアは論理アドレスを (ページ番号、ページ内のオフセット) にすぐに分割できます。

最後の 12 ビットがページ オフセット、最初の 20 ビットがページ番号であることがわかります。

前の式を使用して次のことを確認します。

ページ番号 = 論理アドレス / ページ長 (除算の整数部分を取る)

ページ内オフセット = 論理アドレス% ページ長 (除算の余り)

ただし、メモリ ブロック サイズが 2 の整数乗である場合、計算にはメモリ ブロックの開始アドレス J = J * メモリ ブロック サイズは必要なく、ページ テーブルに記録されている物理ブロック番号を次のように連結するだけで済みます。ページオフセット 対応する物理アドレスを取得する

例 1:

ページングされたストレージ管理システムでは、プロセスの論理アドレス空間は 32 ページを占有し、各ページは 1024 バイトです。システムの物理メモリは 1M バイトです。プロセスのページ テーブルとすべての論理ページはすでにメモリ内にあります。システムには TLB があり、平均ヒット率は 85%、TLB ルックアップには 20 ナノ秒、メモリ アクセスには 100 ナノ秒かかります。聞く:

1.プロセスには論理アドレスがいくつありますか?

32=2^{5}\倍 2^{10}=2^{15}

したがって、論理アドレスは合計 15 ビットを占めます。


2. プロセス中にページ テーブル エントリはいくつありますか?

页表项=逻辑地址空间=32项


3. ページ テーブル エントリには物理ブロック番号がいくつありますか?

システムの物理メモリは 1M、1M=1024K=1024*1024=2^{20}

物理ブロック番号=物理メモリ/ページあたりのバイト数=2^{20}/2^{10}=2^{10}

したがって、物理ブロック番号は 10 ビットを占めます。


4. プロセスが論理ページにアクセスするのにかかる平均時間はどれくらいですか?

平均時間 =2t+\ラムダ -t\ast \alpha

t: 1回の訪問

\ラムダ: 1回の検索

\アルファ: ヒット率

それで平均時間は

= 2*100+20-100*85%

=220-85

=135ns

例 2:

あるコンピュータシステムのページサイズは4Kであり、その処理のページ変換テーブルは以下のとおりです。プロセスの論理アドレスが 2D16H の場合。アドレスが変換された後の物理アドレスは () になります。

最初のステップでは、まずシステム ページ サイズをバイト単位でバイナリに変換し、次に 4*1024=4096

4096 を 16 進数に変換すると、次のようになります: 1000

4096/16=256、余りは0 0を記録する

256/16=16、余りは0 0を記録します。

16/16=1、余りは0 0を記録します。

1/16=1、余りは 1 1 を記録します

1000を得る

16 進数を 2 進数に変換すると、次のようになります。0001 0000 0000 0000 

ここでの 4K は 12 個のバイナリ 0 に変換され、論理アドレスの最後の 12 ビット (ページ内オフセット) を表します。

2 番目のステップ、論理アドレス 2D16H をバイナリ 0010 1100 0001 0110 に変換します。あ> 

最初の 4 桁を取り出し、2 進数 (0010) の最初の 4 桁を 10 進数に変換すると、対応するページ番号は 2 になります。図を見ると、2 は、物理ブロック番号 4. バイナリに変換して 0100 にします。

3番目のステップは、上記の物理ブロック番号の2進数を物理アドレスの最初の2進数として使用し、論理アドレスの最後の12ビットを取り出して、それを物理アドレスの最後の12ビットとして使用することです。以下のとおりであります:

0100 1101 0001 0110 物理アドレスを 16 進数に変換すると、 4D16H  となります。

例 3:

ある仮想メモリのユーザープログラミング空間は合計 32 ページあり、各ページは 1KB、メモリは 16KB です。ユーザーページテーブルの、ある時点でメモリ上に転送されたページ番号とページの物理ブロック番号の対比表が以下のようなものであったとする。

論理アドレス0A5C(H)に対応する物理アドレスは何ですか?

1K のページ サイズは 1024 のバイナリ表現です: 0100 0000 0000 ここには合計 10 個の 0 があり、論理アドレスの最後の 10 ビットが物理アドレスの実際のアドレスとして取得されます。

論理アドレスの 2 進数 (0A5C) は次のとおりです: 0000 1010 0101 1100 最後の 10 桁は次のとおりです:  10 0101 1100  

論理アドレスの残りのビットは、000010 です。前の 2 つの余分なビット 0 は省略して、10 進数の 2 に変換できます。ページ番号 2 は、物理ブロック番号 11 に対応します。物理アドレス ブロック番号 11 は、バイナリに直接変換: 1011 

ブロック番号の 2 進数と論理アドレスの下 10 桁を組み合わせます: 1011 10 0101 1100。16 桁が足りない場合は、先頭にゼロを追加します。すると、実際の 2 進論理アドレスは次のようになります。 0010 1110 0101 1100 を 10 にすると、16 進数は次のようになります: 2E5CH 

質問の論理を要約する

1: ページ サイズK は、1024 を乗算してバイトに変換され、その後バイナリに変換されます。 n と仮定して、内部の 0 の数を確認します。

2: 論理アドレスの最後の n 位置が、 物理アドレスの最後の n ビットの実アドレスとして取り出されます。論理アドレスの残りのビットは、ページ番号テーブル  に対応する 10 進数に変換されます。

3: ページ番号テーブルに対応する物理ブロック番号は 10 進数ですが、物理アドレスの先頭として 2 進数に変換されます。

4: 物理アドレス全体をまとめて、2 進数を 16 進数 に変換します。

5: 残りの N 桁の 10 進数が表に記載のページ番号表を超える場合は範囲​​外となりますので、特に注意してください。範囲外か計算間違いです!​ 

6: 一部の計算問題では、ページ単位が M になります。ここでの単位は K です。変換後の 0 の数に注意してください。

7: アドレスを計算するには、パラメータを注意深く読む必要があります。最も重要なパラメータは次のとおりです。各ページのサイズ単位 K そして、変換するにはバイト (byte) に変換する必要があります。つまり、 1024 倍になります。

例 3:

ページング ストレージ管理システムでは、主記憶容量は 1M です。ページング仮想ストレージ システムでは、主記憶容量が 1M で、256 個の部分に分割されているとします。あるジョブのアドレス空間は 4 個を占めます。ページ番号 0、1、2、および 3 のメイン メモリに割り当てられた 2、4、1、および 5 ブロックについて、答えてください。
(1) メイン メモリのアドレスは ____ によって決定されます。 bits を示します  
(2) ジョブの各ページの長さは _____ であり、論理アドレス内のページ アドレス (ユニット番号) は ____ ビットを占めます

 分析: 主容量は 1M で、256 個の部分 L に分割され、まず M を K に変換します。

1*1024=1024K 1024K は 256 個の部分に分割され、各部分のサイズは次のようになります: 1024 割る 256=4K  

問題 (2) の各ページの長さは 4K で、バイナリに変換された 4K は 2^{12} べき乗、12 個のゼロです。ここでのページ アドレスは用語であり、それを意味します。は物理アドレスに対応する実際のバイナリ アドレスで、 はそれに続く 12 ビットです。

質問 (2) の答えは、12 ビット必要であるということです。

1024K*1024=1048576バイト  この時点でバイナリに変換してください。つまり、2^{20} べき乗であり、0 は 20 個あり、質問 (1) の答えは 20 です

つまり:
(1) メイン メモリのアドレスは _20_ ビットで表す必要があります  
(2) ジョブの各ページの長さは_4K_、論理アドレス内のページ アドレス (ユニット番号) は _12_ ビットを占めます

論理アドレス構造

アドレス構造には 2 つの部分が含まれます。前半部分はページ番号、後半部分はページ内のオフセット W です。上図の例では、アドレス長は 32 ビットで、ビット 0 ~ 11 が「ページ内オフセット」または「ページ内アドレス」、ビット 12 ~ 31 が「ページ番号」です。

「ページ内オフセット」を示す K ビット がある場合、システム内のページのサイズが K ビットであることを意味します。 a> 2^{K}メモリ ユニット

ある場合 M ビット  は「ページ番号」を意味し、このシステムではプロセスに最大でも2^{M} ページ

 

おすすめ

転載: blog.csdn.net/weixin_69884785/article/details/134784796