オペレーティングシステム　第5章 主記憶の管理

キーワードのまとめです。

# 5. 主記憶の管理

### 主記憶

### アドレス

### アドレスレジスタ

### アドレス空間

- 各プロセスが機械命令で直接アクセス（参照）できる記憶領域

### 仮想アドレス空間

- 物理的に存在しているとは限らないアドレス空間

### 論理アドレス空間

- 仮想アドレス空間のこと

### 仮想記憶

- 論理アドレス空間と同じ大きさの主記憶が存在するような、主記憶のイメージ

### 物理アドレス空間

- 実際に物理的に存在する主記憶

### 仮想化

- ハードウェアリソースを多重かして、必要に応じてより使いやすい形に変えてユーザに提供する作業のこと

### メモリマッピング

- 仮想アドレス空間が、主記憶管理プログラムにより、実際に物理的に存在する物理アドレス空間へと対応づけられること

### ネーミング関数

- ユーザが定義した名前をユニークな識別子へ変換する関数

### メモリ関数

- ユニークな識別子（論理アドレス）をメモリアドレスに変換する関数

### 内容関数

- メモリアドレスをそのアドレスに含まれる値へ変換する関数

### バインディング

- ネーミング関数、メモリ関数、内容関数を定めること
- バインディングを行うのが遅くなればなるほどユーザはより高い自由度を有している

### メモリフラグメンテーション

- メモリ領域の割り当てで、小さい空き領域がたくさん生じ、主記憶の利用効率が低下すること

### 外部フラグメンテーション

- 主記憶全体に生じるフラグメンテーション
- ページングで解決できる

### 内部フラグメンテーション

- ページ内に生じるフラグメンテーション
- ページングでは解決できない
- ページの大きさを小さくするのが解決策だが、そのようにすると主記憶と二次記憶間のページの転送量が増加し、ページテーブルも大きくなる問題がある

### メモリコンパクション

- 実行中のジョブを主記憶内で移動して空き領域を結合し、一つの連続した大きな空き領域にすること

### 記憶保護

- アクセスを制限すること
- 記憶保護はバインディングの重要な側面
    - バインディングにより、二つの名前の間にアクセス経路を設定するだけでなく、アクセス経路の閉鎖、およびアクセスを設定された経路の制限に従って正しく行う必要がある（記憶保護）

### アクセス制御

### ソースプログラム

### コンパイラ

### プロセデュア

### オブジェクトモジュール

- コンパイラがソースプログラムを翻訳したもの

### プログラムライブラリ

- サブルーチンをオブジェクトモジュールの形で登録したもの
- ユーザプログラムから参照されていて、ユーザプログラムの中に含まれていないプロシージャを持ってくる

### リンケージエディタ

- ネーミング関数のためのユーティリティ
- ユーザの作成したプログラムとプログラムライブラリにあるオブジェクトモジュールを結合し、単一の実行可能プログラム（ロードモジュール）を作成する

### リンキンローダ

- リンケージエディタとローダを一緒にしたもの

### ローダ

- ロードモジュールを実際に主記憶にロードするプログラム

### 外部参照名

- モジュール内でその名前が参照されているが、そのモジュール内では宣言されていない名前のこと
- 他モジュールのエントリポイント（他のオブジェクトモジュールからの参照を許すアドレス）を指していると解釈される

### 静的再配置

- ロードモジュールの先頭アドレスを指定することでプログラムを任意の場所にロードし、実行することができる機能

### 動的再配置

- ジョブの割り当てを動的に変更する
- メモリフラグメンテーションを解決できる

### マルチプログラミング

### TSS

### 単一仮想記憶

- システム全体に対して一つの大きな仮想アドレス空間を設けるシステム
    - ↔各プロセスが独自のページテーブルを持ち、各プロセスは独自の仮想アドレス空間を有する

### 多重仮想記憶

- 仮想アドレスが重複する方式
- 単一仮想記憶ではアドレスが重複しないように仮想アドレス空間がプロセスに提供される

### 常駐スーパバイザ

- 連続ジョブ処理を行う
- 常駐スーパバイザ領域はユーザ領域かあら保護する

### ロック/キー機構

- 主記憶を同一の長さのブロックに分割し、それぞれに鍵をかける方式
- ユーザプログラムにはキーが与えられ、そのキーと一致するブロックのみアクセスが許される
- 主記憶のアクセスは
    1. 最終アドレスが定まる
    2. その最終アドレスを二つの部分、p（ブロック番号）とw（ブロック内の番地）に分割する
    3. ブロック番号pは必要なブロックを選択するために用いられる
    4. プロセッサのPSWのキーの値と、アクセスの対象となるブロックのプロテクションキーの値が比較される
    5. 合致した場合は、そのブロックに許されているアクセスモードか調べられる

### リロケーションレジスタ機構

- 下限レジスタ機構を拡張して、動的再配置機能を実現したもの
- リロケーションレジスタの動作
    1. 主記憶へのすべてのアクセスに対して、まずリロケーションレジスタの中の大きさに部分の値Lと比較がされ、その大きさ以下ならばアクセスは許される
    2. アドレスにリロケーションレジスタの基底アドレス部分の値Bを加えて物理アドレスを得る
- 記憶保護機能と動的再配置機能を組み合わせたもの

### ページング機構

- ロック/キー機構を、動的再配置機能を備えるように拡張したもの
- ページからページフレームへの変換機構

### セグメンテーション機構

- ２個のリロケーションレジスタを有する方式を拡張したもの
- 多数のレジスタを設ける代わりにセグメントテーブルという主記憶のテーブルを使う

### ページング/セグメンテーション機構

### 連想レジスタ

- ページテーブルを介してのアドレス変換は主記憶の参照を余分に必要とし、プログラムの実行がかなり遅くなるため、これを避けるために連想記憶を備えている

### 実行モード

- 記憶保護機構を適用するか否か自信を区別するために必要

### スーパバイザモード

- 主記憶のすべての領域にアクセスが許される
- いかなる命令（記憶保護機構の内容の変更も含む）の実行も許される

### プロブレムモード

- プログラムは記憶保護機構で許された領域にのみアクセスできる
- 一部の命令（特権命令など）は実行を許されない

### 特権命令

- 実行モード自身や記憶保護状態を変える命令、入出力命令などのこと

### スーパバイザコール

- プログラムが割り込みを生じさせる命令
- スーパーバイザ中のサブルーチンを呼び出す、サブルーチン呼出し命令

### PSW

### ジョブの中断

- ターンアラウンドタイムを優先ジョブに対して短くする手段の一つ
- 待ち行列理論によると、短いジョブを優先することにより、平均待ち時間を最小にすることができることがわかっている

### オーバレイ

- 主記憶の制限を解消するための、プログラムの重ね合わせ、と呼ばれる手法
- プログラムをルートセグメント（常に主記憶に存在し、オーバレイを制御する部分）とオーバレイセグメントに分割し、オーバレイセグメントをセグメント呼び出し要求に従ってスワップイン/スワップアウトする
- 下位セグメントが実行中は上位セグメント（下位セグメントを呼ぶ方）も主記憶中に存在する必要がある
    - そのためオーバレイ構造の経路上のすべてのセグメントが主記憶中に存在しなければならない
    - 最長の経路が必要な最大の主記憶の大きさを決定する

### スワップイン/スワップアウト

- バッチ処理におけるジョブの切り替えのこと

### ロールイン/ロールアウト

- スワップイン/スワップアウトのこと

### プログラムの共用

### リエントラントプログラム

- 複数のプロセスで同時に共用可能なプログラムのこと
- リエントラントプログラムは自分自身を変更してはならない
    - 変更される値はプロセスにより異なるため、同時並行実行が不可能となるため

### ピュアプロセデュア

- 変更がいっさい行われない性質をプログラムがピュアである、という

### スラッシング

- 主記憶内にジョブを多く入れすぎた結果、システムの性能が著しく低下する現象

### ページ置き換え

- 空きページフレームを作るためにどのページを追い出すか定める必要がある

### ページテーブル

- ページテーブル参照インデックス（ページ番号）からページフレーム番号を得るためのテーブル
    - ページが主記憶内にある場合は物理アドレス、ページが主記憶内にない場合は二次記憶のディスクアドレスが格納されている
- V（ページが主記憶内にあるかどうか）、P（アクセス制御）、C（ページに書込みが行われたかどうか）の情報も有する

### ページフォールト

- ページへのアクセスの際、Vビットが0ならばページフォールトが生じる
- ページフォールト処理は以下の通り
    1. ページテーブルからディスクアドレスを取り出す
    2. 該当するページが置かれるためのページフレームを決定する
    3. ページフレームにページをロード
    4. ページテーブルのエントリのページフレームフィールドをセットし、Vビットを1にする

### 多段ページテーブル

### ページ番号

### セグメントテーブル

- リロケーションレジスタと同様の役割だが、多数のレジスタを設けるのは高価なため、代わりに主記憶上に作成したテーブルを用いる

### セグメント番号

- セグメントテーブルのエントリを引くインデックス

### 基底アドレス

- 最終アドレスのバイト番号に基底アドレスを加えて物理アドレスが形成される

### ファーストフィット

- ブロック（割り当てられる領域）をブロックを格納するのに十分な大きさの最初の空き領域に割り当てる
- 空き領域は一般に、アドレスにより順序づけて管理されているとする

### ベストヒット

- ブロックを、ブロックを格納するのに十分な大きさの最小の空き領域に割り当てる

### ワーストフィット

- ブロックを一番大きな空き領域に割り当てる１

### 50%ルール

- 空きブロックと使用中のブロックが一定になる平衡状態を考えると、空きブロックの数が使用中のブロックの数の約半分となる