Что такое локальные прерывания по таймеру в Linux?

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

Ответы на вопрос(4)

Решение Вопроса

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

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

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

Счетчик таймера APIC имеет длину 32 бита, а счетчик таймера PIT - 16 бит; следовательно, локальный таймер может быть запрограммирован на выдачу прерываний на очень низких частотах (счетчик хранит количество тактов, которое должно пройти до того, как будет выдано прерывание). Локальный таймер APIC отправляет прерывание только своему процессору, в то время как PIT создает глобальное прерывание, которое может обрабатываться любым процессором в системе. Таймер APIC основан на тактовом сигнале шины (или сигнале шины APIC на старых машинах). Он может быть запрограммирован таким образом, чтобы уменьшать счетчик таймера каждые 1, 2, 4, 8, 16, 32, 64 или 128 шинных тактовых сигналов. И наоборот, PIT, который использует собственные тактовые сигналы, может быть запрограммирован более гибким способом.
 Michael Burr13 мая 2012 г., 09:21
Фактически, вы можете получить то, что вам нужно, просмотрев содержимое, которое О'Рейли делает доступным на своей странице, где продается книга, - нажмите на элемент «Обзор содержимого» над изображением книги: Shop.oreilly.com / продукт / 9780596005658.do и ищите «временную архитектуру»
 Manuel Selva13 мая 2012 г., 21:33
Спасибо за ответ, я прочитал главу онлайн, но не нашел так много ответов. Что касается планирования, есть также строка, которая называется Перепланирование прерываний в / proc / interrupts с большим количеством прерываний, не являются ли они прерываниями для планирования ?
 Michael Burr13 мая 2012 г., 09:19
@ Manuel: Я действительно не знаю слишком много деталей об использовании ядром этих времен. 3-е издание книги посвящено ядру 2.6 и, похоже, довольно хорошо освещает эту тему вместе с конкретными именами функций, которые вы можете использовать, чтобы сосредоточиться на соответствующем исходном коде. Я думаю, что стоит заимствовать копию 3-го издания, чтобы узнать, содержит ли она уровень детализации, который вы ищете.
 Manuel Selva12 мая 2012 г., 23:49
Спасибо за ответ. У меня есть эта книга, но версия ядра 2.2 :-( Еще один вопрос, как ядро использует эти прерывания? С какой целью это связано с планированием? С другими вещами?
 Basile Starynkevitch13 мая 2012 г., 09:04
Да, планирование связано с таймерами.

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

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

 Manuel Selva13 мая 2012 г., 21:32
Спасибо за ответ, но что касается планирования, в / proc / interrupts с большим количеством прерываний также есть строка Перепланирование прерываний, не являются ли прерывания для планирования?

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

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

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

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

Ваш ответ на вопрос