免费注册 查看新帖 |

Chinaunix

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

什么时候改变父进程的slice的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-27 13:35 |只看该作者 |倒序浏览
在2.6.24版本中的do_fork的copy_process中的sched_fork中并没有调用schedule_tick函数来改变父进程的slice阿 那么
它是怎么调用schedule_tick的阿

论坛徽章:
0
2 [报告]
发表于 2008-12-27 14:39 |只看该作者
原帖由 nqdgj2007 于 2008-12-27 13:35 发表
在2.6.24版本中的do_fork的copy_process中的sched_fork中并没有调用schedule_tick函数来改变父进程的slice阿 那么
它是怎么调用schedule_tick的阿

我想一下为什么fork的时候要改变父进程的时间片?

论坛徽章:
0
3 [报告]
发表于 2008-12-27 17:25 |只看该作者
没有人知道阿

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
4 [报告]
发表于 2008-12-27 17:47 |只看该作者
原帖由 zx_wing 于 2008-12-27 14:39 发表

我想一下为什么fork的时候要改变父进程的时间片?


fork后,子进程是和父进程共享时间片的,这样是为了防止父进程通过fork子进程来骗取时间片。

论坛徽章:
0
5 [报告]
发表于 2008-12-27 21:14 |只看该作者
void fastcall sched_fork(task_t *p)
{
...
         */
        p->first_time_slice = 1;
                current->time_slice >>= 1;
        p->timestamp = sched_clock();
...

}

论坛徽章:
0
6 [报告]
发表于 2008-12-28 12:32 |只看该作者
原帖由 dreamice 于 2008-12-27 17:47 发表


fork后,子进程是和父进程共享时间片的,这样是为了防止父进程通过fork子进程来骗取时间片。

是theard情况吗?说实话我一直不清楚Linux能不能实现线程池,因为我不知道theard是否共享时间片,我一直认为是不共享的。
clone时传什么参数表示共享时间片呢?假设我有1000个子线程,都共享时间片,那么一个线程得到的20ms/1000,每个线程分到的岂不是还不到一个tick数,那什么事情都干不了全耗在调度上了?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
7 [报告]
发表于 2008-12-28 12:35 |只看该作者

回复 #6 zx_wing 的帖子

thread的情况没有具体研究过,但是,如果真的子进程获得了自己的时间片,那样的情况对于进程管理和调度也是不太合理的。

论坛徽章:
0
8 [报告]
发表于 2008-12-28 12:49 |只看该作者
原帖由 dreamice 于 2008-12-28 12:35 发表
thread的情况没有具体研究过,但是,如果真的子进程获得了自己的时间片,那样的情况对于进程管理和调度也是不太合理的。

可能是我读书不认真,我实在不记得有什么地方讲过linux下子进程是共享父进程的时间片的,有没有文字贴一段?
>>真的子进程获得了自己的时间片,那样的情况对于进程管理和调度也是不太合理的。
为什么不合理?linux本身就是这样做的

论坛徽章:
0
9 [报告]
发表于 2008-12-28 12:58 |只看该作者
原帖由 zx_wing 于 2008-12-28 12:32 发表

是theard情况吗?说实话我一直不清楚Linux能不能实现线程池,因为我不知道theard是否共享时间片,我一直认为是不共享的。
clone时传什么参数表示共享时间片呢?假设我有1000个子线程,都共享时间片,那么一个 ...

嗯,又想了一下,线程池也不应该是共享时间片的

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
10 [报告]
发表于 2008-12-28 13:39 |只看该作者
原帖由 zx_wing 于 2008-12-28 12:49 发表

可能是我读书不认真,我实在不记得有什么地方讲过linux下子进程是共享父进程的时间片的,有没有文字贴一段?
>>真的子进程获得了自己的时间片,那样的情况对于进程管理和调度也是不太合理的。
为什么不合理 ...



ULK3中文版第126页:
sched_fork()
“为了保证公平的进程调度,该函数在父子进程之间共享父进程的时间片(参见第七章scheduler_tick()函数)”
我想应该有不共享时间片的情况,至于线程池的问题,看来我还需要好好研读一下代码才行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP