免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1947 | 回复: 3
打印 上一主题 下一主题

进程调度程序的执行点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-19 14:31 |只看该作者 |倒序浏览
内核调度程序可能在很多情况下执行,比如用户模式下的抢先调度,内核模式的抢先调度
,从系统调用返回到用户模式,中断执行程序返回时调用调度程序,除此之外不知道还有那些地方可能执行调度?

论坛徽章:
0
2 [报告]
发表于 2009-01-19 14:51 |只看该作者
除了进程自动放弃执行外,另外就是在用户抢占与内核抢占的地方发生进程切换。

用户抢占:
1. 从系统调用返回用户空间
2. 从中断处理程序返回用户空间

内核抢占:
1. 从中断处理程序返回到内核空间时
2. 当内核代码再一次可以被抢占时,即preempt_count的值为0时

论坛徽章:
0
3 [报告]
发表于 2009-01-19 16:01 |只看该作者
还有几个疑问:如果当前进程在用户空间,内核从进程上下文进入中断上下文时,这算不算调用调度程序(好先调度程序只是针对进程的。。。)? 另外,在这种情况下,由于在进行中断处理之前,必须要先进入内核空间,如果该中断处理完后,能否保证还会回到用户空间。

论坛徽章:
0
4 [报告]
发表于 2009-01-19 17:22 |只看该作者
原帖由 ljshan 于 2009-1-19 16:01 发表
还有几个疑问:如果当前进程在用户空间,内核从进程上下文进入中断上下文时,这算不算调用调度程序(好先调度程序只是针对进程的。。。)? 另外,在这种情况下,由于在进行中断处理之前,必须要先进入内核空间 ...


当在用户空间发生了中断时进入到中断上下文,此时的中断仍然是运行在当前进程的内核地址空间中。当前进程仍然是被中断的那个进程。所以不算进程切换。
而在中断返回时,在回到用户态之前,需要检查是否需要进行进程调度,如果需要,则进行进程调度。
从中断返回的代码在arch/i386/kernel/entry.S中ret_from_intr 你可以看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP