编写程序 控制cpu占用率
2011-10-12 11:42
274 查看
近几天看到一本名为《编程之美》的书, 想在这里和大家分享一下所学到的知识。如果大家有更好的建议和解决办法,还请多多指教。
最简单的要求:编写一个程序,控制CPU的占用率为50%.
考虑: 任务管理器每一秒钟刷新一次,要在这一秒钟内,使CPU的平均使用时间和空闲时间各占50%. 而不是让CPU使用1秒钟,空闲一秒钟。这样的话任务管理器出现的CPU的使用图像会是忽高忽低。windows的调度时间片为10ms, 所以在编写程序的时候就可以让cpu不停的工作10ms, 然后空闲10ms, 空闲操作通过sleep(10)来实现。这样最后任务管理器在刷新CPU占用率的时候就会得到这个一秒钟内的CPU的平均使用率。显示出50%的水平。
通过空循环,来让cpu保持繁忙的工作状态,通过sleep使cpu空闲。
机器指令最接近的是汇编语言。
空的for 循环,换成汇编语言是大概5句,现在的CPU可以在一个时钟周期执行两个机器指令,相当于执行两个汇编语句。
考虑到我的电脑的主频是2.0G,所以应该是每秒可以执行 2000000000*2/5=800000000 条空循环。 然而不能让机器执行一秒的空循环,应该分时间片的执行。一个时间片10ms, 所以执行空循环应该为8000000次。
代码:
执行的效果如图:
实际执行效果并不是很好,因为操作系统目前运行的程序并不止我们的程序,还有很多其他的操作系统的组件等。同时,操作系统还有进行 IO操作,内核调度等操作。
但是还有其他的办法可以解决,下一篇将说第二种解决方法。
最简单的要求:编写一个程序,控制CPU的占用率为50%.
考虑: 任务管理器每一秒钟刷新一次,要在这一秒钟内,使CPU的平均使用时间和空闲时间各占50%. 而不是让CPU使用1秒钟,空闲一秒钟。这样的话任务管理器出现的CPU的使用图像会是忽高忽低。windows的调度时间片为10ms, 所以在编写程序的时候就可以让cpu不停的工作10ms, 然后空闲10ms, 空闲操作通过sleep(10)来实现。这样最后任务管理器在刷新CPU占用率的时候就会得到这个一秒钟内的CPU的平均使用率。显示出50%的水平。
通过空循环,来让cpu保持繁忙的工作状态,通过sleep使cpu空闲。
机器指令最接近的是汇编语言。
空的for 循环,换成汇编语言是大概5句,现在的CPU可以在一个时钟周期执行两个机器指令,相当于执行两个汇编语句。
考虑到我的电脑的主频是2.0G,所以应该是每秒可以执行 2000000000*2/5=800000000 条空循环。 然而不能让机器执行一秒的空循环,应该分时间片的执行。一个时间片10ms, 所以执行空循环应该为8000000次。
代码:
#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { long n=8000000; int i=0; while(1) { for(i=0;i<n;i++) { // idle } sleep(10); } system("PAUSE"); return 0; }
执行的效果如图:
实际执行效果并不是很好,因为操作系统目前运行的程序并不止我们的程序,还有很多其他的操作系统的组件等。同时,操作系统还有进行 IO操作,内核调度等操作。
但是还有其他的办法可以解决,下一篇将说第二种解决方法。
相关文章推荐
- 编写程序 控制cpu占用率-4 绘制CPU使用率的正弦曲线
- 编写程序 控制cpu占用率2
- 编写程序 控制cpu占用率-3
- 【转】Linux系统下使用程序控制CPU占用率、内存占用率、网络带宽占用率的方法
- 写程序+控制cpu占用率-4+绘制CPU使用率的正弦曲线2+C#+实现
- 写程序 控制cpu占用率-4 绘制CPU使用率的正弦曲线2 通过C#指定线程运行的 CPU
- VBS监控CPU的使用率(如占用率一直维持在80%超过30秒则运行某程序)
- 使用.Net编写Windows程序,对于窗体控制常见项目
- 《编程之美》学习笔记--控制CPU占用率
- python编写微信远程控制电脑的程序
- 记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
- C++输出回文数用循环控制语句编写程序,完成表达式的计算
- centos 下持续输出某个程序的cpu占用率和内存占用率的脚本
- 如何控制一个进程CPU的占用率
- 控制CPU占用率曲线为正弦曲线
- C 语言编写windows服务程序的控制程序
- 编写VB打印控制程序
- 问题:利用 C++的各种控制语句编写一个万年历程序。 要求:显示任何年份的日历,日历以月份顺序排列,每月以星期顺序排列,类似于一 般挂历上的格式。
- delphi 编写控制IP地址修改程序
- 编写在Android的Linux系统中直接运行的可执行程序 - 检测CPU能力