基本的なページング ストレージ管理方法は何ですか?

angryTom
リリース: 2019-07-26 15:44:41
オリジナル
8372 人が閲覧しました

基本的なページング ストレージ管理方法は何ですか?

推奨チュートリアル: FAQ

はじめに

メモリ管理では、連続割り当て方式では多くの「フラグメント」が形成されます。「コンパクト」方式では、多くのフラグメントを接続して使用可能な大きなスペースにすることができますが、多額の出費を払ってください。

プロセスを多くの隣接しないパーティションに直接ロードできる場合は、「圧縮」する必要はありません。この考えに基づいて、離散配分方式が生み出されました。 離散割り当ての基本単位をページとする場合、ページングストレージ管理方式 と呼ばれます。ページングストレージ管理モードにおいて、ページスワップ機能を持たない場合は、基本ページングストレージ管理モードと呼ばれ、または純粋ページングストレージ管理モードと呼ばれます。各ジョブは、実行する前にメモリにロードする必要があります。

ページ ストレージが必要な理由

メモリ割り当てプロセス中に、連続割り当て方法では大量のフラグメントが生成される傾向がありますが、 「圧縮」して整理することもできますが、それには多くのオーバーヘッドが必要です。

したがって、プロセスのメモリ割り当て中に、連続した論理メモリを分散して複数の接続されていない物理メモリに割り当てることができれば、もともと無駄になっていた大きなフラグメントが利用されることになります。使用できないフラグメントのサイズ (フラグメントのサイズがページのサイズを超えると悪用される可能性があるため、ページのサイズまで) を調整し、メモリ使用率を向上させます。この考え方に基づいて離散割り当て方式が生まれ、離散割り当ての基本単位がページの場合はページングストレージ管理方式と呼ばれ、ページスワップ機能を持たない場合は基本ページングストレージ管理方式となります。 。

基本概念

ページ

ページングストレージ管理方式は、連続する論理アドレスを組み合わせたものです。プロセス スペースは、ページまたはページと呼ばれるいくつかの等しいサイズのアドレス スライスに分割されます。そして、ページ 0、ページ 1 のように番号を付けます。論理的には、これらのページ内のアドレスは連続していますが、対応する物理ブロック アドレスは不連続である可能性があります。対応する物理ブロックには、それに応じてブロック 0、ブロック 1 などの名前も付けられます。プロセスがメモリを割り当てるとき、プロセスのいくつかのページが対応する物理ブロックにそれぞれロードされます。最後のページがいっぱいではないことが多いため、利用できないページ内断片化が形成されます。

ページング ストレージ管理の使用目的メモリの断片化をより活用するため、ページ サイズは通常のプロセスに必要なアドレス空間サイズよりも相対的に小さくなります。では、ページの適切なサイズはどれくらいでしょうか?ページが小さすぎると、メモリ内で使用できないフラグメントの最大サイズが減り、メモリ領域の使用率が向上しますが、プロセスが多くのページを占有することになり、ページ テーブルが長すぎて効率が低下します。ページのスワップインとアウトの効率。同様に、ページが大きすぎる場合、ページのスワップインとスワップアウトの効率は向上しますが、メモリの断片化も増加します。したがって、経験上、最適なページ サイズは約 512B ~ 8KB です。

ページ テーブル

ページ テーブルは、プロセス内で維持されるアドレス空間であり、ページと物理ブロック間のマッピング関係を保存します。ページ テーブルについて説明する前に、まず、理解する ページングのアドレス構造をクリアします。

物理アドレス空間の場合、メモリ アドレス空間の合計は固定されています。プロセスに割り当てられる論理メモリ空間も固定で連続しており、論理アドレス空間は 0 から始まり、プロセス内の 1 バイトの論理アドレスが 1088B、ページサイズが 512B であるとします。ページの紹介の際にも述べたように、論理アドレス空間は複数のページに分割されていますが、各ページの論理アドレスは連続しています。次に、そのバイトが属するページ番号 P = 2 (0 から始まる) とページ アドレス d = (1088 - 512 * 2) = 64 がわかります。

つまり、ページ長がわかれば、論理アドレスからそのアドレス空間が属するページ番号とページ内の相対アドレスが簡単にわかる。これら 2 つのパラメータとページ テーブルに基づいて、そのアドレスに対応する物理アドレスを知ることができます。

ページ テーブルは、以下に示すように、ページと物理ブロックをマップするために使用されるテーブルです。

基本的なページング ストレージ管理方法は何ですか?

ページ テーブルを通じて、ページ番号があれば、物理ブロック番号がわかり、対応する物理ブロック空間の開始アドレスもわかります。ページ内アドレスと組み合わせると、対応する物理アドレスがわかります。このようにして、論理アドレスから物理アドレスへの変換を実現できます。

アドレス変換

上記の基本概念の紹介では、アドレス変換の原理を簡単に紹介しましたが、具体的なプロセスを詳しく見てみましょう。

上で述べたように、ページ番号から物理ブロック番号へのマッピングはページテーブルを検索することでわかりますが、ページテーブルはどこに格納され、どのようにしてページテーブルを見つけるのでしょうか? ?

ページ テーブルはレジスタのセットによって実装できます。各レジスタにはページ テーブル エントリが格納されます。レジスタのアクセス速度が速いため、ページ テーブルのアドレス変換の速度を向上できます。ただし、レジスタのコストは高く、ページ テーブル内のページ テーブル エントリは非常に大きくなり、数百または数千のエントリに達する場合があります。したがって、ページ テーブルは通常メモリに格納され、システムではページ テーブル レジスタ PTR を 1 つだけ設定して、ページ テーブルの開始アドレスと長さをメモリに格納します。通常、プロセスが実行されていない場合、開始アドレスとページテーブル長はこのプロセスの PCB に格納されます。スケジューラがプロセスをスケジュールすると、これら 2 つのデータがページ テーブル レジスタにロードされます。したがって、シングルプロセッサ環境では、システム内で複数のプロセスを実行できますが、必要なページ テーブル レジスタは 1 つだけです (つまり、複数のプロセスが同時に実行されている場合、複数のプロセスのページ テーブル データを格納する必要があります)別々に) 。

プロセスが特定の論理アドレスのデータにアクセスする必要がある場合、ページング アドレス変換メカニズムは、実効アドレス (相対アドレス) をページ番号とページ内アドレスの 2 つの部分に自動的に分割し、ページテーブルを取得するためのインデックスとしてのページ番号。検索前にページ番号とページテーブル長を比較し、ページ番号がページテーブル長以上であれば、今回アクセスしたアドレスがプロセスのアドレス空間を超えていることを意味します。その後、このエラーはシステムによって検出され、アドレス範囲外割り込みが生成されます。範囲外エラーが発生しない場合は、ページ テーブルの開始アドレスをページ番号とページ テーブル エントリの長さの積に加算して、ページ テーブル内のエントリの位置を取得し、物理アドレスを取得します。そこからページのブロック番号を取得し、物理アドレスレジスタにロードします。同時に、実効アドレスレジスタのページアドレスが物理アドレスレジスタのブロックアドレスフィールドに送信されます。これで論理アドレスから物理アドレスへの変換が完了しました。次の図は、ページング システムのアドレス変換メカニズムを示しています。

基本的なページング ストレージ管理方法は何ですか?

#高速テーブル

ページ テーブルはメモリに格納されるため、そのため、アドレスを読み取るたびに、メモリに 2 回アクセスする必要があります。1 回目は物理ブロック番号を見つけるためにページ テーブルにアクセスし、2 回目はデータを取得するために実際の物理アドレスにアクセスします。 。したがって、この方法を採用すると、コンピュータの処理速度が 1/2 近く低下します。

アドレス変換の効率を向上させるために、並列検索機能を備えた特殊なキャッシュ レジスタのセットがアドレス変換メカニズムに追加されます。このメカニズムは、「連想メモリ」(Associative Memory) または「高速テーブル」とも呼ばれます。 " 、現在アクセスされているページ テーブル エントリ データを保存するために使用されます (キャッシュと同様、以前に検索されたページ テーブル エントリを保存し、ページ番号から物理ブロック番号への変換効率を向上させます)。このようにして、アドレス変換プロセスは次のようになります。

基本的なページング ストレージ管理方法は何ですか?

CPU が論理アドレスを取得した後、アドレス変換メカニズムはページ番号を高速テーブルに渡してクエリを実行します。対応する物理ブロック番号が見つかった場合は、データにアクセスするページ内のアドレスに基づいて物理アドレスが直接見つかります。そうでない場合は、通常の方法で物理ブロック番号が検索され、次の高速テーブルに保存されます。同じ時間です。高速テーブルがいっぱいの場合、システムは自動的にページ テーブル エントリを削除して置き換えます。

つまり、高速テーブルはページ テーブル エントリ キャッシュに相当します。

以上が基本的なページング ストレージ管理方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!