Вопрос по linux-kernel, c, interrupt, linux – Что такое локальные прерывания по таймеру в Linux?
================================================================================================

Все в названии. Любые ссылки на хорошие документы приветствуются.

 реализованный на APIC, который прерывает только определенный процессор, а не вызывает прерывание, которое может обрабатываться любым процессором. Это обсуждается в Bovet & Cesati "Понимание ядра Linux". Фрагмент:

 Локальный APIC, присутствующий в последних микропроцессорах 80x86 (см. Раздел «Прерывания и исключения» в главе 4), обеспечивает еще одно устройство измерения времени: локальный таймер ЦП.

 Локальный таймер ЦП - это устройство, похожее на только что описанный программируемый таймер интервалов, которое может генерировать однократные или периодические прерывания. Однако есть несколько отличий:

 Счетчик таймера APIC имеет длину 32 бита, а счетчик таймера PIT - 16 бит; следовательно, локальный таймер может быть запрограммирован на выдачу прерываний на очень низких частотах (счетчик хранит количество тактов, которое должно пройти до того, как будет выдано прерывание). Локальный таймер APIC отправляет прерывание только своему процессору, в то время как PIT создает глобальное прерывание, которое может обрабатываться любым процессором в системе. Таймер APIC основан на тактовом сигнале шины (или сигнале шины APIC на старых машинах). Он может быть запрограммирован таким образом, чтобы уменьшать счетчик таймера каждые 1, 2, 4, 8, 16, 32, 64 или 128 шинных тактовых сигналов. И наоборот, PIT, который использует собственные тактовые сигналы, может быть запрограммирован более гибким способом.


 

 Некоторые вещи нужно делать каждый миг, неважно, на каком процессоре.  
 Другие вещи нужно делать каждый миг на каждом процессоре. Например, проверка, нужно ли нам переключаться на другой процесс.  

 Прерывание локального таймера существует для второго типа - всякий раз, когда оно выполняется, мы проверяем их и делаем то, что нужно.



 ания потоков.

 На системном таймере UP используется для планирования / перепланирования потоков.

 Обычно PIT больше не используется в системах SMP.



 что локальные таймеры используются для обработки функций, связанных с IPI. Я могу ошибаться в этом предположении, мне не нужно смотреть на код того, для чего они настроены и что содержит обработчик. Но я чувствую, что системный таймер и jiffies связаны с одним из таймеров GP, и, следовательно, в SMP ARM, например, прерывание от этого таймера связано с одним ядром посредством регистрации привязки GIC. Вернемся с местными таймерами.