割 込 み(1) オペレーティングシステム 11/1/07 割 込 み と は(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) TSSの実現の概要 ① タイマーにある時間を設定 ② プログラムAを実行 ③ タイマーに設定した時間が経過 割込みが発生(プログラムAは中断) 補 足(2) ④ タイマーにある時間を設定 ⑤ プログラムBを実行 ⑥ タイマーに設定した時間が経過 割込みが発生(プログラムBは中断) ⑦ タイマーにある時間を設定 ⑧ プログラムAを中断したところから再開 以下同様。 補 足(3) (文献3 p.335) 実行中のプログラ ムに原因がない 外部割込みの例 I/O(入出力) 入出力装置の処理終了または要求 タイマ 一定時間の経過をCPUに知らせる マシンチェック ハードウェアシステムの異常 補 足(4) 実行中のプログラ ムに原因がある 内部割込みの例(1) 演算例外 浮動小数点演算でのオーバフロー,零除算な ど 命令コード異常 存在しない命令,形式の不当な命令の実行 割込み処理プログラムでエラー処理を行う 補 足(6) 内部割込みの例(2) ページフォールト 仮想記憶管理における存在しないページへの アクセス(詳細は記憶管理のところで) 仮想記憶は後述 トレース システムデバッグのため命令実行ごとに生じ る 補 足(5) 内部割込みの例(3) 特権命令違反 システム管理命令を一般ユーザモードで実行 割出し(トラップ) OSへのシステムコールなど プログラマが意識的に発生させる
© Copyright 2024 ExpyDoc