小编Rog*_*ger的帖子

为什么禁用一个本地中断或者抢占会导致整个4个cpu的系统无响应

我做了一些实验,发现每当我关闭内核模块中的本地中断时,系统就会立即挂起,甚至不响应键盘中断。(系统有4个CPU,操作系统是ubuntu 11.10)关闭本地中断应该只是禁用一个CPU(我猜),但我仍然有3个空闲CPU。(困惑)。

与禁用本地中断类似,当我在内核模块中禁用抢占(preempt_disable)时,系统也不再响应我。当我用以下代码更改一个内核模块中的代码时

for(;;) 
{
    preempt_disable(); 
    /* ---did some thing fast here--- */ 
    preempt_enable()
}
Run Code Online (Sandbox Code Playgroud)

系统一开始对我做出响应,但是当我随后打开另一个控制台或执行其他操作时,系统完全挂起。

linux linux-kernel

3
推荐指数
1
解决办法
1145
查看次数

标签 统计

linux ×1

linux-kernel ×1