Как прерывания обрабатываются двухпроцессорными машинами?

StackOverflow https://stackoverflow.com/questions/599238

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Подробнее см. по этим ссылкам:

Другие советы

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

Я уже задавал этот вопрос некоторое время назад.Возможно, это даст вам некоторую информацию :)

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top