内部断片化を起こさないストレージ管理とは?

青灯夜游
リリース: 2020-08-29 14:28:05
オリジナル
13146 人が閲覧しました

内部断片化を生じないストレージ管理とは、セグメント化されたストレージ管理です。セグメントストレージ管理方式では、ジョブのアドレス空間がいくつかのセグメントに分割され、各セグメントが論理情報のセットを定義します。各セグメントは 0 からアドレス指定され、連続したアドレス空間を使用します。ジョブ全体のアドレス空間は複数のセグメントに分割されているため 2 次元になります。

内部断片化を起こさないストレージ管理とは?

# 内部断片化を発生させないストレージ管理は、セグメント化されたストレージ管理です。内部断片化があるのはページ ストレージ管理のみであり、外部断片化があるのはセグメント ストレージ管理です。

ページング ストレージ管理

ページング ストレージ管理は、プロセスの論理アドレス空間を複数の等しいサイズのスライスに分割します。ページまたはページと呼ばれ、各ページにはページ 0、ページ 1 など、0 から始まる番号が付けられます。

これに応じて、メモリ空間も、(物理) ブロックまたはページ フレーム (フレーム) と呼ばれる、ページと同じサイズのいくつかのストレージ ブロックに分割され、0# ブロックなどの番号が付けられます。 1#ブロックなどプロセスにメモリを割り当てるとき、プロセス内のいくつかのページがブロック単位で、連続していない可能性がある複数の物理ブロックにロードされます。プロセスの最後のページは 1 つの部分に収まらないことが多いため、使用できない断片化が形成されます。これは「ページ内断片化」と呼ばれます。

セグメント化されたストレージ管理

セグメント化されたストレージ管理を導入する目的は、主にユーザー (プログラマー) のプログラミングと使用要件を満たすことです。他のストレージ管理方法では対応することが困難です。結果として、このストレージ管理アプローチは、今日のすべてのストレージ管理アプローチの基礎となっています。

セグメントストレージ管理方式では、ジョブのアドレス空間がいくつかのセグメントに分割され、各セグメントが一連の論理情報を定義します。たとえば、メインプログラムセグメント MAIN、サブプログラムセグメント X、データセグメント D、スタックセグメント S などがあります。各セグメントには独自の名前が付いています。簡単にするために、通常はセグメント名の代わりにセグメント番号を使用できます。各セグメントは 0 からアドレス指定され、連続したアドレス空間を使用します。セグメントの長さは、対応する論理情報グループの長さによって決まるため、各セグメントの長さは異なります。ジョブ全体のアドレス空間は複数のセグメントに分割されているため、論理アドレスはセグメント番号(セグメント名)とセグメント内のアドレスから構成される2次元になります。

セグメント化されたアドレスのアドレスは次の構造になっています。

内部断片化を起こさないストレージ管理とは?

このアドレス構造では、ジョブには最大 64 K のセグメントを含めることができます。セグメントの最大長は 64 KB です。セグメンテーション手法は多くのコンパイラでサポートされており、コンパイラはソース プログラムに基づいて複数のセグメントを自動的に生成できます。たとえば、Pascal コンパイラーは、グローバル変数、対応するパラメーターと戻りアドレスを格納するために使用されるプロシージャー呼び出しスタック、各プロシージャーまたは関数のコード部分、各プロシージャーまたは関数のローカル変数などに対して個別のセクションを作成できます。同様に、Fortran コンパイラーは、共通ブロックに別個のセクションを作成し、配列に別個のセクションを割り当てることができます。ローダーはこれらすべてのセグメントをロードし、各セグメントにセグメント番号を割り当てます。

セグメント化されたストレージ管理方法は、主にユーザーとプログラマの次の一連のニーズを満たすために導入されています。

1) 便利なプログラミング

通常、ユーザーは論理的な関係に従ってジョブをいくつかのセグメントに分割し、各セグメントは 0 からアドレス指定され、独自の名前と長さを持ちます。したがって、アクセスしたい論理アドレスは、セグメント名(セグメント番号)とセグメント内のオフセット(セグメント内アドレス)によって決まります。たとえば、次の 2 つの命令では、セグメント名とセグメント内のアドレスを使用します:

LOAD 1, [A] |;

STORE 1, [B] | ;

このうち、前者の命令の意味はセグメントAのユニットDの値をレジスタ1に読み込むことであり、後者の命令の意味はレジスタ1の内容をセグメントのユニットCに格納することです。 B. .

2) 情報共有

プログラムやデータの共有を実現する場合、情報の論理単位に基づきます。たとえば、特定のルーチンや機能を共有します。ページングシステムにおける「ページ」は情報を格納するための物理的な単位(ブロック)に過ぎず、完全な意味を持たず、共有には不便であるが、セグメントは情報の論理的な単位である。このことから、セグメントの共有化を実現するには、ストレージ管理をユーザープログラムセグメントの編成方法に適応させることが望ましいことがわかります。

3) 情報保護

情報保護は情報の論理的な単位も保護するため、分割管理方式の方がより効果的かつ便利に情報保護機能を実現できます。

4) 動的な増加

実際のアプリケーションでは、一部のセグメント、特にデータ セグメントは使用中に増加し続けますが、データ セグメントがどのように増加するかを事前に正確に知ることは不可能です。これはどれくらい古いのですか?前述の他のストレージ管理方法は、この動的な増加状況に対処することが困難ですが、セグメント化されたストレージ管理方法は、この問題をより適切に解決できます。

5) ダイナミックリンク

動的リンクとは、ジョブの実行前に複数のターゲット プログラム セグメントがリンクされないことを意味します。実行時には、メインプログラムに対応するターゲットプログラムをメモリ上にロードして実行を開始し、実行中に特定のセクションを呼び出す必要がある場合、そのセクション(ターゲットプログラム)をメモリ上にロードしてリンクします。 。ダイナミック リンクにも管理単位としてセグメントが必要であることがわかります。

関連知識の詳細については、PHP 中国語 Web サイト をご覧ください。

以上が内部断片化を起こさないストレージ管理とは?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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