免费注册 查看新帖 |

Chinaunix

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

有个疑问,关于linux调度的 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-11 15:52 |只看该作者 |倒序浏览
假如有A,B两个进程,其中A包含有1,2,3三个线程,B包括4,5,6三个线程

有如下问题:

1.是不是应该有8个task_struct结构,其中2个对应进程,6个对应线程?

2.调度是如何进行的呢,是以A,B为调度单位还是1,2...为调度单位?
就目前看过的资料来说,感觉上是以线程为单位,但是!
如果以线程为调度单位的话,刚运行了1线程再运行5线程的话不也牵扯到进程的切换了吗?
怎么对得起线程切换节约开销的说法?
还有,对于线程2.4和2.6的调度策略到底不同之处在哪?从编程效果来看似乎没差别?

菜鸟望指点

[ 本帖最后由 yourbabyface 于 2008-7-11 16:04 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-07-11 16:21 |只看该作者
进存内的线程可以共享进程的内存空间吗。

论坛徽章:
0
3 [报告]
发表于 2008-07-11 16:24 |只看该作者
6个task_struct结构, 具体参考Linux kernel development 进程一章

论坛徽章:
0
4 [报告]
发表于 2008-07-11 16:30 |只看该作者
在linux中,线程和进程使用同样数据结构来表示。
在你的例子中,只有6个task_struct,对应的就是有6个进程,没有单独的线程数据结构。
在6个进程中,A1,A2,A3这3个进程共享一些东西,比如:地址空间,文件描述符什么的。
而B1,B2,B3这3个进程也共享一些东西。但是在A和B之间是没有共享的。

论坛徽章:
0
5 [报告]
发表于 2008-07-12 09:40 |只看该作者
谢楼上,这样的话也就是说调度的时候完全按照这6个线程的属性进行调度,A1-B3-A2这样的调度顺序是完全可能的,不过在按这种循序的话调度开销比较大而已,完全不考虑A,B的存在了吧

[ 本帖最后由 yourbabyface 于 2008-7-12 09:49 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP