当前位置:  技术问答>linux和unix

关于休眠的疑惑

    来源: 互联网  发布时间:2016-11-07

    本文导语:   对休眠来说,我们的驱动程序不能在拥有自旋锁,seqlock或者RCU锁时休眠,  如果我们已经禁止了中断,也不能休眠。 在拥有信号量时休眠是合法的。 这几句话应该怎么理解? | 对休眠来说...

 对休眠来说,我们的驱动程序不能在拥有自旋锁,seqlock或者RCU锁时休眠, 
如果我们已经禁止了中断,也不能休眠。
在拥有信号量时休眠是合法的。

这几句话应该怎么理解?

|
对休眠来说,我们的驱动程序不能在拥有自旋锁,seqlock或者RCU锁时休眠, 
1. 休眠是不知道什么时候能被唤醒,因此“在拥有自旋锁,seqlock或者RCU锁时休眠”,会造成资源的浪费
2. 如果 唤醒它的进程 也需要 休眠进程占用的资源的话,就会造成死锁
3. 自旋锁只是简单地循环等待需要的资源,单处理器时,可想而知
 
如果我们已经禁止了中断,也不能休眠。

跟上面的解释差不多

在拥有信号量时休眠是合法的
这时候 需要保证 唤醒它的进程 不需要 休眠进程占用的资源

|
中断代码一般是这样的:
cli
....
sti

cli是设置中断屏蔽寄存器,sti是设置中断允许;
进入中断后,退出中断申请是disable的,也就是说不能调用中断了;
而休眠唤醒恰恰需要调用硬中断来实现。
所以说如果你在中断状态下休眠,是没有人有能力唤醒你的!

|
给你一篇博文,上面有比较详细的解释。
http://blog.csdn.net/maray/archive/2010/07/28/5770889.aspx
主要是讲解为什么在中断的时候不能休眠。9楼讲的比较模糊,其实有2中情况,都在上面的博文中有提到,LZ可以去看看。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 休眠、 时间
  • 关于线程休眠问题
  • 如何解除ubuntu自动待机休眠
  • 关于线程休眠的问题
  • 关于进程和线程休眠的问题
  • 休眠和阻塞的区别?
  • 不用 signal,如何实现线程的休眠与唤醒
  • 请问如何进行毫秒休眠?
  • 有什么方法使多个线程进入休眠,并唤醒其中一个??
  • 如何通过ipmi使服务器休眠、唤醒?
  • 有关系统休眠跟定时任务问题
  • (高分)关于在休眠唤醒中进行msleep
  • 求助!! 笔记本下安装Redhat 8.0中文版总是『休眠』
  • 在线程中sleep函数休眠的问题
  • 探讨:如何修改Android超时休眠时间
  • redhat9.0启动到输入用户名(字符方式)时系统马上自动休眠,高人指点!!100分
  • 送分! UNIX C编程。 如何休眠5秒钟? 类似WINDOWS下的Sleep(5000).
  • fedora图形模式下之前有shutdown->ibernate休眠这个选项的,现在怎么没有了。
  • 休眠问题
  • 怎么判断linux内核函数是否会引起休眠?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3