学部生向けのオペレーティング システムの原則 学習記録
学習記録 ファミリー バケット
実行するにはコードをメモリに取り込む必要がありますが、すべてのコードをロードする必要はありません
局所性の原則: プログラムは、部分的にメモリにロードされている限り実行できます。
9.1 仮想記憶技術
プロセスが実行されているとき、その一部は最初にメモリにロードされ、残りの部分はディスク上に保持されます.実行する命令またはアクセスするデータがメモリにない場合、オペレーティングシステムは自動的に完了します.それらをディスクから実行のためにメモリに入れます。
仮想アドレス空間: プロセスに割り当てられた仮想メモリ
仮想アドレス: 仮想メモリ内の命令またはデータの場所
仮想メモリ: メモリとディスクを有機的に組み合わせて大容量の「メモリ」、つまり仮想メモリを取得します。ただし、コンピューター自体のアドレス空間、つまり 32 ビットと 64 ビットの影響も組み合わせる必要があります。32 ビットは最大 4G までしか対応できず、64 ビットは非常に大きくなる可能性があります。
コピーオンライト
コピーオンライトにより、親プロセスと子プロセスが初期化時にページを共有できます
プロセスが共有ページを変更すると、コピーが作成されます。
9.2 仮想メモリの実装
2 つの実装:
-
仮想ページング (仮想ストレージ技術 + ページング ストレージ管理)
-
仮想セグメント (仮想ストレージ技術 + セグメント ストレージ管理)
仮想ページには次の 2 種類があります。
- ページングを要求する (最初はすべて外部メモリ内)
- ページの事前調整 (一部のページの事前調整)
ページネーションをリクエストする
-
プロセスが実行を開始する前に、すべてのページをロードする代わりに、1 つまたはゼロのページがロードされます
-
実行後、プロセスの実行ニーズに応じて他のページを動的にロードします
-
メモリ空間がいっぱいになり、新しいページをロードする必要がある場合、新しいページをロードできるように、メモリ内のページが特定のアルゴリズムに従って置き換えられます。
ページフォールト
ページにアクセスする場合、そのページへの最初のアクセスは OS ページ フォールト割り込み (ページ フォールト トラップ) に入る必要があります。
- 命令またはデータへのアクセス
- 別の表を見て判断してください:
2.1 無効な参照 => 終了
2.2 メモリ不足 - バッキングストアでページの場所を見つける
- 空のページ フレームを取得し、ページをページ フレームにスワップします
- ページテーブルをリセットし、有効ビットを v に設定します
- 再起動コマンド
ページフォルト割り込み処理(最終試験) 内部割り込み、ソフト割り込み
リクエストページネーションのパフォーマンス(最終試験)
宇宙の時間
ページ フォールト率: ページ フォールトの数/合計アクセス時間、ページ フォールトの確率。
実効アクセス時間 (EAT)
EAT = (1-p) * メモリ アクセス時間 + p * ページ フォールト時間
9.3 ページの置き換え
基本的なページ交換方法:
- ディスク上のページの場所を見つける
- 無料のボックスを見つける (ここでは多くの可能性と戦略を扱う必要があります)
- フリー フレームへのページの書き込み、ページおよびフレーム テーブルの更新
- ユーザープロセスを再起動します
ページ置換アルゴリズム
FIFO 先入れ先出しアルゴリズム
先入れ先出しアルゴリズムはキューによって実装されます. 書き込まれるページごとに, 最初にキューに空き位置があるかどうかを確認します. 空いている位置がある場合, 操作は行われません. ない場合, のページキューの先頭が絞り出され、このページがキューの最後に挿入されます。
Belady の例外です。ページ フレームが増えると、ページ フォールトが増える可能性があります (4 つのページ フレームは 3 つよりもページ フォールトが多くなります)。
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 に格納する必要があります。
- そうしないと、多数のページ フォールトが発生します。
ページサイズを大きくする
- 巨大なページを必要としないアプリケーションの場合、これは断片化の増加につながります
さまざまなページサイズが利用可能
- これにより、ヒュージ ページを必要とするアプリケーションは、フラグメントのサイズを増やすことなくヒュージ ページを使用する機会が与えられます。