Transcript 割込み(1)
割 込 み(1)
オペレーティングシステム
No.5
割 込 み と は(1)
割込み発生
プログラムの実行中に
事象(event 割込み要因)が発生
プログラムとは直接関係なく起こる場合(非同
期的という)
プログラムのエラーなどにより起こる場合
割込み処理
現在の実行中のプログラムを中断
その事象を処理する別のプログラムを実行
元のプログラムの実行を再開する仕組み
プログラムが2つある!
割 込 み と は(2)
プログラムと割込み処理プログラムの関係
元のプログラム
再開
割込み処理
プログラム
実行開始
割込みにより
CPUと入出力装置の同時実行
TSS
障害時の適切な処理
現在のコンピュータを特徴づける機構
初期のコンピュータにはなかった
割 込 み の 例?
①
②
③
④
人と雑談中
電話がかかってくる
話を中断して,電話にでる
電話終了後,話を再開
電話による
割込み
割込みの分類
(補足あり)
外部割込み
実行中のプログラムに原因がないもの
入出力装置の動作終了
時間の経過
内部割込み
実行中のプログラムに原因があるもの
演算異常
割込みを発生させる命令の実行
実行されるプログラム
が代わる
コンテクストスイッチ
割込み処理の概要(1)
事象発生
割込み処理プログラム開始
元のプログラムを再開できるために必要な情
報を保存
割込み処理プログラム終了・元のプログラム再
開
割込み処理の概要(2)
割込み要因はいくつかある
① ひとつの割込み処理プログラムで処理
② 要因ごとに割込み処理プログラムを用意
割込み処理の概要(3)
①の場合
窓口がひとつしかない!
割込み処理の概要(4)
②の場合
窓口が分かれている
多重レベル割込み
①
②
③
④
⑤
割込み(要因)により,処理の優先度に差
割込みAの処理中
より優先度の高いBという割込み要因が発生
Aの処理を中断し,Bの処理を先に行う
Bの処理終了後,Aの処理を再開
Aの終了後,Aに割り込まれたプログラムを再
開
割込み処理プログラムに,割り込むことができ
る → 多重レベル割込み
多重レベル割込みの例?
① 雑談中の電話
② 電話中に非常ベル
③ 電話を中断して,非常ベルに対処
“電話割込み”より,
“非常ベル割込み”の方が
優先度が高い
割 込 み 禁 止(1)
優先度の高い割込みBを処理中
優先度の低い割込み要因A発生
Aの処理は,Bの終了まで待たされる
要因が発生しても,
常に割込み処理が行われる
わけではない
割 込 み 禁 止(2)
割込み(要因)ごとに割込みマスク(ビット)
ある割込みマスクがオフ
その割込み要因が発生しても,その処理プロ
グラムの実行を始めない
すなわち,現在処理中のプログラムに割り込
まない
割込み禁止
割 込 み 禁 止(3)
要因が発生しても,割込み処理を行わない
高い優先度の割込み処理中
割込みマスクがオフ
割 込 み 禁 止 の 例(1)?
雑談中に非常ベル
雑談を中断して非常ベルに対処
その最中に電話
電話は無視する
“非常ベル割込み”の方が
“電話割込み”よりも
優先度が高い
割 込 み 禁 止 の 例(2)?
講義の開始時に“電話割込み”のマスクをオフ
講義中に電話
電話割込み処理は行わない(電話にはでない)
講義が終了したら,マスクをオン
もし,まだ電話の呼出しが続いていたら…
割 込 み 禁 止 の 例(3)?
講義中に非常ベル
いかなることがあっても講義を中断
“非常ベル割込み”の割込みマスクをオフにする
ことはできない
割込みには,割込み禁止にできないものがある
補 足(1)
(文献3 p.335)
実行中のプログラ
ムに原因がない
外部割込みの例
I/O(入出力)
入出力装置の処理終了または要求
タイマ
一定時間の経過をCPUに知らせる
マシンチェック
ハードウェアシステムの異常
補 足(2)
実行中のプログラ
ムに原因がある
内部割込みの例(1)
演算例外
浮動小数点演算でのオーバフロー,零除算な
ど
命令コード異常
存在しない命令,形式の不当な命令の実行
割込み処理プログラムでエラー処理を行う
補 足(3)
内部割込みの例(2)
ページフォールト
仮想記憶管理における存在しないページへの
アクセス(詳細は記憶管理のところで)
仮想記憶は後述
トレース
システムデバッグのため命令実行ごとに生じ
る
補 足(4)
内部割込みの例(3)
特権命令違反
システム管理命令を一般ユーザモードで実行
割出し(トラップ)
OSへのシステムコールなど
プログラマが意識的に発生させる
補 足(5)
TSSの実現の概要
① タイマーにある時間を設定
② プログラムAを実行
③ タイマーに設定した時間が経過
割込みが発生(プログラムAを中断)
補 足(6)
④ タイマーにある時間を設定
⑤ プログラムBを実行
⑥ タイマーに設定した時間が経過
割込みが発生(プログラムBを中断)
⑦ タイマーにある時間を設定
⑧ プログラムAを中断したところから再開
以下同様。