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

332
Karim Manaouil

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

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

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

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

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

0
Связанный: https://superuser.com/questions/218179/can-someone-explain-to-me-how-the-cpu-finds-the-source-of-an-interrupt-in-os-the Mokubai 6 лет назад 0
@Mokubai эта ссылка не ответила на мой вопрос. Karim Manaouil 6 лет назад 0
Поэтому я сказал, что это связано, а не дубликат. Это может быть косвенным и предоставить информацию о проблеме. Mokubai 6 лет назад 0

1 ответ на вопрос

0
David Schwartz

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

Похожие вопросы