推土机性能增强10%!CPU线程调配探究
首先要说下进程与线程的区别,在操作系统中,每个程序可以看作是指令的集合,执行这些程序就会产生进程,一个程序可以有多个并行进程,每个进程包含多个线程(操作系统中的最小调度单位是线程),每条线程可以并行执行多个任务。
Windows操作系统的内核线程调度机制并未针对模块化设计优化
以实际应用来说,当你运行某个程序时,在Windows操作系统中就会出现对应的一个或多个进程,每个进程又会包含多个线程分配到处理器中执行。如果一个程序针对多线程优化,那么该程序对应的进程中的不同线程就会能得到充分执行,程序的执行吞吐率也会高很多。这样的程序在多核或者支持超线程技术的处理器上运行时效率就会很高,不过现在的很多程序并没能跟上处理器多核化的脚步,比如Photoshop在测试中就只能让处理器的一颗核心满载,而其他核心都处在空闲状态,我们能做的是什么呢?或者说Windows8能做的是什么呢?
在Windows系统中,调度的最小单位就是线程,系统依靠自己的内核线程管理机制可以将一个或多个进程或者一个进程中的一个或多个线程绑定到一个或多个处理器核心上(即CPU亲缘性)。读到这儿你要激动下了,因为推土机处理器的每个模块内的运算资源是由两颗核心共享的,如果一个程序并不能利用这么多核心(目前能完整利用到八颗核心的日常程序是少之又少),而只能利用到四颗核心,操作系统让该程序进程中的线程分别只运行在每个模块中的一个核心上,而让另外一个核心闲置,那么这时的运算效率会怎样呢?
现在的问题是在Windows 7中,推土机的八颗核心均是一模一样的,它本身并没有上段的那种调度机制,而Windows 8就带来了这种可能性,不过现在我们可以采用方法在Windows7中实现这种机制,于是小编带来了下面的测试。