Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 4

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

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

Еще одна ссылка