任务一:CPU的占用率固定在50%,为一条直线
在任务管理器的一个刷新周期内,CPU忙(执行程序)的时间和刷新要操纵CPU的使用率曲线,就需要使用CPU在一段时间内跑BUSY和IDEL两个不同的循环(loop),从而通过不同的时间比例,来调节CPU使用率。
BUSY LOOP可以执行空循环实现,idle 可以通过sleep()实现。
loop:
mov dx i
inc dx
mov i n
jl loop
假设运行的CPU是P4 2.4GHZ(2.4*10的9次方个时钟周期每秒),CPU每个时钟周期能执行两条代码以上,2400 000 000*2/5=960 000 000(循环/秒)。
int main()
{
for(;;){
for(int i=0;i<960 000 000; i++);
Sleep(1000);
}
return 0;
}
可以减少sleep/awake的频率,减少操作系统内核调度程序的干扰。
缺点:不能适用机器差异性,一旦换了一个CPU,又要重新估计。