小编sil*_*ttt的帖子

Linux nmi监视器如何工作?

现在我遇到了关于Linux NMI Watchdog的问题.我想使用Linux NMI看门狗来检测和恢复操作系统挂起.所以我将"nmi_watchdog = 1"添加到grub.cfg.然后检查/ proc/interrupt,每秒触发NMI.但是在我加载了一个带死锁的模块(双获取自旋锁)之后,系统完全挂起,什么也没发生(从不恐慌!).看起来nmi看门狗不起作用!

然后我读了Documantation/nmi_watchdog.txt,它说:

请注意,使用本地APIC时,它产生的NMI中断频率取决于系统负载.当地的APIC NMI监管机构缺乏更好的资源,使用" 周期无 ""事件.

什么是" 周期无恙 "事件?

它补充道

但是如果你的系统锁定了除"hlt"处理器指令之外的任何东西,监视器将很快触发,因为"循环无关"事件将在每个时钟滴答时发生...如果它锁定在"hlt",那么你就出局了好运 - 事件根本不会发生,看门狗不会触发.

似乎看门狗在处理器执行"hlt"指令时不会触发,然后我在" Intel 64和IA-32架构软件开发人员手册,Volumn 2A "中搜索"hlt ",它描述如下:

停止指令执行并将处理器置于HALT状态.启用的中断(包括NMI和SMI),调试异常,BINIT#信号,INIT#信号或RESET#信号将恢复 执行.

然后我输了......

我的问题是:

  • Linux nmi监视器如何工作?
  • 触发了nmi?

我的操作系统是Ubuntn 10.04 LTS,Linux-2.6.32.21,CPU Pentium 4双核3.20 GHz.

我没有阅读关于nmi看门狗的全部源代码(没时间),如果我无法理解nmi看门狗是如何工作的,我想用性能监控计数器中断处理器间中断(由APIC提供)来代替发送NMI nmi看门狗.

有人能帮助我吗?谢谢.

linux watchdog apic

26
推荐指数
2
解决办法
4万
查看次数

当它杀死一个进程时,linux是否释放了自旋锁/信号量?

如果一个进程持有一些自旋锁或信号量,并意外退出(例如,被linux杀死),linux会正确释放这些锁吗?如果linux没有做到这一点,为什么?

linux semaphore kill-process spinlock process-exit

7
推荐指数
1
解决办法
4358
查看次数

如何在数据记录规则的主体中表达全称量词?

我想在谓词规则的主体中使用全称量词,例如

A(x,y) <- ?B(x,a), C(y,a)。

这意味着只有对于来自 C(y, a ) 的每个a,B(x, a ) 总是有 x 匹配 (x, a ),那么 A(x,y) 为真。

由于在 Datalog 中,规则体中的每个变量默认都是存在量词,因此a也将是存在量词。我应该怎么做才能在谓词规则的主体中表达全称量词?

谢谢你。

PS 我使用的 Datalog 引擎是 logicblox。

datalog

5
推荐指数
1
解决办法
715
查看次数