免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 20392 | 回复: 11

linux中线程调度和进程调度 [复制链接]

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
发表于 2011-02-10 15:02 |显示全部楼层
假设系统处于运行态的进程有3个:A、B、C,每个进程均有5个线程。

请问,系统是怎么分派调度的?是调度进程还是线程?{:3_180:}
如果是调度进程的,那么当进程占有CPU时,进程中的线程又是怎么并发执行的?(就是想知道,各个线程怎么分配进程的时间片的?是不是还有个线程调度程序的???)

论坛徽章:
0
发表于 2011-02-10 15:13 |显示全部楼层
LINUX下面 线程 是 lightweight process就是轻量级的进程。 一句话线程是共享了部分资源(地址空间、文件句柄、信号量等等)的进程。所以线程也按照进程的调度方式来进行调度。

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
发表于 2011-02-10 15:33 |显示全部楼层
回复 2# cluter


    那比方说,A进程的一个线程由于某种原因,放弃了CPU的使用,调度以下两种情况:
  1. 如果下一个调度的线程是B进程中的一个线程
  2. 如果下一个调度的线程是同一个进程的其他线程

这两种情况下有什么不同?{:3_180:}

论坛徽章:
1
射手座
日期:2013-11-07 09:19:48
发表于 2011-02-10 16:59 |显示全部楼层
这个问题首先要区分你说的线程是内核线程还是用户线程。
对内核线程,linux内核会把它当作进程来看待和调度。
对用户线程,调度的策略则与具体使用的线程库的实现有关系。

论坛徽章:
0
发表于 2011-02-10 17:12 |显示全部楼层
linux 通过轻量级进程实现线程,最大的好处:设计简单。 线程调度直接使用进程调度就可以了,没必要再搞一个进程内的线程调度器。 至于代码段,数据段,信号量,这些通过同用一个内存映射就可以了。

论坛徽章:
0
发表于 2011-02-10 17:13 |显示全部楼层
在多核条件下,线程创建后是否立即分配到不同的核上去,怎样分配到不同的核上去跑,这个问题值得探究

论坛徽章:
0
发表于 2011-02-11 08:48 |显示全部楼层
LINUX下面 线程 是 lightweight process就是轻量级的进程。 一句话线程是共享了部分资源(地址空间、文件句柄、信号量等等)的进程。所以线程也按照进程的调度方式来进行调度。
很多人都是这样子去解释的,呵呵,跟人感觉不太好,为什末呢?
大学生的课本基本都是这样子说的,说法本身没什么不对,只是很含糊。我觉得你不如说,linux下,进程和线程就是一回事,不过进程内所有的线程共享一部分资源,如地址空间、文件句柄、信号量等。调度则是按照进城去调度。至于调度优先级,根据进程的活动情况动态调整,分为IO型任务和计算性任务,通常IO型任务优先级更高。关于调度部分,你可以看看robert love的书,上面解释的比较清楚

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
发表于 2011-02-11 11:31 |显示全部楼层
回复 4# guocslock


    内核线程和用户线程不和进程中的用户进程和内核进程关系一样吗?
用户进程包含两个方面:用户空间运行的进程和内核空间的进程(系统调用),他们是使用同一个PCB。

换成线程的话,一个线程难道不是包含用户空间线程和内核空间线程的吗?

论坛徽章:
2
2015年迎新春徽章
日期:2015-03-04 09:57:09C
日期:2016-10-25 16:17:59
发表于 2011-02-11 11:34 |显示全部楼层
回复 5# tuibo


    这个轻量级是什么概念???
比方说,线程切换和进程切换的具体有哪些个方面存在差异?{:3_180:}

论坛徽章:
0
发表于 2011-02-11 14:38 |显示全部楼层
一般书上都有讲吧。

如果线程完全在内核态实现,内核调度的单元是线程,这种情况下线程与进程的区别非常微妙。
如果线程完全在用户态实现,内核调度的单元是进程,内核对线程一无所知,只负责分配CPU给进程,进程得到CPU后再内部分配给线程。
如果线程是混合实现,内核调度的单元是“线程”,与第一种情况不同的是,这个“线程”得到CPU后,内部还可以分配给在用户实现的“二级线程”。这个时候,不好给予调度实体称呼。Solaris是这样实现吗?

Linux应该是第一种情况吧,所以线程和进程的分界很模糊了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP