オペレーティングシステム　第2章 CPUスケジュリング

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

# 2. CPUスケジュリング

### コンテキストスイッチング

- CPUの動作がプロブレムモードのプログラムからSVC割り込み処理ルーチンへと切り替わること
    - プロブレムモードのプログラムがSVCを実行した際、現在のPSWレジスタの内容はSVC割込みに対する旧PSWの場所に記憶され、SVC割込みに対する新PSWの内容がPSWレジスタに移されることで実現

### CPUスケジュラ（ディスパッチャ）

- プロセスにCPUを割当てる機能

### 循環型待ち行列

- 複数の待ち行列システムが円状に繋がったもの
    - CPU待ち行列→CPU段階→I/O待ち行列→I/O段階→CPU待ち行列…

### ディスパッチャ

### 動的優先度

- スケジュリングで実行中に優先度を変える方式のこと
    - 入出力ジョブ優先方式
    - SPT（処理時間順）方式
- 優先度順スケジュリングは静的優先度方式（↔動的優先度方式）

### イベントドリブン

- システムの状態に変化が生じたときに、CPUを別のプロセスに切り替える方式
- イベント（状態変化）の例としては、入出力の完了、入出力要求の発生、新しいジョブの到達、ジョブの完了など

### スタベーション

- 優先度スケジュリング方式で、優先度の低いジョブにサービスの順番がなかなか回ってこない（無限延期）状態

### 割り込み処理ルーチン

- 割込み条件が成立すると、割込の種類に応じて実行されるあらかじめ指定されたプログラム
    - 割込みとは一種のサブルーチンコールのこと

### ロングタームスケジュリング

- ジョブが主記憶に入ることを許されるか決定する
    - ジョブの起動やジョブスワッピングを行う

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

- 主記憶に複数個のプログラムを格納し、入出力待ちなどが生じたときにプログラムを切り替えることによってコンピュータの利用効率を向上させる方式

### ノンプリエンプション

- ジョブが完了するまで続行するスケジュリング方式
- ↔プリエンプション

### ニュークリアス

- オペレーティングシステムの核

### プリエンプション

- 実行を一時中断し、他のジョブを実行する方式

### プロセス制御ブロック（PCB）

- プログラムを実行するのに最も重要で、頻繁に参照されたり変更されたりする情報を記憶する主記憶内のデータ構造のこと
- PCBに通常含まれているもの
    - CPUレジスタの内容（プロセスが実行中でない時）
    - プログラムカウンタの内容（プロセスが実行中でない時）
    - 現在のプロセスの状態（実行中/実行可能/待ち状態）
    - プロテクション状態
        - 主記憶のアクセス制御に関する情報
    - 組み込み禁止状態
        - どの組み込みを禁止するか、それとも禁止しないか
    - プロセスの名前
    - プロセスの優先度
    - 実行時間（CPU時間）
    - 仮想記憶についての情報
        - 特に仮想記憶の位置
- オペレーティングシステムが必要とする重要な情報はすべてPCBに保存され、常駐領域に置かれる
    - 常駐領域はオペレーティングシステムのニュークリアすが永久的に占めている主記憶の領域のこと
- 実行可能列と待ち行列は、PCBを待ち行列の要素として管理することによって作られる

### プロセス状態ブロック（PSB）

- PCBの別名

### プロセッサ分割スケジュリング

- ラウンドロビン・スケジュリング方式において、割当てたqを非常に小さくすると、実行可能なプロセスが皆同等のサービスを受けるようになる（プロセッサ分割スケジュリング）
- 処理時間は要求されたサービス時間に直接比例する

### プログラムステータスワード（PSW）

- プロセスの実行を円滑に効率よく行うために、プロセスの重要な情報を保存しておくレジスタ
- 1つのCPUは1つのPSWレジスタを有している
- PSWには以下のような情報が保持されている
    - 実行すべき次の機械命令のアドレス（プログラムカウンタor命令カウンタ）
    - 割込みコード（割込の理由）
    - 割込マスク（各割込の種類に対して、その割込を禁止すべきか否かを指定するビット列）
    - 実行モード

### クオンタム

- プロセスに割り当てられた時間

### 実行可能状態

- CPUが割り当てられればすぐプログラムを実行できる状態

### 実行中状態

- CPUを確保し、プログラムを実行している状態

### 待ち状態

- 要求している資源を待っていたり、メッセージが到達するのを待っているとか、何らかの待ち状態にあり、CPUを必要としていない状態

### エージング

- ジョブの待ち時間の長さに比例して優先度を上げる方式
- スタベーションの解決法の一つ

### レスポンスタイム

- 応答時間
- TSSまたは対話型システムに使われる

### ラウンドロビン（RR）

- 実行可能列の最初のプロセスにq秒のCPU時間（クオンタム）を割当て、そのプロセスがq秒以内に完了しないと、ディスパッチャによって実行可能列の最後列に移され、次のプロセスが新たにCPUタイムをq秒与えられる、ということを繰り返す方式

### サーバ

### ショートタームスケジュリング

- プロセスの状態に変化が生じたときに、CPUをどのプロセスに割り当てるべきかの問題に対処するもの
- オペレーティングシステム階層構造の一番下のレベルに対応する
- CPUスケジュリングはショートタームスケジュリング

### SPT

- 処理時間（SPT）方式
- 処理時間の短いジョブから順に実行する
- 平均応答時間を最小にする方式
- 利用効率も向上させることが多い

### 静的優先度

- 一旦指定された優先度は変化しない方式
- ↔動的優先度

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

- システムコール
- プロセス（プログラム）が入出力などを要求するためにシステムを呼び出すこと
- 割込を生じさせる特別な命令によって行われる

### スループット

- 単位時間に成される仕事量（単位時間に処理されるジョブの数）
- CPUの利用効率に比例する

### タイムシェアリング

- コンピュータの処理時間を決まった短い時間に分割し、それぞれ異なる利用者やプログラムに順番に割り当てることで、並行して効率的にコンピュータを利用できるようにする

### タイムスライシング

- システムの状態変化とは無関係に、周期的にプロセスを切り替える方式
- タイムシェアリングシステムの基本

### ターンアラウンドタイム

- 応答時間
- バッチシステムに使われる

### 利用効率

### 仮想CPU

- 各プロセスにCPUが割り当てられて実行されると、大きな時間単位で見れば、各プロセスがあたかも自分専用のCPUを有して実行しているかのように見える
    - このようにして各プロセスに作られた見せかけのCPUを仮想CPUと呼ぶ（ことにする）

### CPU仮想化

### SIGNAL命令

- 他のプロセスを起動させる命令（待ち行列→実行可能列）

### WAIT命令

- 入出力の完了や何らかのリソースの空き待ちなどの条件が成立するまで待つことを指示する命令（実行中→待ち行列）