gpt4 book ai didi

c - 什么触发了 0x08 中断?

转载 作者:行者123 更新时间:2023-12-04 11:41:30 24 4
gpt4 key购买 nike

我正在尝试劫持定时器中断。同事告诉我IDT(Interrupt Descriptor Table)上的中断0x08就是定时器。当然,我检查并看到了两个可能的答案:this其中表示 8 是 real clock timerthis说是 Double Fault 中断 - 我决定相信他,而不是浪费时间进一步检查。在最终控制了 IDT 并替换了中断 8 之后,什么也没有发生。

  • 那么这是怎么回事?
  • 随着时间的推移,此中断的目的是否从计时器更改为双重故障?
  • 此中断在 ARM/Intel 等平台上有不同的用途吗?

我的代码是一个内核模块,它劫持了中断 8 并在每次中断到达时简单地执行一个 printk 命令。我运行了大约 25 分钟 - dmesg 中没有输出。

以防万一:我在虚拟机上运行内核为 3.8 的 Linux Mint。主机有一个 Intel i5。

最佳答案

您可以使用以下命令找到定时器的中断:cat/proc/interrupt

以下是 6 核机器上的示例输出:

cat /proc/interrupts | egrep "timer|rtc"
0: 320745126 0 0 0 0 0 IO-APIC-edge timer
8: 1 0 0 0 0 0 IO-APIC-edge rtc0
LOC: 115447297 304097630 194770704 212244137 63864376 69243268 Local timer interrupts

注意,timer和rtc是不一样的。到目前为止也只有一个 rtc 中断。 (很多定时器中断)。以下是正常运行时间输出。

 uptime
14:14:20 up 13 days, 3:58, 9 users, load average: 0.47, 1.68, 1.38

我认为您应该在破解 IDT 之前检查一下。此外,您可能想要破解中断 0,而不是 8。

关于c - 什么触发了 0x08 中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20688466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com