“CPU在程序运行时cpu执行程序轨迹的是”什么

用 C 语言写个程序,运行时,cpu占用率一直保持50% - 简书
下载简书移动应用
写了18221字,被6人关注,获得了14个喜欢
用 C 语言写个程序,运行时,cpu占用率一直保持50%
好记性不如烂笔头 ——东西太多,脑子永远不够用
用 C 语言写个程序,运行时,cpu占用率一直保持50%
一看题目好眼熟!《编程之美》!然而已经记不清楚了,果然东西需要经常用经常积累,废话不多说重来一遍。
第一步:cpu占用率计算方法
既然想要让cpu占有率一直保持一定数值,就想要弄明白,cpu占用率是如何得到的
在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间,三者之和就是CPU的总时间,当没有用户进程、系统进程等需要执行的时候,CPU就执行系统缺省的空闲进程。从平常的思维方式理解的话,CPU的利用率就是非空闲进程占用时间的比例,即CPU执行非空闲进程的时间/ CPU总的执行时间。那么问题就很简单了,我们只要保持让cpu运行50,休息50就可以保证cpu的利用保持在50%了(忽略其他程序的影响)。运行到100%很简单,无限循环执行代码,不过应该会报错吧?先试试。
#include &stdlib.h&
int main(){
for(int i = 0 ;i&100;i++);
代码执行完毕,成功接近100%(话说死循环不报错的吗?)
代码执行结果
下面我们要做的就是控制好进程闲置的时间,让cpu的闲置时间等于非闲置时间,问题也就解决了。最笨的方法先填一个数字试试。
#include &unistd.h&
#include &stdlib.h&
int main(){
for(int i = 0 ;i&100;i++){};
sleep(50);
在mac下for循环后面需要加花括弧不然会报错,不知道为什么之前的不报错。
结果是没有反应。cpu:0,执行时间0。好吧好像太低估cpu能力了。还是科学一点的方案吧。用时钟记录运行开始时间,并控制runtime和idle的时间比例就可以了。虽然时钟会有一定的误差,但是理论上是可以行的通的。
#include &unistd.h&
#include &stdlib.h&
#include &stdio.h&
#include &time.h&
int main(){
int fulltime = 100;//总时间
int runtime = 50;//运行时间
time_start = clock();
while((clock()-time_start)&runtime){}
usleep(fulltime-runtime);
从运行结果中,可以看到并没有达到50%,根据我的猜测有以下几点影响:1、系统中还有其他运行程序,留给本程序的cpu肯定达不到100% 。从理论上来说本程序进行的更频繁,占用cpu也会更多,可以尝试把时间改到1,结果应该会更接近点2、时钟计算的误差,无论是clock()还是usleep()都存在误差。特别是睡眠的时钟会设置一个缓冲区域,之前之后醒来都可以。
如果想要做的更准确的话,应该实时监测cpu使用率,然后来控制程序运行,不过应该也做不到完全准确,毕竟cpu使用率只是一个统计值。
关于sleep()函数的单位很头疼,不同平台好像有不同的参数单位,可以自己尝试一下。
附上java代码以及运行结果
import java.lang.T
import java.text.SimpleDateF
public class cpu50 {
public static void main(String[] args) {
long time_
int fulltime = 100;
int runtime = 50;
while(true){
time_start = System.currentTimeMillis();
while((System.currentTimeMillis()-time_start)&runtime){}
Thread.sleep(fulltime-runtime);
}catch (InterruptedException e) {
Java运行结果
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:> 问题详情
●在计算机系统中, (7)是指在CPU执行程序的过程中,由于发生了某个事件,需要CPU暂时中止正在执行的
悬赏:0&答案豆
提问人:匿名网友
发布时间:
●在计算机系统中, (7)是指在CPU执行程序的过程中,由于发生了某个事件,需要CPU暂时中止正在执行的程序,转去处理这一事件,之后又回到原先被中止的程序,接着中止前的状态继续向下执行。(7)A.调用B.调度C.同步D.中断请帮忙给出正确答案和分析,谢谢!
权威推荐: & &
网友回答(共0条)
我有更好的答案
您可能感兴趣的试题
1●以下关于奇偶校验的叙述中,正确的是(8)&。(8)A.奇校验能够检测出信息传输过程中所有出错的信息位B.偶校验能够检测出信息传输过程中所有出错的信息位C.奇校验能够检测出信息传输过程中一位数据出错的情况,但不能检测出是哪一位出错D.偶校验能够检测出信息传输过程中两位数据出错的情况,但不能检测出是哪两位出错2●常见的内存由(9)构成,它用电容存储信息且需要周期性地进行刷新。(9) A. DRAM&&&B.SRAM&&&C.EPROM&&&D.Flash ROM
相关考试课程
请先输入下方的验证码查看最佳答案
图形验证:
验证码提交中……
您今天可查看的免费答案已达峰值,如需继续查看,请选择下列一种方式:
19.8 元开通超级会员享永久无限制查看特权。
1 元购买本题答案。以下试题来自:
单项选择题通常情况下,计算机在执行应用程序时,和CPU直接交换信息的部件是
A.硬盘B.内存C.光盘 D.软盘
为您推荐的考试题库
你可能感兴趣的试题
1A.不间断电源B.高精度电源C.变压器 D.稳压器2A.F1B.Ctrl+Alt+Delete
D.Delete3A.屏幕尺寸B.分辨率
C.亮度 D.对比度4A.用小刀刮去氧化层 B.用水清洗C.用硫酸清洗D.用专用清洁剂清洗5A.DOSB.Windows XP C.Linux D.Windows 95
热门相关试卷
最新相关试卷程序要向运行快。是cpu重要还是硬盘 还是内存?_显卡吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:1,733,597贴子:
程序要向运行快。是cpu重要还是硬盘 还是内存?收藏
电脑程序要不容易卡死,到底看的是cpu还是内存还是硬盘?
其实都很重要一无所有就是拼的理由[EXTRATERRESTRIAL ALIEN]
看程序倾向 大部分,是看硬盘能力的
每个程序都不一样…没法说,要具体但某个程序。
我用红星电源电脑就没卡过
程序本身也重要
要分程序的,有小程序有大程序,有吃CPU的程序也有吃内存的程序,不过要想程序不卡,首先硬盘要快,按照目前使用率最高的程序看来,都是QQ,迅雷,浏览器这类,主流CPU和内存基本不构成瓶颈,上块SSD是最佳选择
鲁大师说内存
个人觉得主要看硬盘吧
明显看程序啊,该卡的四路泰坦双路e7也跪
内存程序运行速度快,但用起来碰到计算量大的看U。读取写入程序看硬盘,比如LOL加载游戏。SSD几秒秒加。机械还要几十秒。
最大的限制不是硬件,而是软件部分利用率太低
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或(window.slotbydup=window.slotbydup || []).push({
id: '2081942',
container: s,
size: '1000,60',
display: 'inlay-fix'

我要回帖

更多关于 cpu执行程序轨迹 的文章

 

随机推荐