linux内核抢占

SARA520 2010-06-04 10:23:36
书上是这么说的:如果不支持内核抢占,那么内核代码可以一直执行,到它完成为止。
这句话的意思是:如果没有内核抢占,处于内核态的进程不受时间片控制???直到该进程从内核空间返回用户空间,才发生抢占??
不太理解。


如果是就像我上面说的那样,考虑下面一种情形:
在单处理器机器上,一个进程A在内核态下拥有自旋锁,被阻塞后,另外一个进程B被调度执行,也执行到同样的一段内核代码,申请同一个自旋锁,但是由于进程A并没有释放该锁,所以B会一直自旋等待,同时内核被禁止抢占,此时,进程B就一直执行,而A无法释放锁,也就是死锁了???
当然事实肯定不是这样,所以不知道这里面,哪里有错误。

望高手帮忙解惑阿,谢谢
...全文
66 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
SARA520 2010-06-05
  • 打赏
  • 举报
回复
发现发错区了。。。
Boover 2010-06-04
  • 打赏
  • 举报
回复
忙循环是不会自己主动放弃CPU的吧???
要看操作系统怎么实现了……
SARA520 2010-06-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yunyun050924 的回复:]

不支持抢占只说明是不可剥夺的,表示一个任务不能别打断,但是可以自己睡觉发生调度。而且没有必要太抓住概念,还不如看哈代码清楚,发生调度的情况有很多种,
[/Quote]
新手阿,没法看代码,都不知道哪看呢。。。
那我说的那种情形呢?关于自旋锁的,如果申请锁失败,将一直忙循环,又不可抢占,不是一直执行么???
忙循环是不会自己主动放弃CPU的吧???

谢谢!
yunyun050924 2010-06-04
  • 打赏
  • 举报
回复
不支持抢占只说明是不可剥夺的,表示一个任务不能别打断,但是可以自己睡觉发生调度。而且没有必要太抓住概念,还不如看哈代码清楚,发生调度的情况有很多种,

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧