オペレーティング システム試験のレビュー - 第 4 章 スワップ ページング ストレージ管理方法

スワップ技術はスイッチング技術にもなり、当時のコンピュータのメモリが非常に小さかったため、システムが複数のユーザープログラムを時分割で実行できるようにするために導入されました。

1. スワップの導入:

いわゆる「スワッピング」とは、十分なメモリ領域を解放するために、メモリ内の一時的に実行できなくなったプロセスやデータ、または一時的に使用されていないプログラムやデータを外部メモリに転送し、その後、すでに実行いるプロセスやプロセスを転送することを指します。プログラムとデータがメモリにロードされます

2. スワップの種類:

1) 全体的なスワップ

プロセッサの中間レベルのスケジューリングは、実際にはメモリ スワップ機能です。その目的は、メモリ不足の問題を解決することです。中間スケジューリングはプロセスに基づいているため、「プロセス スワップ」または「全体スワップ」とも呼ばれます。

2) ページ交換

処理の1つの「ページ」または「セグメント」単位で行われるため、それぞれ「ページスワップ」、「セグメントスワップ」と呼ばれ、総称して「部分スワップ」と呼ばれます。

スワップ テクノロジのうち、ここではプロセス スワップについてのみ説明しますが、ページングまたはセグメント スワップは仮想メモリに導入されます。

スワップスペース管理

1. スワップ領域管理の主な目的:

スワップ機能を備えたOSでは、通常、外部ストレージはファイル領域スワップ領域に分かれています。
1) ファイル領域管理の主な目的。
ファイルの保存領域の利用率を向上させるため、ファイル領域は個別に割り当てられます。
2) スワップ領域管理の主な目的。
スワップ操作がより頻繁になります。したがって、プロセスのスワップインおよびスワップアウトの速度が向上します。このため、外部メモリの断片化の問題をあまり考慮せずに、連続割り当て方法が採用されます。

2. スワップ領域の空きディスクブロック管理におけるデータ構造

これは、動的パーティション割り当て方式におけるデータ構造、つまりフリー パーティション テーブルまたはフリー パーティション チェーンに似ています。各エントリにはスワップ領域の先頭アドレスとそのサイズの 2 つの項目が含まれており、サブテーブルはディスク ブロック番号とディスク ブロック数で表されます。

3. 交流スペースパーティの割り当てとリサイクル

前述の動的パーティション割り当てのメモリ割り当てとリサイクル方法と同様に、これも 4 つの状況に分けられます。リサイクルエリアの上にフリーパーティション、リサイクルエリアの下にフリーパーティションがあり、フリーエリアの上下にフリーパーティションがあり、フリーエリアの上下にフリーパーティションはありません。

プロセスのスワップインとプロセスのスワップアウト:

プロセスのスワップアウト:
1) スワップアウトするプロセスを選択します。ブロックまたはスリープしているプロセスが最初に選択され、複数ある場合は優先度の最も低いプロセスが選択されます。一部のシステムでは、優先順位の考慮に加えて、メモリ内でのプロセスの滞留時間も考慮する必要があります。システム内にブロックしているプロセスがなく、メモリがまだ不十分な場合は、最も低い優先順位を持つ準備完了プロセスが選択されてスワップアウトされます。
2) プロセスのスワップアウトプロセス。スワップアウトできるのは非共有プログラムおよびデータセグメントのみであり、プロセスが必要とする限り共有セグメントをスワップアウトすることはできません。スワップアウトする場合、①スワップスペースの申請が必要です。②アプリケーションが成功したらディスクを起動し、プロセスのプログラムとデータをディスクのスワップ領域に転送します。③転送が成功すると、プロセスが占有していたメモリ空間を回復し、それに応じてプロセスのPCBとメモリ割り当てテーブルを変更することができ、スワップアウトできるプロセスがまだある場合は、スワップアウトできるプロセスがなくなるまでスワップアウトを続けます。プロセスがブロックされるまで、メモリの障害はなくなります。

プロセスの交換。
定期的にスワップ操作を実行してください。「準備完了」状態にあるがスワップアウトされているプロセスを見つけ、スワップアウトされている時間が最も長いプロセスをスワップイン プロセスとして使用し、そのプロセスにメモリを適用します。アプリケーションが成功すると、転送されます。失敗すると、最初にメモリ内の一部のプロセスをスワップアウトする必要があり、その後、プロセスがスワップインされます。スワップ プロセスは、外部メモリ内に「準備完了かつスワップアウト」状態のプロセスがなくなるか、プロセス内でスワップするのに十分なメモリがなくなるまで、スワップインを停止します。

ページングストレージ管理方法:

連続割り当て方法では、多数の「フラグメント」が形成され、多数のフラグメントを「コンパクト」に使用可能な広い領域に結合できますが、多くのオーバーヘッドが必要になります。プロセスを多数の非連続パーティションに直接ロードできる場合、「圧縮」を必要とせずにメモリ空間を最大限に活用できます。

1) ページング記憶管理方式: ユーザプログラムのアドレス空間を「ページ」または「ページ」と呼ばれるいくつかの固定サイズの領域に分割します。メモリ空間もいくつかの物理ブロックまたはページ フレームに分割され、ページとフレームは同じサイズです。
2) セグメントストレージ管理方式: ユーザプログラムのアドレス空間をサイズの異なるいくつかのセグメントに分割します。割り当てはセグメント単位となります。
3) セグメント化ページ ストレージ管理方式: ページングとセグメント化ストレージ方式を組み合わせたものです。

ページングストレージ管理の基本的な方法

1. ページと物理ブロック

1) ページ: プロセスの論理アドレス空間を、ページと呼ばれるいくつかの等しいサイズの部分に分割し、各ページに番号を付けます。同様に、メモリの物理空間もいくつかのブロックに分割され、各ブロックには番号が付けられます。プロセスにメモリを割り当てるとき、プロセス内のいくつかのページがブロック単位で、連続していない可能性がある複数の物理ブロックにロードされます。プロセスの最後のページは 1 つの部分に収まらないことが多いため、使用できない断片化が形成されます。これは「ページ内断片化」と呼ばれます。
2) ページ サイズ: ページ サイズは適度に選択する必要があり、ページ サイズは 2 のべき乗、通常 1 KB ~ 8 KB である必要があります。ページが小さすぎると、プロセス内のページ数が多すぎるため、ページ テーブルが長すぎて大量のメモリを占有し、ハードウェア アドレス変換のコストが増加して効率が低下します。ページの切り替え/切り替え。ページが大きすぎると、業界で断片化が増加し、メモリ使用率が低下します。

2.アドレス構造

ページングアドレスのアドレス構造は次のとおりです。

                      31 12 11 0

ページ番号 P 変位W

これは2つの部分からなり、前者はページ番号P、後者はページ内のアドレスである変位量Wである。図に示すように、各ブロックのサイズは 2^12、つまり 4KB であることがわかります。ビット 31 ~ 12 はページ番号であるため、ページ番号は 2^20、つまり 1M ページになります。

3. ページテーブル

プロセスが正しく動作することを保証するために、各ページに対応する物理ブロックをメモリ内で見つけることができます。この目的を達成するために、システムはプロセスごとにページ テーブルと呼ばれるページ イメージ テーブルを確立します。プロセス アドレス空間内のすべてのページには、ページ テーブル内に 1 つのページ エントリがあり、メモリ内の対応するページの対応する物理ブロック番号が記録されます。ページ テーブルの役割は、ページ番号から物理ブロック番号へのアドレス マッピングを実装することであることがわかります。

住所翻訳会社:

アドレス変換メカニズムを設定する目的は、ユーザー アドレス空間の論理アドレスをメモリ空間の物理アドレスに変換することです。

高速テーブルによるアドレス変換メカニズム:

ページ テーブルはメモリに格納されるため、CPU はデータにアクセスするたびにメモリに2 回アクセスする必要があります。1 回目は、メモリ内のページ テーブルにアクセスし、指定されたページの物理ブロック番号を見つけ、そのブロック番号をページ内のオフセット W と連結して物理アドレスを形成します。2回目にメモリにアクセスする場合は、1回目に取得したアドレスから必要なデータを取得します。
アドレス変換速度を向上させるために、「連想レジスタ」または「高速テーブル」とも呼ばれる、並列検索機能を備えた特別なキャッシュ レジスタをアドレス変換メカニズムに追加できます。

CPU が有効なアドレスを与えた後、アドレス変換メカニズムは自動的にページ番号 P をキャッシュ レジスタに送信し、このページ番号をキャッシュ内のすべてのページ番号と比較します。一致するページ番号がある場合、そのページはそのページであることを意味します。アクセスされるテーブル エントリは高速テーブル内にあります。したがって、ページに対応する物理ブロック番号を高速テーブルから直接読み出し、物理アドレスレジスタに送信することができます。対応するページテーブルエントリがブロックテーブル内に見つからない場合は、メモリ上のページテーブルに再度アクセスする必要があり、見つかった後、ページテーブルエントリから読み取った物理ブロック番号をアドレスレジスタに送信すると同時に、 、ページテーブルは、高速テーブルのレジスタユニットにエントリが格納される、すなわち、高速テーブルが再変更される。ただし、高速テーブルがいっぱいの場合、OS は不要になった古いページ テーブル エントリを見つけて交換する必要があります。

メモリにアクセスする有効時間:

基本的なページング ストレージ管理方法では、有効アクセス時間は、最初のメモリ アクセス時間 (つまり、ページ テーブルに対応するページ テーブル エントリを見つけるのに費やされる時間 t) と 2 番目のメモリ アクセス時間 (つまり、物理ブロック番号とページ アドレスを実際の物理アドレスに連結するのに費やした時間 t) の合計: EAT = t + t = 2t;

高速テーブルで必要なテーブル エントリを見つけるにはヒット率の問題があります。いわゆるヒット率とは、高速テーブルを使用して、必要なページのテーブル エントリを正常に見つける率を指します。
EAT = а×λ + (t+λ)(1-а) + t = 2t + λ - t×а; 上記の
式で、λ は高速テーブルを見つけるのに必要な時間を表し、а はヒット率を表します。 、t はメモリに 1 回アクセスするのに必要な時間を表します。

2 レベルおよびマルチレベルのページ テーブル

最新のコンピュータ システムのほとんどは非常に大きな論理アドレス空間をサポートしているため、ページ テーブルは非常に大きくなり、かなりの量のメモリ空間を占有します。各ページ テーブル エントリは 1 バイトを占有するため、ページ テーブルの長さ * 1 バイトは、ページ テーブルが占有するメモリ空間のサイズになります。さらに、ページテーブルのメモリ空間も連続している必要があり、明らかに非現実的です。解決策:
(1) ページ テーブルに必要なメモリ空間については、離散割り当てを使用して、大きな連続メモリ空間を見つけるのが難しいという問題を解決できます。(2) 現在必要なページ テーブル エントリの一部のみが、ページ テーブルに転送されます
。ページ テーブル エントリはまだディスク上に存在し、必要なときに呼び出すことができます。

2 レベルのページ テーブル。
ページ テーブルはページに分割され、各ページは異なる物理ブロックに個別に格納されます。また、離散的に割り当てられたページテーブルに対して、アウターページテーブルと呼ばれる別のページテーブルを作成する必要があり、各ページテーブルエントリには、ページテーブルページの物理ブロック番号が記録される。
前述の 32 ビット論理アドレス空間を例に挙げると、ページ サイズが 4 KB で 2 レベルのページ テーブル構造が使用されている場合、ページ テーブルは各ページに 2^10 (つまり 1024) ページが含まれるようにページングされます。テーブル エントリには、最大 2^10 ページのテーブル ページが許可されます。このときの論理アドレス構造は以下の通りです。

ページ テーブルの各エントリには、メモリ内のプロセスの特定のページの物理ブロック番号が格納され、外側のページ テーブルの各ページ テーブル エントリには、特定のページ テーブルのメモリ内のページ数が格納されます。外部ページ テーブルとページ テーブルの 2 つのレベルのページ テーブルを使用して、プロセスの論理アドレスからメモリ内の物理アドレスへの変換を実現できます。アドレス変換メカニズムでは、アウター ページ テーブルの開始アドレスを格納するアウター ページ テーブル レジスタを追加し、論理アドレス内のアウター ページ番号を使用して指定されたページ テーブルの開始アドレスを見つける必要もあります。次に、外側のページ番号を使用して、指定されたページ テーブルの開始アドレスを見つけます。ページ内のアドレスで指定されたページ テーブル エントリを見つけて、ページ テーブル エントリからメモリ内のページの物理ブロック番号を読み取ります。
これにより、大きなページ テーブルに大きな連続ストレージ領域が必要なくなるという問題は解決されますが、大きなページ テーブルを格納するために使用するメモリ領域が少なくなるという問題は解決されません。スペースを個別に割り当てるだけでは、ページ テーブルが占有するメモリ スペースは削減されません。解決策は、現在必要なページ テーブル エントリのバッチをメモリに転送し、必要に応じてそれらを次々に転送することです。2 レベルのページ テーブル構造を使用する場合、実行中のプロセスでは外側のページ テーブルをメモリに転送する必要がありますが、ページ テーブルは 1 つまたは複数のページに転送するだけで済みます。特定のページのページテーブルがメモリに転送されたかどうかを示すために、外側のページテーブルエントリにステータスビットSを追加する必要があります。その値が0の場合、ページテーブルページが転送されていないことを意味しますそれ以外の場合は、ページがメモリに転送されたことを意味します
プロセスの実行中、アドレス変換機構は論理アドレスのアウターページ番号 P1 に基づいてアウターページテーブルを検索し、見つかったページテーブルエントリのステータスビットが 0 の場合、割り込み信号を生成して OS に要求します。ページを転送する テーブルがメモリにページングされます。リクエスト ページングの詳細については、次の章「仮想メモリ」で説明します。
マルチレベルのページテーブル。
32 ビット マシンの場合は、2 レベルのページ テーブル構造を使用するのが適切ですが、64 ビット マシンの場合は、マルチレベルのページ テーブルを使用する必要があり、外側のページ テーブルがページングされます。

反転ページ テーブルの導入
現在のコンピュータ システムでは、通常、プロセスの論理アドレス スペースを非常に大きくすることが許可されているため、多くのページ テーブル エントリが必要となり、多くのメモリ スペースも占有します。逆ページ テーブルを導入すると、通常、ページ テーブル エントリはページ番号でソートされ、ページ テーブル エントリの内容は物理ブロック番号になります。逆ページテーブルは、物理ブロックごとにページテーブルエントリを設定し、物理ブロックの番号でソートします。内容は、ページ番号と、それが属するプロセスの識別子です。

アドレス変換 アドレス
変換に逆ページテーブルを使用する場合、プロセス識別子とページ番号に基づいて逆ページテーブルを取得します。一致するページ テーブル エントリが取得された場合、ページ テーブル エントリ (中央) のシーケンス番号 i は、そのページが配置されている物理ブロック番号です。このブロック番号は、ページ アドレスとともに使用して物理アドレスを形成し、送信できます。それをメモリアドレスレジスタに書き込みます。
反転ページ テーブルには、メモリにロードされたページのみが含まれますが、まだメモリにロードされていないページは含まれません。したがって、プロセスごとに外部ページ テーブルも確立する必要があります。必要なページがメモリ上にない場合、外部ページテーブルには外部メモリ上の各ページの物理アドレスが含まれているため、それを介して必要なページをメモリに転送することができる。
メモリ容量が大きい場合でも、テーブル エントリの数は非常に多くなります。プロセス識別子とページ番号を使用してこのような大規模な線形テーブルを取得するには、非常に時間がかかります。ハッシュ アルゴリズムは検索に使用でき、反転ページ テーブル内の対応するページ テーブル エントリをすぐに見つけることができますが、いわゆる「アドレス競合」が発生する可能性があります。

おすすめ

転載: blog.csdn.net/m0_53345417/article/details/130542725