Linux システムでは、Interrupt Vector Table (IVT) と Interrupt Descriptor Table (IDT) の違いは何ですか?
3 に答える
リアルモードでの割り込み処理 リアル モードでは、メモリの下位 1K に割り込みベクタ テーブル (IVT) と呼ばれるデータ構造が保持されます。このテーブルには名目上 256 のエントリがあります。(80286 以降、IVT は 256 エントリを持つ必要も、物理アドレス 0 から開始する必要もありません。IVT のベースとアドレスと長さは、I**割り込み記述子テーブル レジスタ**を参照して決定されます。)割り込みサービス ルーチンへの far ポインタ。どのタイプの割り込みも、このテーブルを介して適切な割り込みサービス ルーチンにルーティングされます。プロセッサは、このテーブルの割り込み番号にインデックスを付けます。現在の CS、IP、およびフラグをスタックにプッシュします。IVT で指定された far ポインターを呼び出します。ハンドラは割り込みを処理し、IRET 命令を実行して、割り込み時にプロセッサが実行していた場所に制御を戻します。
プロテクト モードでの割り込み処理 プロテクト モードでは、リアル モードと同様に割り込みが処理されます。割り込み記述子テーブル (IDT) は、IVT がリアル モードで行うことを行います。IDT は、ゲートと呼ばれる 8 バイトのセグメント記述子の配列で構成されます。割り込み記述子テーブル レジスタ (IDTR) は、ベース アドレスと IDT の制限を保持します。IDT は物理メモリに存在する必要があり、仮想メモリにスワップアウトしないでください。これは、IDT がスワップアウトされている間に割り込みが発生した場合、プロセッサが例外を生成し、IDT がこの例外を処理するためのハンドラを取得する必要があるためです。IDT のゲートには、割り込みゲート、トラップ ゲート、タスク ゲートの 3 種類があります。トラップとタスク ゲートの詳細については説明しません。詳細については、Intel プロセッサのドキュメントを参照してください。
http://www.reverse-engineering.info/SystemHooking/hooksoft.htm