首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么禁用一个本地中断或抢占会导致具有4个cpus的整个系统无响应

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

Stack Overflow用户
提问于 2012-03-29 11:21:05
回答 1查看 1K关注 0票数 2

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

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

代码语言:javascript
复制
for(;;) 
{
    preempt_disable(); 
    /* ---did some thing fast here--- */ 
    preempt_enable()
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-29 12:35:22

内核可能想要在所有CPU上执行某个操作,例如RCU同步,或与缓存相关的同步或其他任何操作。那你就完蛋了。

SMP不是一种随意地将处理器据为己有的许可证。

这种事情是可以安排的。我的意思是,就内核而言,你可以有一个不在线的CPU,你可以用它来运行你想要的任何东西。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9918654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档