Я пытаюсь захватить прерывание таймера. Коллега сказал мне, что прерывание 0x08 в IDT (таблица дескрипторов прерываний) является таймером. Проклятие я проверил и увидел два возможных ответа: this, в котором говорится, что 8 - это real clock timer
и this, говоря, что это прерывание Double Fault
- я решил поверить ему и не тратить время на проверку. После окончательного контроля над IDT и замены прерывания 8 ничего не происходит.Что вызывает прерывание 0x08?
- Так что же происходит?
- Это прерывание изменило свою цель с течением времени от таймера до двойной ошибки?
- Имеет ли это прерывание разные цели на ARM/Intel/etc.?
Мой код - это модуль ядра, который захватывает прерывание 8 и просто выполняет команду printk
каждый раз, когда приходит прерывание. Я провел его около 25 минут - Нет вывода в dmesg
.
В случае, если это имеет значение: я запускаю Linux Mint с ядром 3.8 на виртуальной машине. Хост имеет Intel i5.
Не будет ли ядро использовать его для планирования процесса? – falstro
Вероятно, я ожидал, что ядро потерпит крах, а потом вызовет исходную функцию из моей функции (проксирование исходного обработчика). Но сейчас кажется, что ничего не происходит. –
@roe: В большинстве современных ядер используется этот таймер [APIC] (http://wiki.osdev.org/APIC_timer). Гораздо более гибкий и точный, и это за процессор, а не глобальный. – duskwuff