Outlookに他人の予定表を表示させる方法を追加
ある命令を実行した後はその次にある命令を実行するのがふつう。あるいは制御命令のときは指示された先にある命令にとぶ。しかし予期せぬときにどこか特別な場所に制御を移したいことがあるだろう。それが割り込み。緊急事態発生。
実行している処理を一時中断して、別の処理を行うこと。インタラプトともいう。タイマーや外部装置などからCPUに対して割り込み要求信号が送られると、CPUは現在実行しているプログラムを一時退避させてから、割り込み要求信号を送って装置に対応する処理プログラムを実行する。割り込み処理が終了すると、CPUは退避させたプログラムの実行を中断した時点から再開する。
実行している処理を一時中断して、別の処理を行うこと。インタ ラプトともいう。タイマーや外部装置などからCPUに対して割り込 み要求信号が送られると、CPUは現在実行しているプログラムを 一時退避させてから、割り込み要求信号を送って装置に対応す る処理プログラムを実行する。割り込み処理が終了すると、CPU は退避させたプログラムの実行を中断した時点から再開する。
CPUの外からやってくる割り込み。プログラムの実行と関係なくやってくる。I/O装置(入出力装置)の処理終了通知やタイマやコンソールからの通知があるね。
プログラムの実行に伴って起こる割り込み。ユーザが意図しないで起こる内部割り込みを例外という。この定義であってる?
電源エラーなどハードウェアのトラブルによってプログラムの実行を続けられなくなったとき。
CPUが割り込みをうけつけないときもある。このときの割り込みはマスクされているという。
割り込みを受け付けるかどうかユーザが制御できる。無視して処理を継続しても意味のある結果が得られるときだけ使える。
割り込みを受け付けるかどうかユーザは制御できない。割り込みが発生するとつねに受け付けてしまう。
割り込みに複数の優先順位をつけて、優先順位ごとの割り込み要求をうけつける方式。
受け付けと許可 → 状態の退避 → サービスルーチンへの分岐 → サービスルーチンでの処理 → 復帰
サービスルーチンをハンドラともいう。
割り込みには本当に緊急なものと、留保してもいいのがある。緊急なものはすぐに受け付けてすぐさま許可を出す。
割り込み要因ごとにマスクビットを割り当て、そのビットがオンのとき割り込み禁止、オフのとき割り込み可能とする。
割り込み要因ごとにレベルを割り当てておき、そのとき許可されているレベルより高いレベルの割り込みだけ割り込み可能とする。
同時に複数の割り込みが許可されることもあるので、各割り込み間に優先順位をつけておく。
割り込みの処理を終えると元の処理を再開せなあかん。そのため割り込みが発生したときの状態をどこかへ退避させておく。退避させないといけないものは、PCの値、ステータス、レジスタの値かな。
割り込みの要因を調べ対応するハンドラ(サービスルーチン)へ分岐する。代表的な方法がベクタ割り込み。
要因ごとにハンドラの開始アドレスを並べたもの。
要因ごとに分岐命令を並べたもの。オペランドがハンドラの開始アドレスになっている。
要因ごとに必要な処理をする。中身は普通のプログラムで書かれている。
ハンドラの処理が終わると元のプログラムを再実行する。退避していた情報を戻せばそのままいくはず。
元のプログラムに戻る前にディスパッチャというプログラムへ移り、そっから優先順位の高いプログラムへ戻る。
必ず元のプログラムへ戻る。
状態の退避とハンドラへの分岐までの間に他の割り込みを受け付けてしまうとわけがわからんようになるので、不可分操作として禁止する。
プログラムの実行に伴って起こる割り込み。ユーザが意図しないで起こる内部割り込みを例外という。この定義であってる?
トラップ
例外
ユーザが意図的に起こす割り込み。OSやデバッガが起こす。
OSサービス要求
トレース
ブレイクポイント
プログラム実行中に意図せず起こる割り込み。
演算オーバーフロー
ページフォルト
アドレスエラー
メモリ保護違反
未定義命令実行
どの周辺コントローラから割り込みが発生したかをCPUに知らせるコントローラ。複数割り込みの調停や制御も行う。