程序控制CPU曲线
通过任务管理器我们可以看到现在我们的电脑中CPU以及内存的使用率,CPU的使用是由现在所运行的程序占用。但是我们有没有想过如何自己写一个程序去控制我们的CPU占用率呢?也许这是一个比较困难的事情,因为我们首先想到的是如何从底层去控制CPU。难道它真的有那么困难吗?也许不是,下面让我们去分析如何使我们的CPU显示直线和正弦曲线。
首先,我们需要知道什么是CPU使用率。
CPU使用率:CPU忙的时间与刷新周期时间的比率。
一:实现CPU显示一条直线
任务管理器每一秒钟刷新一次,要在这一秒钟内,使CPU的平均使用时间和空闲时间各占50%. 而不是让CPU使用1秒钟,空闲一秒钟。这样的话任务管理器出现的CPU的使用图像会是忽高忽低。windows的调度时间片为10ms, 所以在编写程序的时候就可以让cpu不停的工作10ms, 然后空闲10ms, 空闲操作通过sleep(10)来实现。这样最后任务管理器在刷新CPU占用率的时候就会得到这个一秒钟内的CPU的平均使用率。显示出50%的水平。
通过空循环,来让cpu保持繁忙的工作状态,通过sleep使cpu空闲。
机器指令最接近的是汇编语言。
空的for 循环,换成汇编语言是大概5句,现在的CPU可以在一个时钟周期执行两个机器指令,相当于执行两个汇编语句。
考虑到我的电脑的主频是1.0G,所以应该是每秒可以执行 1000000000*2/5=400000000 条空循环。 然而不能让机器执行一秒的空循环,应该分时间片的执行。一个时间片10ms, 所以执行空循环应该为4000000次。
代码如下:
package cpuWaveForm; /** * 控制CPU波形为直线的线程 * @author Andrew * */ public class LineFormThread extends Thread{ int i=0; public void run(){ while(true){ for(i=0; i<400000000; i++) ; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } }
上面的程序在我的电脑上运行后通过 资源管理器 查看
二:实现CPU显示一条正弦曲线
若实现CPU显示一条正弦曲线,我们可以写一个程序让CPU工作一段时间,Sleep一段时间以便让CPU显示曲线。
代码如下:
package cpuWaveForm; /** * 控制波形线程 * @author Andrew * */ public class WaveFormThread extends Thread{ final double SPLIT = 0.01;//角度分割 final int COUNT = (int)(2/SPLIT); final double PI = Math.PI; final int INTERVAL = 200; long[] busySpan = new long[COUNT]; long[] idleSpan = new long[COUNT]; int half = INTERVAL/2; double radian = 0.0; public void run(){ for(int i=0; i<COUNT; i++){ busySpan[i] = (long)(half+(Math.sin(PI*radian)*half)); idleSpan[i] = INTERVAL - busySpan[i]; radian+=SPLIT; } long startTime = 0; int j=0; while(true){ j = j%COUNT; startTime = System.currentTimeMillis(); while(System.currentTimeMillis()-startTime<busySpan[j]); try { Thread.sleep(idleSpan[j]); j++; } catch (InterruptedException e) { e.printStackTrace(); } } } }
以上代码在我的电脑上的运行结果为:
相关推荐
标题“让CPU曲线听你指挥”暗示了我们讨论的主题是关于如何通过编程或者特定的工具来管理和控制计算机的中央处理器(CPU)资源,使得CPU的使用率按照预设的模式运行,比如设置CPU的占用曲线。这样的技术在系统优化、...
在C#编程中,模拟CPU使用率以呈现正弦曲线是一项技术挑战,它涉及到多线程、性能计数器以及对计算机系统资源的控制。这个项目可能是为了测试系统的响应能力或者进行性能分析。下面我们将详细探讨相关的知识点。 1. ...
当我们谈论“CPU使用率曲线图”时,我们实际上是指一个图表,该图表显示了CPU在不同时间点上的工作负载情况,帮助用户理解系统性能、监控潜在问题以及优化资源分配。 CPU使用率通常以百分比表示,100%表示CPU正在...
在这个项目中,开发者通过WPF创建了一个能够实时动态显示CPU使用率的曲线图,这涉及到以下几个关键点: 1. **数据绑定**:WPF的核心特性之一是数据绑定,它允许UI元素与后台数据模型进行联动。在本例中,CPU使用率...
这个"模拟CPU效率曲线图"的项目是利用MFC的一个实例,它展示了如何自定义控件来绘制图形,特别是模拟CPU的性能效率变化。下面我们将详细探讨相关的知识点。 1. **MFC自绘控件**: MFC提供了许多预先定义的控件,如...
本篇文章探讨了一项技术挑战:如何编写一个程序,使用户能够控制Windows任务管理器中的CPU占用率。这项技术不仅涉及对CPU工作原理的基本理解,还涉及到编程语言、操作系统内核以及计算机体系结构等多个方面的知识。...
在WPF应用中,我们可以通过模拟这样的图表来实时展示系统或特定进程的CPU利用率。 要实现这一功能,我们需要以下关键知识点: 1. **数据绑定**:WPF的核心特性之一是数据绑定,它允许UI元素与应用程序中的数据模型...
实验中提到,在多核环境下可能无法如预期那样实现特定的CPU占用率曲线。 8. **正弦曲线模拟**: 实验中还涉及到了通过sin函数来模拟CPU占用率变化,使其呈现正弦波形。这需要根据sin函数的值来动态调整繁忙和空闲...
2. **控制机构**:PLC(如Q02HCPU和Q172CPUN)负责处理输入信息,运行拟合算法,并向执行机构发送指令。 3. **执行机构**:两台伺服电机及其配套的伺服放大器构成执行机构,负责按照PLC发送的指令精确地移动双轴平台...
6. **实时更新**:如果曲线图需要实时更新,如显示传感器数据的变化,需要在STM32的主循环中定时刷新帧缓冲区。这需要合理安排任务优先级和实时性,避免因CPU资源占用过高导致其他功能受影响。 7. **性能优化**:...
主板CPU风扇控制程序是计算机硬件系统中的一个重要组成部分,它的主要任务是监控并调整CPU风扇的转速,以确保CPU在适宜的温度范围内运行。源代码是程序员用编程语言编写的原始指令集合,它是软件的基础,可以被编译...
在这个项目中,单片机接收DS18B20传感器发送的温度数据,并处理这些信息以控制显示和调节温度。 DS18B20是 Dallas Semiconductor(现Maxim Integrated)推出的一种数字温度传感器,具有精度高、接口简单等特点。它...
8. **图形化显示**:为了直观地展示CPU使用状况,项目可能使用图表控件,如VB的`Chart`控件,将数据实时绘制成曲线图,使用户能够清晰看到CPU的负载变化。 9. **多线程编程**:为了实时更新CPU使用情况,代码可能...
至于标签中的“任务管理器曲线”,这可能意味着该程序可以用于模拟或分析操作系统任务管理器中显示的性能指标,例如CPU使用率或内存占用情况。波动曲线则表明程序能有效地展示数据的动态变化,不仅限于直线运动,还...
本实验报告主要探讨了如何通过编程手段在Windows环境下控制CPU占用率,分为两个部分:固定在50%的CPU占用率和模拟正弦曲线的CPU占用率。 首先,我们了解CPU占用率的基本概念。CPU占用率是衡量处理器在一段时间内...
1. **夹持准备**:T-CPU先根据预设的程序控制夹钳到达待处理物料的位置,这一阶段可能包括了路径规划、速度控制以及接近检测。 2. **夹持动作**:到达目标位置后,T-CPU会控制夹钳进行闭合,确保物料被安全稳定地...
【CPU监控程序VB版】是一款基于Visual Basic (VB)开发的实用工具,它能够实时监控计算机的中央处理器(CPU)使用情况,展示CPU利用率,并通过图形化的方式呈现使用率变化的曲线,帮助用户了解系统性能状况。这个程序的...
【12864显示DS18B20温度曲线】是一个嵌入式系统项目,主要涉及两个核心组件:12864液晶显示屏和DS18B20数字温度传感器。这个项目的目标是实时地在12864液晶屏上绘制DS18B20传感器测得的温度变化曲线。 1. **12864...
标题中的“用程序使你的CPU占用率正弦变化”意味着我们将探讨如何通过编写特定的程序来使计算机的中央处理器(CPU)的使用率按照正弦函数的规律进行波动。正弦函数是一种周期性数学函数,它在计算机科学中有多种应用...
8. **中断与时间管理**:在连续绘制曲线时,可能需要通过中断来控制绘制过程,防止过度占用CPU。同时,理解定时器的使用对于控制绘制速度和实现动画效果至关重要。 9. **代码实现**:编写驱动LCD12864的程序,通常...