x86 CPUでの割り込み、特にページフォールトの制御フローを解決しようとしています。これまでに私が理解できることは次のとおりです。
- IDTにはサービスルーチンアドレスが入力されます。
- 割り込みが発生します。
- CPUは、EFLAGS、CS、およびEIPをスタックに保存します。
- EIPは、IDTからフェッチされたISRアドレスに設定されます。
mov eip, [idtr+interruptNum*4]
- 割り込みルーチンが実行されます。
- 割り込みルーチンは
iret
命令で完了します。
ここで、割り込みが実際にはNICバッファに関連するページフォールトであるとしましょう。ISRはout
、DMAコントローラーにシステムメモリからデバイスに(またはその逆に)コピーを発行するように指示するために使用しますか、それともここでベースから離れていますか?