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

6

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

Ваш Ответ

4   ответа
7

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

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

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

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

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

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

Спасибо за ответ, но что касается планирования, в / proc / interrupts с большим количеством прерываний также есть строка Перепланирование прерываний, не являются ли прерывания для планирования? Manuel Selva
0

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

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

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

0

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

Похожие вопросы