Как процессор прерывается APIC и как обрабатывать общие прерывания?

Из очень мало знаний, которые я имею, каждый PCI Устройство имеет 4 контакта прерывания. Булавки из множества разных PCI устройства на материнской плате (встроенные или внешние устройства) направляются на IO-APIC (Расширенный программируемый контроллер прерываний) через программируемый маршрутизатор прерываний. Так что это была топология.

Насколько я знаю, когда происходит прерывание, IO-APIC будет сигнализироваться, и это повысит INT для CPU, затем произойдет волшебство, и CPU начнет выполнять ISR (подпрограмма обработки прерываний).

Что это за магия?

Какая связь должна происходить между процессором и IO-APIC обрабатывать INT?

Я имею в виду, как процессор получил вектор прерывания (это особый PCI автобусный цикл?) и что будет, если IRQ было поделено многими устройствами (Take x86 Linux в качестве ссылки на платформу)?

1 ответ

Вектор прерывания уже хранится в таблице векторов прерываний, поэтому ЦПУ не нужно получать его от периферийного устройства. Если прерывание связано с IO-APIC или аналогичным устройством, которое может вызывать прерывания по разным причинам, обработчик прерываний запросит это устройство, чтобы выяснить, почему оно вызвало прерывание. Для этого не существует специального цикла шины, точно так же, как процессор будет получать информацию от одного из своих периферийных устройств.

Другие вопросы по тегам