【オペレーティングシステム】ページサイズ

「ページサイズはオペレーティングシステムが選択できるパラメータです。たとえば、ハードウェアデザインが512バイトページしかサポートしていない場合でも、常にページペア0と1、2、3、4、5を割り当てることで、オペレーティングシステムを簡単に割り当てることができます。 2つの連続する512バイトのページフレーム。1KBページとして使用します。

最適なページサイズを決定するには、いくつかの矛盾する要素間のトレードオフが必要です。結果から、グローバル最適はありません。まず、小さなページを選択する理由として使用できる2つの要因があります。テキストセグメント、データセグメント、またはスタックセグメントをランダムに選択しても、整数のページが正確に満たされるとは限りません。平均して、最後のページの半分が空になります。余分なスペースが無駄になり、この無駄は内部断片化と呼ばれます。メモリにn個のセグメントがあり、ページサイズがpバイトの場合、np / 2バイトは内部の断片化によって無駄になります。この観点からは、小さなページを使用する方が適切です。

小さなページを選択することにも明らかな利点があります。プログラムを考えると、プログラムは8つのステージに分割されて順次実行され、各ステージには4KBのメモリが必要です。ページサイズが32KBの場合、プロセスは常に32KBのメモリを割り当てる必要があります。ページサイズが16KBの場合、必要なのは16KBだけです。ページサイズが4KB以下の場合、必要なメモリはいつでも4KBだけです。一般に、大きなページは小さなページより多くの役に立たないプログラムをメモリに保持します。

一方、小さなページはプログラムがより多くのページを必要とすることを意味し、これはさらに大きなページテーブルを意味します。32KBプログラムでは、4つの8KBページのみが必要ですが、64 512バイトページが必要です。通常、メモリとディスク間の転送は一度に1ページです。転送のほとんどの時間はシークと回転の遅延に費やされるため、小さなページの転送にかかる時間は基本的に大きなページの転送と同じです。 。512バイトの64ページをロードするには64×10ミリ秒かかる場合がありますが、8 KBの4ページをロードするには4×12ミリ秒しかかかりません。

一部のマシンでは、CPUがあるプロセスから別のプロセスに切り替えるたびに、新しいプロセスのページテーブルをハードウェアレジスタにロードする必要があります。このように、ページが小さいほど、ページレジスタのロードに時間がかかり、ページが減少するにつれて、ページテーブルによって占有されるスペースが増加します。

最後のポイントは、プロセスの平均サイズがsバイト、ページサイズがpバイト、各ページテーブルエントリにeバイトが必要であると仮定して、数学的に分析できます。その場合、各プロセスに必要なページ数は約s / pであり、ページテーブルスペースのse / pバイトを占有します。最終ページのメモリの内部無駄はp / 2です。したがって、ページテーブルの損失と内部の断片化によって引き起こされる合計コストは、次の2つの合計です。

オーバーヘッド= se / p + p / 2

ページが比較的小さい場合、最初の項目(ページテーブルサイズ)は大きくなります。2番目の項目(内部断片化)は、ページが大きいほど大きくなります。ページサイズが中央の特定の値のときに最適な値を取得する必要があります。pを1回導出し、右側をゼロにすると、次の方程式が得られます。

-se / p2 + 1/2 = 0

この方程式から、最適なページサイズの式を導き出すことができます(ページテーブルに必要なフラグメントの無駄とメモリのみを考慮)、結果は次のとおりです。

ここに画像の説明を挿入

s = 1MBおよび各ページテーブルエントリe = 8バイトの場合、最適なページサイズは4KBです。市販のコンピューターで使用されるページサイズは、通常512バイトから64 KBの間です。これまでの典型的な値は1 KBでしたが、より一般的なページサイズは4 KBまたは8 KBです。メモリが大きくなると、ページも大きくなる傾向があります(ただし線形ではありません)。RAMを4倍に拡張しても、ページサイズが2倍になることはめったにありません。

オリジナルの記事を468件公開 14 獲得 110,000ビュー

おすすめ

転載: blog.csdn.net/LU_ZHAO/article/details/105624177