Я читаю ULK3 и получил следующее утверждение
«Запросы на прерывание, поступающие от внешних аппаратных устройств, могут распределяться между доступными ЦП двумя способами:
Статическое распределение Сигнал IRQ доставляется на локальные APIC, перечисленные в соответствующей записи таблицы перенаправления. Прерывание доставляется на один конкретный ЦП, на подмножество ЦП или на все ЦП одновременно (режим широковещательной передачи)».
Я знаю, что Linux не использует статический дистрибутив, но мой вопрос:
Если ОС инициирует одну запись в таблице перенаправления прерываний, используя статическое распределение, и это IRQ поднято, а затем система с несколькими APIC выбирает два ЦП (здесь это просто пример того, что в записи указаны два ЦП) и доставляет сигнал к соответствующему локальному APIC, и оба этих локальных APIC принимают прерывание.
- Только один процессор будет обрабатывать прерывание? или оба? Если один, то как выбрать?
- Существует ли ОС, использующая статическое распределение?
Если да, покажите пример
Если нет, то почему он существует? Это из-за какой-то исторической проблемы? Какова первоначальная причина этого дизайна?