4

わかりました、学校ではオペレーティングシステムを開発しています。私のプロジェクトは、ATA ハードディスク ドライバを開発することでした。割り込み終了コマンドをスレーブ PIC に送信しているだけで、マスターにも送信していないことを教授が指摘したとき、割り込みサービス ルーチンは非常にうまく機能していると思いました。

私の問題は、割り込みの終了をマスター PIC に送信するたびに、トリプル フォールトが発生し、システムが再起動することです。これで、一連の行のコメントを外したり、コメントを外したりしましたが、割り込みの終了をマスター PIC に送信する関数がコードに残っていると、トリプル フォールトが発生するようです。

今、私は次のことを確信しています:

  1. ISR に入ると割り込みが無効になります
  2. 割り込み終了バイトを適切に送信しています (クラス テスト済み)
  3. 同じ割り込みを再確認していない

これは大きなフラストレーションを引き起こしているので、私たちのコードを見る必要なく誰かが私に何らかのガイダンスを与えてくれることを願っています.

ありがとう!

4

1 に答える 1

0

私はこれを推測することしかできません。確認すべき点がいくつかあります。

  • EOIはセグメント制限の範囲外ですか?
  • EOIは読み取り専用ページにありますか?
  • 割り込みハンドラーは、EOIにアクセスするための正しい特権レベルにありますか?
  • 正しいセグメントレジスタを使用していますか?

それらのいずれかが障害を引き起こす可能性があります。これにより、記述子テーブルが破損しているか、最初から不適切に設定されている場合に、二重または三重の障害が発生する可能性があります。

于 2009-05-20T15:28:57.433 に答える