市面上有很多CPU降温软件,原理就是下面的。
回复人: WuHeHai(河海) ( ) 信誉:100 2001-8-5 0:35:56 得分:0
过去在哪个杂志看过:好象是让CPU空闲得时候利用起来,紧忙的时候减慢指令的执行,记得不太清楚了!
不是nop,是Halt指令,CPU空转也要消耗能量的,不过做起来很多的问题要解决,首先好像要有Ring0的特权?原理是知道的,程序是写不出来的。:(
回复人: eDRIVE(动感超人) ( ) 信誉:100 2001-8-6 0:08:26 得分:0
工欲善其事,必先利其器,首先应该明白整个原理和过程:
在Win9X、WinNT/2000中,执行的最小单位是线程。线程的状态有两种:运行、阻塞。处于阻塞态的线程由于条件不满足而无法继续执行,所以在系统的任务调度中就不再分配CPU时间片;如果在一段临界时间里,所有的线程都处于阻塞态,并且没有外部中断,则此时操作系统进入Idle状态;如果此时有线程恢复运行,或是有外部中断,则系统退出Idle状态。由于处于Idle状态的系统没有任何需要执行的线程代码,所以此时要么是在空循环(NOP)等待,要么使CPU暂停(HLT)。当然,空循环(NOP)对于CPU来说还是在执行指令,所以CPU仍旧在全速运行;而暂停(HLT)指令对于CPU来说,会使CPU中的许多部分停止工作,CPU处于一种半睡眠状态,此时的功耗就小得多,当然产生的热量也少很多。当系统退出Idle状态时,CPU会重新恢复工作状态,这个过程非常迅速。
其实在Win2000中已经有这个功能,PID为0的进程便是Idle处理进程,已经拥有了HLT功能,而Win9X没有。但是有一点需要知道:只有在Ring0的状态下执行HLT才会有效,因为CPU会屏蔽所有非特权级的特权指令,当然HLT也是其中之一。