Windows下能用:
2.作业(Job)-限制进程的CPU使用率,详细请查看《Windows核心编程》第五章。由于多任务的实现,Windows在某一时点只运行一个程序,这个时段大约是20毫秒,然后切换到另一个程序,使得"同时"执行多个程序成为可能。所以,所谓CPU消耗就是一个时间函数。具体来看看例子:某个应用程序以10秒为周期使用了5秒钟的CPU时间,那么,平均CPU使用率就是50%。以24小时为周期,就是12小时,如此等等。所以你可以以百分比为度量单位限制CPU使用。技巧就在于选择合适的周期。
执行一个程序,调用CreateProcess激活程序产生一个进程(PDB),系统为此进程建立一个主执行线程(primary thread),执行线程(TDB)才是CPU时间的分配对象。进程拥有优先权等级(priority class),可以在CreateProcess 参数中的dwCreationFlags设定,dwCreationFlags表示创建进程的优先级类别(idle、normal、high、realtime)和进程的类型(控制台进程、调试进程等)。执行线程基本上继承自其父进程的优先权等级,然后再加上CreateThread参数中的dwCreationFlags微调差额(-2~+2)。获得的结果便是执行线程的base priority,范围从0~31数值越高优先权越高。
RAM可以alloc或者memset来申请块,但CPU的运行机制却跟RAM完全不同,实现跟RAM那样精确的控制实际上不行的。
现代的OS都是分时的(除了实时系统),仍受限于OS的分时性。建议不了解的多看看操作系统原理,个人可以做试验去验证
[ 本帖最后由 xiaoshancom 于 2007-8-5 14:00 编辑 ] |