2013-05-14 2 views

答えて

9

BIOSはPIT割り込み(IRQ0)を使用して時間を追跡します。プロテクトモードに入ると、リアルモードの割り込み処理は無効になります。保護モードのCPUには保護モードIDT(割り込み記述子テーブル)が必要です。プロテクトモードに入ると、IDTR(IDTレジスタ)のIDT制限が0に設定され(割り込み番号によってCPUが例外を生成します)、PIT(または何か他のもの)が割り込みを生成すると、CPUは例外を生成します。 #DF(ダブルフォルト)をトリガーし、結果として#TF(トリプルフォルト)をトリガーする別の例外が生成されます。

また、プロテクトモードで発生しているIRQ0は、プロテクトモードの例外用に予約されているため、#DE(除算除算)ISR(割り込みサービスルーチン)をトリガします。

このような事態は、PIT割り込みより先に発生する可能性があります。本質的に任意の割込みで、それぞれ#DFと3重障害になります)。

  1. PEビットがCR0に設定されています。
  2. PIT割り込みが発生し、PIC(プログラマブル割り込みコントローラ)がピン#0上の信号を取得します。
  3. PIC再マッピングが設定されていないため、CPU上でIRQ0がトリガされます。
  4. IRQ0(= #DE)は割り込みハンドラを実行しようとしますが、IDTの制限は0なので、(IIRC)#GP(General Protection fault)が生成されます。
  5. IDTの制限は0なので、#DFが生成されます。
  6. IDTの制限は0なので、#TFが生成されます。
  7. CPUが停止または再起動します。
+0

素晴らしい回答ありがとう! –

+0

IRQ0は#DEをトリガしません。デフォルトでPICのIRQ0はBIOSによってINT8にマッピングされるため、#DFがトリガされます。 – Ruslan

+0

@Ruslanこれは完全に任意の音です。どんなBIOSであれ、それを再マッピングすることができます。 #DFまたは#TF以外のベクトルは#DFをトリガし、#DFは#TFをトリガし、#TFはまあ... 7に直接ジャンプします。Btw。その特定のベクトルに何のBIOSを再マッピングするのですか?それについての言及はありますか、それは実験によって見つけられた単なる価値ですか? – Griwes

関連する問題