免费注册 查看新帖 |

Chinaunix

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

关于内核线程的几个问题,请教 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-07-29 21:24 |只看该作者
原帖由 flw2 于 2008-7-29 19:02 发表
说一下我的看法
sisi8408 28楼贴的这段代码本质(就帖子里讨论的方面来看)上和之前的版本是一样的,只是调度算法的问题

scheduler_tick 函数最后调用entity_tick, 咋一看它其实就是看看是否可能需要进行抢 ...

这个问题和调度器一点关系也没有。这个问题只和调度点有关系。
不管你调度器用什么方法实现,用什么算法,首先得经过通过调度点调用调度器才行。
为什么内核线程只要愿意可以一直执行?为什么不受时间片限制?
根本原因是什么,不是调度器的设计问题,更不是tick_sched的问题。问题在于中断从内核态返回到内核态的路径上没有调度点(关抢占)。
假设现在内核的调度器非常简单,仅仅完成一个分时调度的功能,同时内核不能抢占,但我们在中断从内核态返回到内核态的路径上增加了调度点,这个时候kthread可以一直执行下去吗?当然不行,因为时钟中断可以让它在超时的时候被调度出去。
所以我说sis兄弟贴的代码风马牛不相及,这个问题贴调度器的实现说明不了任何问题。相反,你贴的代码是说明本质的,本质在于调度点的设置问题。

欢迎各位拍砖哈

[ 本帖最后由 zx_wing 于 2008-7-29 21:41 编辑 ]

论坛徽章:
0
32 [报告]
发表于 2008-07-29 21:43 |只看该作者
估计两位老大没注意resched_task所干的活
内核好像很多这样的函数名,确实有点迷惑,都是设置某个标志,然后再某个点上再去检查,不过单从函数名上看不出什么来

论坛徽章:
0
33 [报告]
发表于 2008-07-29 21:50 |只看该作者
原帖由 flw2 于 2008-7-29 21:43 发表
估计两位老大没注意resched_task所干的活
内核好像很多这样的函数名,确实有点迷惑,都是设置某个标志,然后再某个点上再去检查,不过单从函数名上看不出什么来

这个我注意到了啊,莫非我理解错了?
就是因为不能在中断处理函数中直接唤醒一个进程让它执行,所以需要设置标志位,在中断和异常的返回路径上,到达调度点的时候,调度器检查标志知道需要进行进程切换。
但问题还是在调度点上,当中断从内核态返回到内核态(关抢占),没有调度点,你即使设了这个标志也没用。
开抢占的情况下在内核态返回内核态的路径增加了调度点,这个适合设置了TIF_NEED_RESCHED才有用。

所以关键不在调度器通过何种方式知道此时是否需要调度,而是能否到达调度点,让调度器运行。

论坛徽章:
0
34 [报告]
发表于 2008-07-29 21:55 |只看该作者
所以标志只是需要调度(时间片没了或者一个优先级高的进程可运行了),至于能不能调度就是另外一回事了
而抢占与否只与后半部分相关

论坛徽章:
0
35 [报告]
发表于 2008-07-29 22:03 |只看该作者
原帖由 flw2 于 2008-7-29 21:55 发表
所以标志只是需要调度(时间片没了或者一个优先级高的进程可运行了),至于能不能调度就是另外一回事了
而抢占与否只与后半部分相关

对啊,所以这里讨论的“kthread只要愿意可以一直执行下去”,关键问题是此时不能调度(没有调度点)。
当kthread超时后或有更高优先级的任务了,NEED_SCHED这个标志还是会被设置,设置了但没用啊,因为没有调度点不能被调度啊。
所以我说本质问题不在调度器的实现(比如这里,你调度器设不设标志都没用),关键在于你调度器有没有机会运行,有没有调度点。

论坛徽章:
0
36 [报告]
发表于 2008-07-30 00:37 |只看该作者
估计楼主想问的就是zx_wing所说的这个问题吧。

也就是说内核线程在非抢占内核中可以随心所欲地霸占CPU,却没有任何资料中给过一个说法,确实有些奇怪。

其他几位举的例子好象跑题了?

[ 本帖最后由 baohuaihuai 于 2008-7-30 00:40 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP