Как обрабатываются прерывания на двухпроцессорных компьютерах? - PullRequest
18 голосов
/ 01 марта 2009

У меня есть представление о том, как прерывания обрабатываются двухъядерным процессором. Мне было интересно, как обработка прерываний реализована на плате с более чем одним физическим процессором.

Ответственность за прерывание определяется конфигурацией физической платы? Каждый процессор должен иметь возможность обрабатывать некоторые типы прерываний, например дисковый ввод-вывод. Разве есть какая-то схема для управления и отправки прерываний на соответствующий процессор? Я предполагаю, что схема должна быть нейтральной к процессору, чтобы любой процессор и ядро ​​могли запускать обработчик прерываний.

Если ядро ​​ожидает чтения с диска, будет ли это ядро ​​запускать обработчик прерываний, когда диск будет готов?

Ответы [ 4 ]

7 голосов
/ 01 марта 2009

В системах x86 каждый ЦП получает свой собственный локальный APIC (Advanced Programmable Interrupt Controller), который также подключен друг к другу и к APIC ввода-вывода, который обрабатывает прерывания устройства маршрутизации на локальных APIC.

ОС может запрограммировать APIC, чтобы определить, какие прерывания направляются на какие процессоры (или позволить APIC принять это решение).

Я полагаю, что многоядерный процессор будет иметь локальный APIC для каждого ядра, но я, честно говоря, не уверен в этом.

Смотрите эти ссылки для более подробной информации:

3 голосов
/ 01 марта 2009

Что вас интересует, так это SMP Processor Affinity. Здесь - отличная статья о том, как она обрабатывается в Linux. Усовершенствованный программируемый контроллер прерываний (APIC) - это способ управления этим в современной системе. Как правило, по умолчанию все переходят на процессор 0, если у вас не установлена ​​ОС, использующая этот интерфейс для правильной настройки. Кроме того, вы не обязательно хотите, чтобы ядро, выдавшее команду, ожидало определенного прерывания. Вы хотите, чтобы менее загруженные ядра получали его.

1 голос
/ 01 марта 2009

Я уже задавал этот вопрос некоторое время назад. Может быть, это может дать вам некоторое представление:)

как работают прерывания в многоядерных / многоядерных компьютерах

0 голосов
/ 01 марта 2009

Я бы сказал, что это будет зависеть от производителя оборудования ...

Однако эта ссылка заставляет меня поверить, что большинство, вероятно, обрабатываются основным процессором и / или первым ядром.

Другая ссылка

...