オペレーティング システムの原則 第 9 章 仮想メモリ

学部生向けのオペレーティング システムの原則 学習記録
学習記録 ファミリー バケット

実行するにはコードをメモリに取り込む必要がありますが、すべてのコードをロードする必要はありません

局所性の原則: プログラムは、部分的にメモリにロードされている限り実行できます。

9.1 仮想記憶技術

プロセスが実行されているとき、その一部は最初にメモリにロードされ、残りの部分はディスク上に保持されます.実行する命令またはアクセスするデータがメモリにない場合、オペレーティングシステムは自動的に完了します.それらをディスクから実行のためにメモリに入れます。

仮想アドレス空間: プロセスに割り当てられた仮想メモリ

仮想アドレス: 仮想メモリ内の命令またはデータの場所

仮想メモリ: メモリとディスクを有機的に組み合わせて大容量の「メモリ」、つまり仮想メモリを取得します。ただし、コンピューター自体のアドレス空間、つまり 32 ビットと 64 ビットの影響も組み合わせる必要があります。32 ビットは最大 4G までしか対応できず、64 ビットは非常に大きくなる可能性があります。

コピーオンライト

コピーオンライトにより、親プロセスと子プロセスが初期化時にページを共有できます

プロセスが共有ページを変更すると、コピーが作成されます。

9.2 仮想メモリの実装

2 つの実装:

  • 仮想ページング (仮想ストレージ技術 + ページング ストレージ管理)

  • 仮想セグメント (仮想ストレージ技術 + セグメント ストレージ管理)

仮想ページには次の 2 種類があります。

  • ページングを要求する (最初はすべて外部メモリ内)
  • ページの事前調整 (一部のページの事前調整)

ページネーションをリクエストする

  • プロセスが実行を開始する前に、すべてのページをロードする代わりに、1 つまたはゼロのページがロードされます

  • 実行後、プロセスの実行ニーズに応じて他のページを動的にロードします

  • メモリ空間がいっぱいになり、新しいページをロードする必要がある場合、新しいページをロードできるように、メモリ内のページが特定のアルゴリズムに従って置き換えられます。

ページフォールト

ページにアクセスする場合、そのページへの最初のアクセスは OS ページ フォールト割り込み (ページ フォールト トラップ) に入る必要があります。

  1. 命令またはデータへのアクセス
  2. 別の表を見て判断してください:
    2.1 無効な参照 => 終了
    2.2 メモリ不足
  3. バッキングストアでページの場所を見つける
  4. 空のページ フレームを取得し、ページをページ フレームにスワップします
  5. ページテーブルをリセットし、有効ビットを v に設定します
  6. 再起動コマンド

ページフォルト割り込み処理(最終試験) 内部割り込み、ソフト割り込み

[外部リンクの画像転送に失敗しました。ソース サイトにはアンチリーチング メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-t0aLtc9Q-1641365786872) (E:\Documents and PPT\Junior Course Study\Operating System \Pictures\Ninth Chapter\page fault 割り込み処理プロセス)]

リクエストページネーションのパフォーマンス(最終試験)

宇宙の時間

ページ フォールト率: ページ フォールトの数/合計アクセス時間、ページ フォールトの確率。

実効アクセス時間 (EAT)

EAT = (1-p) * メモリ アクセス時間 + p * ページ フォールト時間

9.3 ページの置き換え

基本的なページ交換方法:

  1. ディスク上のページの場所を見つける
  2. 無料のボックスを見つける (ここでは多くの可能性と戦略を扱う必要があります)
  3. フリー フレームへのページの書き込み、ページおよびフレーム テーブルの更新
  4. ユーザープロセスを再起動します

ページ置換アルゴリズム

FIFO 先入れ先出しアルゴリズム

先入れ先出しアルゴリズムはキューによって実装されます. 書き込まれるページごとに, 最初にキューに空き位置があるかどうかを確認します. 空いている位置がある場合, 操作は行われません. ない場合, のページキューの先頭が絞り出され、このページがキューの最後に挿入されます。

Belady の例外です。ページ フレームが増えると、ページ フォールトが増える可能性があります (4 つのページ フレームは 3 つよりもページ フォールトが多くなります)。

OPT 最適置換アルゴリズム

置き換えられたページは、将来不要になった、または最も遠い将来に使用されるページです (現在のページ番号から逆方向に、不要になった、または最も必要とされているページ)。

役割: 他のアルゴリズムのパフォーマンスを測定する基準として

[外部リンクの画像転送に失敗しました。ソース サイトにはアンチリーチング メカニズムがある可能性があります。画像を保存して直接アップロードすることをお勧めします (img-mogotoAH-1641365786874) (E:\Documents and PPT\Junior Course Learning\Operating System) \Pictures\Ninth Chapter \OPT 順列アルゴリズム)]

LRU の最近使用されていないアルゴリズム

最も長く使用されていないページ番号を確認し、図面が更新されたら、最も最近使用されたページを一番上に、最も長く使用されたページを最後に配置するのが最善です。

長期間使用されていないページを置き換える

セカンドチャンスアルゴリズム

ビットにアクセスする必要があります

アクセス ビットが 0 の場合は、直接置き換えます

スワップされるページ アクセス ビットが 1 の場合、次のようになります。

アクセスビットを0に設定

ページをメモリに保持する

同じルールで、次のページを置き換えます

実装: 時計順列 (時計回り)

9.4 システムのスラッシング

9.4.1 フレーム割り当て

満たす必要がある: 各プロセスで必要な最小ページ数

2 つの主な割り当て戦略

  • 固定配分
  • 優先順位の割り当て

固定割り当て:

均等割付 – 等分割方式
例: 100 ページフレームで 5 つのプロセスがある場合、各プロセスは 20 ページを割り当てます
比例割付 – 各プロセスのサイズに応じて割り当てます

優先度の割り当て:

プロセス サイズではなく優先度に基づく比率割り当て戦略を使用する

プロセス Pi がページ フォールトを生成した場合

  • ページ フレームの 1 つを置換するために選択します
  • 優先度の低いプロセスから置換するページを選択します

9.4.2 バンプ

プロセスに十分なページがない場合、ページ フォールト率が高くなり、次の原因になります。

  • 低 CPU 使用率。
  • オペレーティング システムは、マルチ プログラムの数を増やす必要があると考えています。
  • 新しいプロセスがシステムに追加されます

スラッシング (スラッシング): プロセスのページが頻繁にスワップインおよびスワップアウトされます

ジッターの理由: プロセスによって頻繁にアクセスされるページの数が、使用可能な物理ブロックの数よりも多い (プロセスに割り当てられた物理ブロックが不足している)

ワーキング セット モデル:

ワーキング セットの概念: プロセスが短い間隔で実際にアクセスするページのコレクション。

a より高速な CPU をインストールしても機能しない

b. 大きなページング ディスクをインストールしても機能しない

c. 多チャンネル化の度合いを高める

d. 多チャンネル度を下げる

e. メモリを増設する

f. より高速なハード ドライブまたは複数のハード ドライブを備えた複数のコントローラをインストールすることが可能です。

g. ページ フェッチ アルゴリズムにプリページングを追加する

9.5 カーネルメモリの割り当て

ユーザーメモリとは異なります

通常、空きメモリ プールから取得します。

  • カーネルは、異なるサイズのデータ​​構造にメモリを割り当てる必要があります
  • 一部のカーネル メモリでは、連続した物理ページのエミュレーションが必要です

カーネルがメモリブロックを使用する場合、
(1) メモリブロックのサイズが比較的小さい、
(2) メモリブロックを占有する時間が比較的短い、
(3) 割り当て完了までの時間が必要である、などの特徴があります。迅速な復旧;
(4) 交換には参加しません。
(5) 同じ構造のデータを格納するために同じサイズのメモリ ブロックを頻繁に使用する
(6) 動的な割り当てと回復を必要とする。

バディシステム

バディシステム

主なアイデア: 2 のべき乗に応じたメモリ

9.6 その他の要因

9.6.1 プリセットページング

プロセス起動の初期段階で、大量のページ フォールト割り込みを減らす

参照する前に、プロセスの必要なページのすべてまたは一部をロードします

プリロードされたページが使用されない場合、メモリが浪費されます

9.6.2 ページサイズの選択

サイズ選択

  • 断片化 – 小さなページが必要
  • テーブル サイズ - 大きなページが必要
  • I/O オーバーヘッド - 大きなページが必要
  • プログラム ローカル - 小さなページが必要
  • ページ フォールト – より大きなページが必要
  • その他の要因

最良の回答はありません。一般に、ページが大きくなる傾向があります

9.6.3 TLB 範囲

TLB 範囲 – TLB を介してアクセスされるメモリの量

TLB 範囲 = (TLB サイズ) X (ページ サイズ)

理想的には、プロセスのワーキング セットは TLB に格納する必要があります。

  • そうしないと、多数のページ フォールトが発生します。

ページサイズを大きくする

  • 巨大なページを必要としないアプリケーションの場合、これは断片化の増加につながります

さまざまなページサイズが利用可能

  • これにより、ヒュージ ページを必要とするアプリケーションは、フラグメントのサイズを増やすことなくヒュージ ページを使用する機会が与えられます。

おすすめ

転載: blog.csdn.net/weixin_45788387/article/details/122323806
おすすめ