私はハードウェアとオペレーティングシステムのレベルで割り込みを理解しようとしています。
システムにAPICコントローラが必要なのはなぜですか?私はそれが多重化していることを知っており、1本のワイヤだけがCPUに行きます。割り込みに使用する外部ハードウェアのプロセッサラインが十分であれば、これを行うことはできますか?
IRQ_HANDLEDなしでISRを返すとどうなりますか?
割り込みが発生してもISRが処理されない理由はどうすればわかりますか(すでにISRを登録して初期化したことを考慮してください)。
答え1
StackExchangeでは、各質問を別々の質問投稿として投稿する必要があります。さらに、質問2と3は主にカーネルプログラミングの質問であるため、より適切である可能性があります。スタックオーバーフロー代わりに。質問1のみを含めるようにこの質問を編集し、他の質問をスタックオーバーフローに個別に投稿することをお勧めします。
あなたの質問1について:
もちろん、そうすることもできますが、そうすれば、もはやPCと互換性がなくなる新しいハードウェアアーキテクチャを設計します。
APICは、元のPCの既存の8259A Programmable Interrupt Controller(PIC)チップを改良した代替品です。
PICは、制限された割り込み機能を拡張するために8085および8086マイクロプロセッサ用に設計されています。古いISAバスの場合は十分でしたが、最新のバスタイプではシステムのパフォーマンスとスケーラビリティにボトルネックが発生します。特に、PICはマルチプロセッサシステムを構築するのに十分ではない。
したがって、APIC(Advanced Programmable Interrupt Controller)アーキテクチャが代替として設計されています。最初のAPICは個々のチップ82489DXでした。これにより、486および初期のPentium時代初のデュアルCPUシステムの構築が可能になりました。それ以来、「ネイティブAPIC」機能はCPU自体に統合されました。
APICは、必要に応じてハードウェアレベルで古いPICをエミュレートできますが、最新のオペレーティングシステムでは高度なモードで動作できます。