第 3 回  CPU の管理と例外処理

Preview:

DESCRIPTION

第 3 回  CPU の管理と例外処理. OS によるハードウェアの管理 CPU の構成、動作 CPU の管理 例外処理、割り込み処理 コンテキストスイッチ システムの起動と終了. OS によるハードウェア管理. 管理対象 計算資源(メインプロセッサ( CPU )、メモリ、入出力装置など) ハードウェア環境の把握 システム起動時(ブート時)のハードウェアの設定 故障デバイスの検出 ハードウェアの制御 アドレスマッピングによるデバイス制御 割り込み装置. CPU の管理とは?. CPU の状態を管理(実行管理の一部) - PowerPoint PPT Presentation

Citation preview

第 3 回  CPU の管理と例外処理

OSOS によるハードウェアの管理によるハードウェアの管理CPUCPU の構成、動作の構成、動作CPUCPU の管理の管理 例外処理、割り込み処理例外処理、割り込み処理 コンテキストスイッチコンテキストスイッチ システムの起動と終了システムの起動と終了

OS によるハードウェア管理 管理対象管理対象

− 計算資源(メインプロセッサ(計算資源(メインプロセッサ( CPUCPU )、メモ)、メモリ、入出力装置など)リ、入出力装置など)

ハードウェア環境の把握ハードウェア環境の把握− システム起動時(ブート時)のハードウェアのシステム起動時(ブート時)のハードウェアの

設定設定− 故障デバイスの検出故障デバイスの検出

ハードウェアの制御ハードウェアの制御− アドレスマッピングによるデバイス制御アドレスマッピングによるデバイス制御− 割り込み装置割り込み装置

CPU の管理とは?CPUCPU の状態を管理(実行管理の一部)の状態を管理(実行管理の一部) プロセス制御(コンテキストスイッチ:プロセス制御(コンテキストスイッチ:

プロセスの切り替え)の実装で使用されプロセスの切り替え)の実装で使用されるる

例外処理例外処理 割り込み処理割り込み処理

主記憶装置

(非パイプライン) CPU の構成例

R1R2

R3MAR

RDR

WDR

PC

CCR

命令制御装置

addressbus

data bus

ALU

IR

CPU の構成 ALU…ALU… 算術演算装置算術演算装置 PCPC  …プログラムカウンタ …プログラムカウンタ MARMAR  …  …  Memory Address Register. Memory Address Register. アドレアドレ

スをスを 指定する指定する RDRRDR  …  …  Read Data RegisterRead Data Register WDR … Write Data RegisterWDR … Write Data Register IR … Instruction Register. IR … Instruction Register. 命令命令 (Instruction: (Instruction:

Operation Code)Operation Code) を入れるを入れる CCR … Condition Code Register. CCR … Condition Code Register. 条件コード条件コード

レレ ジスタ。分岐命令などに使用ジスタ。分岐命令などに使用

CPU の管理 プロセッサには動作レベルがあるプロセッサには動作レベルがある

− 特権モード特権モード− 非特権モード非特権モード− 割り込み可割り込み可− 割り込み禁止割り込み禁止

PSW (Processor Status Word)PSW (Processor Status Word) を通してプロセッサの状を通してプロセッサの状態を把握し、管理・制御する態を把握し、管理・制御する− 割り込み制御割り込み制御− 条件コード条件コード

PSWPSW を構成するものの例を構成するものの例− CCRCCR− PCPC   − etc.etc.

CPU 動作レベルの例CPUCPU の動作レベの動作レベルル 動作モード動作モード 説明説明

00特権モード、割り込み特権モード、割り込み禁止禁止

不測の事態に対応する不測の事態に対応するレベルレベル

11特権モード、割り込み特権モード、割り込み禁止禁止 OSOS の重要処理レベルの重要処理レベル

22特権モード、割り込み特権モード、割り込み可可

OSOS レベル、入出力処レベル、入出力処理理

33特権モード、割り込み特権モード、割り込み可可

OSOS レベル、通常レベレベル、通常レベルル

44非特権モード、割り込非特権モード、割り込み禁止み禁止

ユーザ・レベル、特殊ユーザ・レベル、特殊なケースなケース

55非特権モード、割り込非特権モード、割り込み可み可 一般ユーザ・レベル一般ユーザ・レベル

66 非動作状態非動作状態 アイドル状態アイドル状態

例外処理 実行中に異常が発生した場合(ゼロ除算実行中に異常が発生した場合(ゼロ除算

など)に、異常に対処する機構など)に、異常に対処する機構− ゼロ除算例外、ページ例外などゼロ除算例外、ページ例外など

通常、通常、 CPUCPU は例外を感知すると、は例外を感知すると、 OSOS にによって事前に登録された例外処理ルーチよって事前に登録された例外処理ルーチン(例外処理プログラム)に制御を移すン(例外処理プログラム)に制御を移す

割込み処理 そもそもは、入出力デバイスの制御のために必要となったそもそもは、入出力デバイスの制御のために必要となった

− cf.) cf.) ポーリング(ポーリング( polling)polling) 割込み信号を受け取ると、実行中のプロセス(プログラム)割込み信号を受け取ると、実行中のプロセス(プログラム)を一旦中断して、割り込みベクタの示す割り込み処理ルーチを一旦中断して、割り込みベクタの示す割り込み処理ルーチンに制御を移し、その後再び中断したプロセスを再開する動ンに制御を移し、その後再び中断したプロセスを再開する動作・仕組み作・仕組み

割込み信号 … 各デバイスの状態の変化を割込み信号 … 各デバイスの状態の変化を CPUCPUに通知に通知する信号する信号

割込みベクタ … 割込みハンドラの開始アドレスが書か割込みベクタ … 割込みハンドラの開始アドレスが書かれているアドレスれているアドレス

割込み処理ルーチン(割込みハンドラ) … 割込み処理ルーチン(割込みハンドラ) … 割込みがかかった時に行わせる処理が書かれたプログラム割込みがかかった時に行わせる処理が書かれたプログラム

割込みは、特権モードで実行される割込みは、特権モードで実行される

割込みの種類 内部割込み … プログラム実行の結果発生内部割込み … プログラム実行の結果発生 すす

る割込みる割込み− プログラム割込み:プログラム実行中のエラープログラム割込み:プログラム実行中のエラー

ゼロ除算、オーバフロー、メモリアクセス保護違反ゼロ除算、オーバフロー、メモリアクセス保護違反− SVCSVC 割込み:システムコールによる特権モード移行割込み:システムコールによる特権モード移行

外部割込み … プログラム実行とは別に発外部割込み … プログラム実行とは別に発 生生する割込み する割込み − 入出力割込み入出力割込み− タイマー割込みタイマー割込み− 接続されたデバイスからの障害などによる割込み接続されたデバイスからの障害などによる割込み

割込み処理の大まかな流れ1.1. 割込み信号(シグナル)を受け取る割込み信号(シグナル)を受け取る2.2. 現在実行中のプロセスの現在実行中のプロセスの PSWPSW を退避するを退避する3.3. 動作モードを特権モードにする動作モードを特権モードにする4.4. 割込みベクタに示されたアドレスに飛ぶ割込みベクタに示されたアドレスに飛ぶ5.5. 割込み処理ルーチンを実行する割込み処理ルーチンを実行する6.6. 動作モードを非特権モードに戻す動作モードを非特権モードに戻す7.7. 退避させた退避させた PSWPSW を回復するを回復する8.8. 中断したプロセスを再開する中断したプロセスを再開する

システムコールを例とした割込み

ユーザプログラム

割り込みハンドラ

非特権モード

特権モードシステムコールのサブルーチン

ライブラリ

syscall(x,y)

•  SVC 命令の実行• 割込みの発生

割り込み処理• 割込みの分析• パラメータ取得

システムコールを処理するサブルーチンの選択

ユーザプログラムの復帰

戻り値の設定など

関数からの復帰

パラメータ、システムコール番号の設定など

割り込みレベル・割込みベクタ・割込みハンドラー

割込みレベル割込みレベル− 割込みには、種類を識別するための番号が定義(割込みレベ割込みには、種類を識別するための番号が定義(割込みレベ

ル)ル)− 割込みレベルで、処理の緊急度を示す割込みレベルで、処理の緊急度を示す− 割込み中の他の割込み処理の対応割込み中の他の割込み処理の対応

割り込み禁止にセット割り込み禁止にセット より高いレベルの割込みを許可(多重レベル割込み)より高いレベルの割込みを許可(多重レベル割込み)

割込みベクタ割込みベクタ− 割込みの種類・レベルごとに用意されている割込みの種類・レベルごとに用意されている− 割込みベクタにセットされた番地へ飛ぶ割込みベクタにセットされた番地へ飛ぶ

割込みハンドラー割込みハンドラー− 割込み処理の内容が記述されたルーチン(プログラム)割込み処理の内容が記述されたルーチン(プログラム)− 割込みベクタに種類に応じて予め登録される割込みベクタに種類に応じて予め登録される

コンテキストスイッチ プロセスの切り替えをコンテキストスイッチというプロセスの切り替えをコンテキストスイッチという コンテキストスイッチも割込み機構が使用されていコンテキストスイッチも割込み機構が使用されてい

るる− タイマー割込みタイマー割込み

コンテキストスイッチが起こる場合コンテキストスイッチが起こる場合− プロセスが終了したプロセスが終了した− 時分割処理において規定の時間(定時間:時分割処理において規定の時間(定時間: quantum time)quantum time)

が経過が経過− 優先して実行すべきプロセスが変わった(横取り)優先して実行すべきプロセスが変わった(横取り)− 入出力の完了待ち(待ち状態)になった入出力の完了待ち(待ち状態)になった

コンテキストスイッチの流れ

タイマー割込みまたは

SVC 割込みPSW (レジスタ)退避

PSW (レジスタ)復元

PSW (レジスタ)退避

PSW (レジスタ)復元

タイマー割込みまたは

SVC 割込み

プロセス A プロセス B

遊休状態

遊休状態

システムの起動( boot) の流れ電源投入

初期チェック

ブートストラップ

IPL

OS

コマンドインタープリタ

初期プログラム IPL( Initial Program Loader)

接続デバイスのチェック、初期化

ブートストラップ IPLIPL をを HDDHDD などからメモリに書き出すなどからメモリに書き出す

1.1. 入力装置(入力装置( HDDHDD )のハードウェアの状況確認)のハードウェアの状況確認2.2. CPUCPU がもっているカウンタをセット(書き込むバがもっているカウンタをセット(書き込むバ

イト数)イト数)3.3. 指定されたデバイスから指定されたデバイスから 11 バイト読み込むバイト読み込む4.4. 読み取ったデータデータを読み取ったデータデータを MARMAR が指すメモリ番地が指すメモリ番地

に書き込むに書き込む5.5. メモリアドレスレジスタの値を1増やすメモリアドレスレジスタの値を1増やす6.6. カウンタを1減らすカウンタを1減らす7.7. カウンタの値が0になるまで、3-6を繰り返すカウンタの値が0になるまで、3-6を繰り返す8.8. 0になったら、0になったら、 PCPC を書き込み始めたメモリ番地にを書き込み始めたメモリ番地に

設定してそこからプログラム(設定してそこからプログラム( IPLIPL )を開始する)を開始する

システムの終了( shutdown )新しいプロセスの生成の停止新しいプロセスの生成の停止 実行中のプロセスの停止と停止の確認実行中のプロセスの停止と停止の確認 システムの統計情報、システムプログラシステムの統計情報、システムプログラ

ムのファイルのクローズムのファイルのクローズ システム自体の停止システム自体の停止

− ファイルシステムのマウントの解除ファイルシステムのマウントの解除− 各デバイスの終了処理各デバイスの終了処理

Recommended