单线程程序是轮流应用多核资源么?

hesicong 2007-10-03 03:20:14
现在很多程序都是单线程应用程序,换句话说只对单核进行了优化。的确,这些软件在我的四核处理器上最大CPU占用率也就是25%,但从4个CPU占用的图像上来看,并不是独占了一个CPU的资源,而是4个CPU都有适当的CPU占用率。那么请问这个单线程的程序在4CPU上面用的话是轮流使用4个CPU的么?
...全文
484 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengmengswat 2007-11-09
  • 打赏
  • 举报
回复
肯定是OS进行调度,不一定轮流执行,多核的话就不会对一个核心实行负载,应该是平均分配,再深入的话就不太清楚了,OS内部的问题.
oldmanzhao 2007-11-04
  • 打赏
  • 举报
回复
多核就相当于多处理器,其实一个道理。
zhangyixian525 2007-11-04
  • 打赏
  • 举报
回复
对于CPU的资源调度确实是由操作系统来完成的。这个问题不管是单核还是多核都是一样。
在单线程运行在多核的情况下肯定会比运行在单核下的速度快。这种速度的提高是由哪种情况来决定的呢?
我觉得可能是操作是有一套机制可以把单线程的分布执行,充分发挥处理器的运行效率。请高人指点!
oldmanzhao 2007-10-31
  • 打赏
  • 举报
回复
这个要看OS的调度吧
DentistryDoctor 2007-10-30
  • 打赏
  • 举报
回复
这个不确定的。
大多数应用在针对多核进行优化后应该可以提升不少的性能。
fenggf 2007-10-04
  • 打赏
  • 举报
回复
至于线程在运行期占用哪一个处理器,是由操作系统调度来控制的,并不一定具有确定性。当系统中还运行有其它大的应用时,一个单线程应用在四核的系统中,也不会在四个核上平均分布,而时由OS根据负载来决定。如在LINUX中,注意观察每个处理器或核上都会有一个migration的进程,它是负责根据系统当前负载将本处理器上的进程迁移到别的处理器上。
当然用户也可以使用一些API将进程捆绑到特定的处理器或核,尤其是当使用SMP系统时,进程在处理器之间的调度,意味着应用要重新“加热”cache,可能会带来一些性能损失。而操作系统在调度时也会尽量考虑这些因素

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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