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

在获得自旋锁后为什么不能够进行可能引起休眠的操作?

    来源: 互联网  发布时间:2016-06-28

    本文导语:  在获得自旋锁后为什么不能够进行可能引起休眠的操作? 我看有的资料上是这样解释的:进程A获得自旋锁后,进行可能引起休眠的操作后(例如copy_from_user等),进程将会被切换出去,这个时候另外一个进程B企图获...

在获得自旋锁后为什么不能够进行可能引起休眠的操作?
我看有的资料上是这样解释的:进程A获得自旋锁后,进行可能引起休眠的操作后(例如copy_from_user等),进程将会被切换出去,这个时候另外一个进程B企图获取本自旋锁,死锁就会发生。

但是我想,即使进程A被切换出去,进程B一直试图获取该自旋锁,但是当进程B的时间片被用完的话进程B将自动被切换出去,在一段时间后,进程A将被唤醒执行,然后释放自旋锁等等,进程B自然有机会获得该自旋锁,怎么会出现死锁的情况呀,一直想不通。

还请各位大牛给点解释,谢谢。

|
spin lock的自动禁止抢占的
也就是说,A如果那到锁以后,内核的抢占暂时被禁止。然后它休眠了,切换到另一个进程B(注意,这不是抢占,是进程自己放弃CPU)。等到进程B想要获得这个锁时发生了死锁,尽管B的时间片会被用完,但由于内核抢占被禁止了,所以B不会被调度出去。
更糟的情况是,如果A用irq save方式来得到这个spin lock,那中断是被禁止的,时钟中断不会被响应,B的时间片根本不会被跟新。

|



    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 在服务器端,能够获得用户IE的如下的一些设置吗?
  • 用什么方法能够获得一个文件在磁盘上的大小?
  • 用sysconf(_SC_CLK_TCK)可以获得时钟的hz,还有什么方法可以获得内核时钟的hz
  • gtk的获得属性的问题!急!
  • 调用DOM对象的focus使文本框获得焦点
  • 获得客户端的显示分辨率
  • 怎样一个一个的获得指定目录下的文件名.
  • linux下什么语言获得参数是~1
  • 求救:关于在BSD下如何通过文件路径使用核内函数获得文件句柄?
  • jQuery获得内容和属性示例代码
  • jQuery获得内容与属性方法
  • mysql获得60天前unix时间思路及代码
  • 用javamail怎么获得邮件内容?
  • 如何获得上一组件的的位置信息?
  • 用sysconf(_SC_CLK_TCK)可以获得时钟的hz,还有什么方法可以获得内核时钟的hz iis7站长之家
  • 在JavaBean或Servlet如何获得URL地址?
  • 如何获得系统支持字体?
  • 按钮如何获得焦点并按回车触发?
  • 如何在UNIX下获得MAC地址?
  • 如何获得刚插入数据的id递增值
  • 如何获得iptables的输出信息??????有挑战性阿!!!
  • 我的redhat 可以自动获得Ip地址 却无法浏览网页 !


  • 站内导航:


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

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

    浙ICP备11055608号-3