进程、线程、时间片的关系

malloc_love_ 2014-08-30 11:22:33
1.线程是CPU调度的最小单位,是不是指时间片是按线程分的?
2.如果1的答案为是,那么某个进程有超多的线程,那么这个进程将占据绝大多数CPU时间?
3.如果1的答案为否,那么时间片按进程分,单核多线程速度会比单线程慢呗,因为要线程切换?
...全文
2603 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
shnaying1945 2015-03-02
  • 打赏
  • 举报
回复
1.是 2.是不是占据绝大多CPU时间,还看操作系统调度策略:批处理,那可能是;分时操作,那可能不是,这也还得看其他进程线程比例。还看线程作业情况,比如,该进程(有很多线程)主要进行IO操作,线程一进CPU运行,不久就被挂起,转而去执行其他线程进程,那还是别的进程占据的时间多。 3.假如时间片是按进程来分的,那单核多线程速度会比单线程快!因为线程切换要比进程切换速度要快很多,这正式线程几大优点之一! 多回看几遍书,啊哈哈哈哈。
赵4老师 2015-03-02
  • 打赏
  • 举报
回复
搜“线程调度 毛德操”
paschen 2015-02-27
  • 打赏
  • 举报
回复
第一个问题: 必须是 第二个问题:如果这个进程里的所有线程都是活动的话,那么是的;一般程序里如果经常会用Sleep或者SuspendThread来让一个线程不活动,这样就不会占用CPU时间片 楼主想要了解更详细的原理,可以看《windows核心编程》
cysccnu 2015-02-24
  • 打赏
  • 举报
回复
1,进程是资源分配单位,线程是CPU调度单位,对大多数操作系统来说,时间片是线程而非进程相关的; 2,不一定,线程的调度执行是有优先级的,优先级高的得到更多时间片,Linux系统中优先级高的线程时间片大于优先级低的时间片,所以进程有多个线程并不一定这个进程会占用更多CPU时间; 3,这个还是跟优先级有关,如果优先级低,线程再多也不能加快执行速度,即使进程是单线程也是通过操作系统来调度的,也会分配时间片,因为后台还有许多线程在调度执行;但有一点是明确的,线程是对CPU的虚拟,进程有多个线程相当于给该进程分配了多个CPU来执行,效率肯定要高于只分配一个CPU来执行。
扎戈拉玛 2014-09-17
  • 打赏
  • 举报
回复
还有其他因素 如优先级 阻塞,同步 异步等,看看操作系统调度算法
zara 2014-09-15
  • 打赏
  • 举报
回复
是这个意思吧。
malloc_love_ 2014-09-14
  • 打赏
  • 举报
回复
引用 3 楼 zara 的回复:
windows 是以线程来分配时间片的。线程,活动时有两个状态,一个是对 cpu 有要求比如SuperPI 的计算过程;一个是在等待消息状态的无要求,其实绝大部分的线程都是这样的状态;所以,一个进程尽管有众多的线程,它所获得的时间片不一定就有多少,这个可在“任务管理器”里看各个进程的状态信息的,同时将进程的线程数和CPU时间打开。
前几天有事,好久没上论坛了,你的意思是说,线程执行很多时候在等消息、是阻塞的,所以线程多时间片不一定多,因为阻塞直接跳过某些线程执行别的去了?
zara 2014-09-01
  • 打赏
  • 举报
回复
windows 是以线程来分配时间片的。线程,活动时有两个状态,一个是对 cpu 有要求比如SuperPI 的计算过程;一个是在等待消息状态的无要求,其实绝大部分的线程都是这样的状态;所以,一个进程尽管有众多的线程,它所获得的时间片不一定就有多少,这个可在“任务管理器”里看各个进程的状态信息的,同时将进程的线程数和CPU时间打开。
空心兜兜 2014-08-31
  • 打赏
  • 举报
回复
操作系统书上有
c401651191 2014-08-30
  • 打赏
  • 举报
回复
咱也不知道。。

18,124

社区成员

发帖
与我相关
我的任务
社区描述
Windows客户端使用相关问题交流社区
社区管理员
  • Windows客户端使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧