情報通信制御

第3回 CPUの管理と例外処理
OSによるハードウェアの管理
 CPUの構成、動作
 CPUの管理
 例外処理、割り込み処理
 コンテキストスイッチ
 システムの起動と終了

OSによるハードウェア管理

管理対象
−

ハードウェア環境の把握
−
−

計算資源(メインプロセッサ(CPU)、メモリ、入出
力装置など)
システム起動時(ブート時)のハードウェアの設定
故障デバイスの検出
ハードウェアの制御
−
−
アドレスマッピングによるデバイス制御
割り込み装置
CPUの管理とは?
CPUの状態を管理(実行管理の一部)
 プロセス制御(コンテキストスイッチ:プロセス
の切り替え)の実装で使用される
 例外処理
 割り込み処理

(非パイプライン)CPUの構成例
address data
bus bus
RDR
PC
R1
R2
CCR
ALU
MAR
R3
WDR
IR
命令制御装置
主記憶装置
CPUの構成







ALU…算術演算装置
PC …プログラムカウンタ
MAR … Memory Address Register. アドレスを
指定する
RDR … Read Data Register
WDR … Write Data Register
IR … Instruction Register. 命令(Instruction:
Operation Code)を入れる
CCR … Condition Code Register. 条件コードレ
ジスタ。分岐命令などに使用
CPUの管理

プロセッサには動作レベルがある
−
−
−
−

PSW (Processor Status Word)を通してプロセッサの状態を
把握し、管理・制御する
−
−

特権モード
非特権モード
割り込み可
割り込み禁止
割り込み制御
条件コード
PSWを構成するものの例
−
−
−
CCR
PC
etc.
CPU動作レベルの例
CPUの動作レベル 動作モード
説明
0
特権モード、割り込み禁
止
不測の事態に対応する
レベル
1
特権モード、割り込み禁
止
OSの重要処理レベル
2
特権モード、割り込み可
OSレベル、入出力処理
3
特権モード、割り込み可
OSレベル、通常レベル
4
非特権モード、割り込み
禁止
ユーザ・レベル、特殊な
ケース
5
非特権モード、割り込み
可
一般ユーザ・レベル
6
非動作状態
アイドル状態
例外処理

実行中に異常が発生した場合(ゼロ除算な
ど)に、異常に対処する機構
−

ゼロ除算例外、ページ例外など
通常、CPUは例外を感知すると、OSによって
事前に登録された例外処理ルーチン(例外処
理プログラム)に制御を移す
割込み処理

そもそもは、入出力デバイスの制御のために必要となった
−





cf.) ポーリング(polling)
割込み信号を受け取ると、実行中のプロセス(プログラム)を一
旦中断して、割り込みベクタの示す割り込み処理ルーチンに制
御を移し、その後再び中断したプロセスを再開する動作・仕組
み
割込み信号 … 各デバイスの状態の変化を CPUに通知
する信号
割込みベクタ … 割込みハンドラの開始アドレスが書か
れているアドレス
割込み処理ルーチン(割込みハンドラ) …
割込みがかかった時に行わせる処理が書かれたプログラム
割込みは、特権モードで実行される
割込みの種類

内部割込み … プログラム実行の結果発生 する
割込み
−
プログラム割込み:プログラム実行中のエラー

−

ゼロ除算、オーバフロー、メモリアクセス保護違反
SVC割込み:システムコールによる特権モード移行
外部割込み … プログラム実行とは別に発
る割込み
−
−
−
入出力割込み
タイマー割込み
接続されたデバイスからの障害などによる割込み
生す
割込み処理の大まかな流れ
1.
2.
3.
4.
5.
6.
7.
8.
割込み信号(シグナル)を受け取る
現在実行中のプロセスのPSWを退避する
動作モードを特権モードにする
割込みベクタに示されたアドレスに飛ぶ
割込み処理ルーチンを実行する
動作モードを非特権モードに戻す
退避させたPSWを回復する
中断したプロセスを再開する
システムコールを例とした割込み
ユーザプログラム
関数からの復帰
syscall(x,y)
非特権モード
戻り値の設定など
ライブラリ
パラメータ、システム
コール番号の設定など
• SVC命令の実行
• 割込みの発生
ユーザプログラム
の復帰
システムコールのサブルーチン
特権モード
システムコール
を処理するサブ
ルーチンの選択
割り込みハンドラ
割り込み処理
• 割込みの分析
• パラメータ取得
割り込みレベル・割込みベクタ・
割込みハンドラー

割込みレベル
−
−
−
割込みには、種類を識別するための番号が定義(割込みレベル)
割込みレベルで、処理の緊急度を示す
割込み中の他の割込み処理の対応



割込みベクタ
−
−

割り込み禁止にセット
より高いレベルの割込みを許可(多重レベル割込み)
割込みの種類・レベルごとに用意されている
割込みベクタにセットされた番地へ飛ぶ
割込みハンドラー
−
−
割込み処理の内容が記述されたルーチン(プログラム)
割込みベクタに種類に応じて予め登録される
コンテキストスイッチ


プロセスの切り替えをコンテキストスイッチという
コンテキストスイッチも割込み機構が使用されてい
る
−

タイマー割込み
コンテキストスイッチが起こる場合
−
−
−
−
プロセスが終了した
時分割処理において規定の時間(定時間:quantum
time)が経過
優先して実行すべきプロセスが変わった(横取り)
入出力の完了待ち(待ち状態)になった
コンテキストスイッチの流れ
プロセスA
タイマー割込み
または
SVC割込み
プロセスB
遊休状態
PSW(レジスタ)退避
PSW(レジスタ)復元
遊休状態
PSW(レジスタ)退避
PSW(レジスタ)復元
タイマー割込み
または
SVC割込み
システムの起動(boot)の流れ
電源投入
初期チェック
接続デバイスのチェック、初期化
ブートストラップ
IPL
OS
コマンドインタープリタ
初期プログラムIPL
(Initial Program Loader)
ブートストラップ

IPLをHDDなどからメモリに書き出す
1.
2.
3.
4.
5.
6.
7.
8.
入力装置(HDD)のハードウェアの状況確認
CPUがもっているカウンタをセット(書き込むバイト数)
指定されたデバイスから1バイト読み込む
読み取ったデータデータをMARが指すメモリ番地に書
き込む
メモリアドレスレジスタの値を1増やす
カウンタを1減らす
カウンタの値が0になるまで、3-6を繰り返す
0になったら、PCを書き込み始めたメモリ番地に設定し
てそこからプログラム(IPL)を開始する
システムの終了(shutdown)
新しいプロセスの生成の停止
 実行中のプロセスの停止と停止の確認
 システムの統計情報、システムプログラムの
ファイルのクローズ
 システム自体の停止

−
−
ファイルシステムのマウントの解除
各デバイスの終了処理