免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: tomkedy
打印 上一主题 下一主题

关于抢占的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-06-30 12:06 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
12 [报告]
发表于 2011-06-30 13:27 |只看该作者
进程A执行6ms后,如果产生中断,系统自动切换到中断模式(硬件跳转),执行中断向量表中指定的函数。这个切换,是用户模式到suv模式的切换,不属于进程调度的切换。
如果是可抢占的,在suv模式下会进行进程调度。如果是非抢占式的,中断处理后返回A继续执行。
抢占代表的是进程切换,模式切换不算在内。

产生中断的原因很多,不仅仅只有时钟。具体可以看linux内核代码

论坛徽章:
0
13 [报告]
发表于 2011-06-30 13:29 |只看该作者
本帖最后由 tomkedy 于 2011-06-30 21:30 编辑
我能想到的一个进程从挂起(阻塞,睡眠等等)变成就绪可能有两种情况:1)A创建了B;2)B等待的资源被释放了。
第一种情况,内核肯定知道B被创建了而且优先级高于A。那么问题其实就不存在了。
第二种情况,由于这个时候cpu一直是被A占用,所以要么是A释放了资源了,要么是硬件释放了资源(中断)。这时问题就变为在释放资源的时候是否要进行一次调度,如果调度就是方案1,如果不调度就是方案2.所以问题也就不存在了
为什么删我贴 发表于 2011-06-30 12:06


楼上,谢谢你的回复。我的看法如下:

对于你说的第一种情况,我觉得如果进程A在创建进程B的最后阶段不进行一次调度处理,则内核是不会知道进程B的优先级高于进程A从而实现方案1的(但个人认为创建进程一般是不需要再进行进程调度的)......

对于你的方案二,如果进程A占用的只是一个共享的变量,那释放它也要一次调度?

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
14 [报告]
发表于 2011-06-30 14:59 |只看该作者
关键是如果cpu都不知道B就绪了,那这个“就绪”有什么意义。
换句话说就是什么是就绪,什么时候会就绪
为什么删我贴 发表于 2011-06-30 11:39



    当然是通过事件。时钟是事件,其他中断也是事件。

论坛徽章:
0
15 [报告]
发表于 2011-06-30 20:31 |只看该作者
当然是通过事件。时钟是事件,其他中断也是事件。
yulihua49 发表于 2011-06-30 14:59


楼上,进程是由软件实现的,那是否每个进程就绪都要通过“软中断”通知CPU?

论坛徽章:
0
16 [报告]
发表于 2011-06-30 21:52 |只看该作者
回复 13# tomkedy


  ........

论坛徽章:
0
17 [报告]
发表于 2011-07-01 06:56 |只看该作者
楼主从睡眠、抢占、中断、用户态、内核态、操作系统设计和实现… 没一个概念是清晰的,一通胡来,难得有空给你补课

论坛徽章:
0
18 [报告]
发表于 2011-07-01 09:25 |只看该作者
在c++论坛终于找到了点自信。
我举个通俗的例子了:
进程A: 正在执行一个系统调用,死循环,进程run状态并且占用cpu。
进程B:vi程序正在阻塞在read系统调用,进程睡眠状态。优先级高于A
你按一下键盘,产生一中断。通过内核input子系统会唤醒进程B(进程B进入run状态,但是未占用cpu),此时如果内核可抢占的,在中断返回时,内核会调度B进程占用cpu执行(进程A仍然在run状态,但是被放弃了cpu)。
内核抢占的本质就是:正在run状态占用着cpu的并且正在内核态执行的进程被动的放弃了cpu。

论坛徽章:
0
19 [报告]
发表于 2011-07-01 11:03 |只看该作者
在c++论坛终于找到了点自信。
ruslin 发表于 2011-07-01 02:25


真不明白你这自信哪里找来的,连问题都没搞清楚是啥就 blabla, bso。

论坛徽章:
0
20 [报告]
发表于 2011-07-01 16:29 |只看该作者
回复 19# vupiggy


如果你是高手你肯定明白几句话就要讲清楚内核抢占给不太了解内核的人来说是非常困难的。
如果你自己也不是很清楚的话。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP