オペレーティングシステム (割り込み処理) 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. 割り込み 事象の発生を知らせてもらって、通常処理に割り込む 割り込みシーケンスのオーバヘッドだけが余分に必要
© Copyright 2024 ExpyDoc