LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 729|回复: 0

关于抢占的一个疑问

[复制链接]
发表于 2012-1-19 13:17:11 | 显示全部楼层 |阅读模式
下面引用网上的一段话,
------------------------------------------
实时和抢占,是为了减少latency  

在非抢占的内核中(比如2.4),中断返回时(包括时钟中断?),如果发现CPU是在内核态,是不进行调

度的。  
因此,在内核态中的某些代码,如果运行时间太长的话,是会增加schedule latency的。  
此时,主要依靠内核本身主动进行调度。  

对于可以抢占的内核,中断返回时,即使CPU是内核态,也可以调度,因此可以减少latency。  
此时,即使是内核态,也可以被动的调度。  

但是,即使在可以抢占的内核,如果在某个锁中的运行时间太长,也会增加schedule latency,因为锁中

是不能抢占的。
因此,内核的很多代码,当觉得占用了较长时间,就会主动调用cond_resched()。

也就是说,在可抢占的内核中,没有占用锁的时候,可以抢占(中断返回的时候),这是被动的调度。  
占用锁的时候,主要靠内核本身主动调度。

-----------------------------------------------------------------
我有一个问题 不清楚 就是红色字体部分
不是说了锁中不能抢占的吗!那还主动调用cond_resched()有用吗?????schedule()应该会打印出错信息啊????
疑惑啊。。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表