Как процессор прерывается APIC и как обрабатывать общие прерывания?
Из очень мало знаний, которые я имею, каждый PCI
Устройство имеет 4 контакта прерывания. Булавки из множества разных PCI
устройства на материнской плате (встроенные или внешние устройства) направляются на IO-APIC
(Расширенный программируемый контроллер прерываний) через программируемый маршрутизатор прерываний. Так что это была топология.
Насколько я знаю, когда происходит прерывание, IO-APIC
будет сигнализироваться, и это повысит INT для CPU, затем произойдет волшебство, и CPU начнет выполнять ISR (подпрограмма обработки прерываний).
Что это за магия?
Какая связь должна происходить между процессором и IO-APIC
обрабатывать INT?
Я имею в виду, как процессор получил вектор прерывания (это особый PCI
автобусный цикл?) и что будет, если IRQ
было поделено многими устройствами (Take x86 Linux
в качестве ссылки на платформу)?
1 ответ
Вектор прерывания уже хранится в таблице векторов прерываний, поэтому ЦПУ не нужно получать его от периферийного устройства. Если прерывание связано с IO-APIC или аналогичным устройством, которое может вызывать прерывания по разным причинам, обработчик прерываний запросит это устройство, чтобы выяснить, почему оно вызвало прерывание. Для этого не существует специального цикла шины, точно так же, как процессор будет получать информацию от одного из своих периферийных устройств.