2011-07-25 9 views
3

保護モードで動作する小さなOSを書いています。私は、カスタムの割り込み記述子テーブルをロードしたいところに来ています。どこから起動するのかわかりません。私はthe OS Dev wikiにいくつかのものを読みましたが、私は答えが必要ないくつかの質問があります。カスタム割り込みデスクリプタテーブルの混乱

OS Dev Wikiには、the first 32 (0-31) interrupts are reserved and used by the CPU, as exceptions, so don't use those for APIs or IRQs.と書かれています。私のカスタム割り込みテーブルを読み込んでいれば、それらの割り込みすべてにエントリを提供する必要はありませんか?

また、BIOSはIRQ0-7を割り込み8-15にマップすることを示しています。この場合、IRQ割り込みは予約された割り込みと競合しませんか?

私には得られないことがありますか?割込みは別のテーブルなどで0-31ですか?誰かが正しい方向に私を指して、物事をクリアしてください。

答えて

2

don't use those [interrupts 0-31] for APIs or IRQsというときは、予約されている例外以外の機能に使用しないでください。例外が発生したときに処理できるように、これらの割り込みのハンドラを定義する必要があります。割り込み番号と説明の例外のリストについては、OSDev's exception pageを参照してください。

プロセッサが起動すると、リアルモードになります。このモードでは、例外が少なくなるため、処理するために予約されている割り込みが少なくなります。プロセッサがリアルモードになっている限り、IRQの割り込み8-15を使用することは安全です。保護モードで割り込みを有効にする前に、IRQを異なる割り込みに再マップする必要があります。これを行う方法については、(プログラマブル割り込みコントローラ)ページのInitialization sectionを参照してください。

0

例外として、最初の32(0-31)割り込みはCPUによって予約されて使用されます。したがって、APIまたはIRQには使用しないでください。

これは、WHOが割り込みを発行できることです。 0~31は、CPU自体(内部、例えばページフォルト、ゼロで割るなど)のイベント用であり、その他は外部事象(ハードウェアによって開始される、例えばキーボードプレス、PCI割り込みなど)に関するものである。 これはIDTに関するものではありません。すべての割り込みをテーブルに提供する必要があります。