Как прерывания обрабатываются двухпроцессорными машинами?
-
11-09-2019 - |
Вопрос
У меня есть представление о том, как прерывания обрабатываются двухъядерным процессором.Мне было интересно, как обработка прерываний реализована на плате с более чем одним физическим процессором.
Определяется ли какая-либо ответственность за прерывание конфигурацией физической платы?Каждый процессор должен иметь возможность обрабатывать некоторые типы прерываний, например дисковый ввод-вывод.Если нет какой-то схемы для управления и отправки прерываний соответствующему процессору?Я предполагаю, что схема должна быть процессорно-нейтральной, чтобы любой процессор и ядро могли запускать обработчик прерываний.
Если ядро ожидает чтения с диска, будет ли это ядро запускать обработчик прерываний, когда диск будет готов?
Решение
В системах x86 каждый процессор получает свой собственный локальный APIC (расширенный программируемый контроллер прерываний), которые также связаны друг с другом и с APIC ввода-вывода, который обрабатывает прерывания устройства маршрутизации на локальные APIC.
ОС может запрограммировать APIC, чтобы определить, какие прерывания направляются на какие процессоры (или позволить APIC принять это решение).
Я предполагаю, что многоядерный процессор будет иметь локальный APIC для каждого ядра, но, честно говоря, я в этом не уверен.
Подробнее см. по этим ссылкам:
Другие советы
Что вас интересует, так это SMP Processor Affinity. Здесь — отличная статья о том, как это реализовано в Linux.А Усовершенствованный программируемый контроллер прерываний (APIC) это то, как вы справляетесь с этим в современной системе.По сути, по умолчанию все будут переходить на процессор 0, если только у вас нет ОС, которая использовала этот интерфейс для правильной настройки.Кроме того, вы не обязательно хотите, чтобы ядро, выдавшее команду, ожидало определенное прерывание.Вы хотите, чтобы его получали менее загруженные ядра.
Я уже задавал этот вопрос некоторое время назад.Возможно, это даст вам некоторую информацию :)
как работают прерывания в многоядерных/многопроцессорных машинах
Я бы сказал, что это будет зависеть от производителя оборудования...
Однако эта ссылка заставляет меня поверить, что большинство из них, вероятно, обрабатываются основным процессором и/или первым ядром.