正文内容 评论(0)
Part V:进程、线程,我们自己的尝试
首先,了解进程(Process)与线程(Thread)的意义与它们之间的关系对我们来说很重要。
简单的来说,我们平常运行的操作和应用都是通过执行程序的,程序是一段静态的代码,是软件运行的基础。进程指的是程序的执行过程,它对应了代码加载、演绎到完成的整个过程,一个进程为此产生、演进然后消失。同一段程序,或者更多的程序,均可以被加载到系统内存区域的不同部分分别执行形成不同的进程。而进程基于线程,一个进程至少有一个线程,进程在执行过程中可以产生多个线程,与进程一样,每条线程也拥有产生、演进然后消失的过程。
上面的这些解释可能很绕口令,那么我们不妨看图说话。
现在,我们用IE打开桌面上一个叫test.htm的文件
任务管理器中出现了iexplore.exe这个进程。
我们留意到,当前iexplore.exe进程的线程数为14。现在,我们去掉刚才那个test.htm页面中右上角金光闪闪的微星光驱广告,那是个Flash。关闭IE后再打开这个页面。
现在再看看,
哦!iexplore.exe进程现在只有11个线程了!原来当我们浏览这个页面时,微星的Flash广告消耗了三个线程——还好,这个Flash广告的效果并不怎么复杂。
就处理器周期和内存的使用而言,创建进程的开销很大。多线程这个概念的出现解决了这个问题,一个进程的所有线程共享同一个内存空间并共享系统资源,节约系统开销,创建线程比创建进程更简单更快。多进程/线程与单进程相比的在效率和速度上的优势是很明显的。
现在,是该想办法验证一下Intel的“超线程”究竟“超”在那里了!在编辑的要求下,我们的程序员帮助了我们,他利用VC编译了可以在规定时间内榨干所有的CPU周期在一个进程中竭尽全力产生线程的程序。希望了解编程原理的朋友们可以给drivers@mydrivers.com信箱来信索取源代码。
这个程序投入测试中后,编辑发现,当超线程功能关闭时,此程序一旦运行就能够100%的利用CPU资源。而当超线程功能开启时(任务管理器出现两个逻辑CPU),此程序只能利用每个逻辑CPU60%左右的资源,结果很不理想,超线程开启比关闭时生成线程数低了近2000 Thread/S。
于是,我们又进行了另外一个试验,同时开三个进程运行该测试程序60秒,并且将三个进程所生成的线程相加与关闭超线程功能运行测试程序60秒的结果比较。结果是——开启超线程功能较关闭超线程功能平均提高了2000 Thread/S!
超线程开启
超线程关闭
这也许终于揭示了很多测试中开启超线程比关闭超线程后成绩不升反降的原因。很简单,现有一些测试程序仍停留在为一个CPU考虑问题的状态中,根本无力充分利用两个逻辑处理器的资源。这也恰恰对应了Intel关于超线程的技术描述与当前的现实困难——超线程是创新的技术——超线程需要软件的大量支持与优化!
为了测试使用方便,程序员用VB为我们做了一个Shell。这个外壳程序将起到同时操纵5个在进程中全力产生线程程序的作用。也就是说,同时生成5个进程,并且这5个进程中的每一个都将用尽全力生成尽量多的线程。在60秒的时间里,程序将测试系统5个进程生成的总线程数加起来除以60,得出系统平均每秒生成的线程数,这个数据与CPU的处理能力是成正比的。
经过编辑与程序员一致同意J,这款测试程序被命名为——驱动之家超级线程测试器。
此程序可以在http://www.mydrivers.com/dir62/d25088.ht被下载,大家可以用它来测试一下自己CPU的能力,有条件的朋友自然可以用来测试自己的超线程处理器,不过需要留意的是,考虑CPU缓存对结果的影响,建议大家取连续测试三次后的结果为准。
本文收录在
#快讯
- 热门文章
- 换一波
- 好物推荐
- 换一波
- 关注我们
-
微博:快科技官方
快科技官方微博 -
今日头条:快科技
带来硬件软件、手机数码最快资讯! -
抖音:kkjcn
科技快讯、手机开箱、产品体验、应用推荐...