オペレーティングシステム

オペレーティングシステム
(割り込み処理)
2009年10月22日
酒居敬一([email protected])
http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS/2009/
プロセスとスレッド(38ページ)
• どちらも実行のひとつの単位である
– そういう意味では「タスク」とひとくくりに扱う。
• スレッドはプロセスに属する点が異なる
• 同じプロセスに属す限り、資源は共有しあう
• 軽量プロセス=スレッドという定義もある。
• CPUが複数個存在する場合に、同じプロセス
の複数のスレッドが実行できる。
– 高速処理や効率的な処理には良いが…
– 資源の競合が起きるかもしれない…
[大久保英嗣, オペレーティングシステムの基礎]
割り込み処理
• 割り込み処理の概念
文字どおり、実行の流れに「割り込み」ます…
• 割り込みハンドラ
「割り込む」ほうの処理について…
• 有効性
ポーリングと割込み
• 通常処理中に、随時、別処理の必要性を監視
• 例: 掲示板
それに対して
何かあったら連絡してくれたらいいのに…
というしくみを計算機に組み込んだものが
「割込み処理」である
割込み処理の概念
• 通常処理を中断させて、別の処理を行い、
通常処理を再開すること。
• 例:
1. 食事をしていたところ、電話が鳴った。
2. 箸を置いて、電話に応対した。
3. 再び箸を手に取り、食事を続ける
• 割り込まれた側に影響を与えてはいけない
– 実行だけは遅れるが…
割込み処理(プロセッサレベル)
1. プロセッサが割込み要求を受け付ける
 要求はマシンサイクルごとに監視
2. 現在実行中の命令の実行完了を待つ
 割込み発生の以前と以後を厳密に分離
3. 割込みシーケンスを実行
 復帰のための最低限の状態を保存
 必要に応じて保護レベルの遷移(カーネルモードへ)
4. 該当する割込み処理を実行
 割込み処理の終了は特別な命令による
5. 復帰シーケンスを実行し復帰
割込み処理(ソフトウェアレベル)
1.
2.
3.
4.
5.
6.
プロセッサから制御を渡される
割込み処理が使用するレジスタの退避を行う
必要に応じて割り込みの許可
割込み処理
使用したレジスタを復帰
割り込みの完了を知らせて、制御を返す
割り込まれたプログラムは何もしない
割り込まれたプログラムには何も影響しない
割込み処理には割り込まれたプログラムの話は出てこない
割込みハンドラ
• レジスタなどの退避処理
• 必要に応じて割り込みの許可
1. 割込み要因の解析・処理順序決定
2. 該当の割込み処理ルーチンへの分岐
3. 該当の割込み要因をクリアし1の解析へ
• レジスタなどの復帰処理
• プロセッサへ制御を返す処理
多重割込み
• 割り込まれるプログラムも割り込むプログラムも、しょ
せんはプログラムである
• 原理的には、割り込んだプログラムに割り込むことは
考えられる(多重割込み)
退避領域
• 割り込みはLIFO順で処理され
る
• スタックを使うのが自然である
• スタックを使うと問題もある
– スタックオーバーフローが起こるか
もしれない
– スタックを使うプロセスと使われる
プロセスで保護レベルが異なるこ
とがある
割り込み処理の優先順位
• NMI(Non-Maskable Interrupt)
– 常に割込み要求は受け付けられる(最高優先順位)
• (命令実行による)ソフトウェア割込み
– 命令実行により、ただちに受け付けられる
• それ以外の割込み
– 割込み許可状態(許可/不許可)に依存する
– 割込みのレベル(高い/低い)と現在実行中のプログラ
ムのレベルを比較し判断
• (通常処理)
– 最低優先順位
– 許可状態であればすべての割り込みを受付ける
割込みマスク
• 全割り込みを許可・不許可
– NMIを除くすべての割り込みを一括して許可・不許可
– 特権命令となっていることが多い
• ユーザープロセスからは操作できない
• 割込みレベルに応じてマスク
– レベルを設定し、それより高優先度のものだけ処理
– 特権命令となっていることが多い
• ユーザープロセスからは操作できない
優先順位の使い分け
• 高い優先順位の割込み
– 処理は短時間で済むが、頻度が高い場合
– 割り込みは禁止してできるだけ速く処理
• 低い優先順位の割込み
– 処理に時間がかかる場合
– より高い優先順位の割り込みを許可して処理
割込みの発生
• 要因の状態(レベル)によるもの
– 例:シリアルポートからの受信
• FIFOにデータがある→割り込み要求
• FIFOにデータがない→割り込み要求の取り下げ
• 要因の状態遷移(エッジ)によるもの
– 例:HDDの処理完了
• ヘッドのシーク操作が完了
• データのDMA転送が完了
プロセスと割り込み1
実際の割り込みはすべてカーネルが受ける
計算機資源の管理はカーネルがします
プロセスは仮想的な計算機である
当然、割り込みも仮想的に実装されてる
• シグナル
• シグナルハンドラー
• シグナルマスク
プロセスと割り込み2
• システムコールの実装
– ユーザー空間からカーネル空間へ遷移が必要
• 保護レベルが違う
• もちろん、互いの空間はそれぞれ保護されるべき
– システムコールのエントリーポイントがわからない
• プロセスの仮想空間からカーネルの該当エントリを探
す手段がない。あるいは許可されていない。
• (命令による)ソフトウェア割り込みを使用
– 保護レベルの遷移ができる
– 割り込み番号さえわかれば呼べる
– プロセスへなんら影響を及ぼさない
割り込みの有効性
• 事象が発生するのを待つ場合、
1. ポーリング
 プログラムが発生を常に監視する
 監視する間隔は事象の最小の発生間隔以下
 そうしないと事象の発生をとりこぼしてしまう
 本来の処理時間以上にCPU時間を必要とする
2. 割り込み
 事象の発生を知らせてもらって、通常処理に割り込む
 割り込みシーケンスのオーバヘッドだけが余分に必要