cpu利用率怎么计算

比如说这道题
怎么做啊 。。。。。。。
(10)在*作系统中引入并发可以提高系统效率。若有两个程序A和B,A程序执行时所作的工作按次序需要用:CPU:10秒;DEV1:5秒;DEV2:10秒;CPU:10秒。B程序执行时所作的工作按次序需要用DEV1:10秒;CPU:10秒;DEV2:5秒;CPU:5秒;DEV2:10秒。如果在并发环境下执行A、B两个程序,假设A程序先执行,则CPU的利用率为
A)99%
B)89%
C)79%
D)69%
答案 B

方法1:
使用cpu的处理能力基准计算实时cpu占用率
具体描述:
(1)
在rtos系统启动前,
使用tick中断测试cpu的处理能力基准
cpuperformancebase;
(2)
在系统进入运行后,
使用空闲任务执行与测试cpu处理能力基准完全相同的算法,
得到rtcpuperformance.
(3)
周期地计算cpu占用率,
并清除rtcpuperformance的值,
一般每秒钟计算一次:
realtime
cpu
load
=
1
-
(rtcpuperformance/cpuperformancebase)
*
100%
评价:
这个算法只适用于工控,
电信等对不需要使cpu进入掉电保护模式的领域.
方法2:
在tick中断中对rtos中的任务进行采样
具体描述:
(1)
系统进入运行后,
每次tick中断发生时,
采样一下当前正在执行的任务,
如果cpu处于halt态,
累加halttimes
(2)
周期性地计算cpu占用率,
一般每秒钟计算一次,
并清除halttimes:(tickintfrequance表示tick中断的发生频率)
realtime
cpu
load
=
halttimes
/
tickintfrequance
某个任务对cpu占用率的贡献
=
一个周期内该任务被采样到的次数
/
tickintfrequance
*
100%
评价:
这个算法适用于对cpu占用率精度要求不高的消息电子产品.
方法3:
精确计算每个任务对cpu占用率的贡献
具体描述:
(1)
除tick中断外,另开一个比tick中断频率快若干倍的周期中断(就叫auxtimer中断吧),
这个中断只对一个计数器执行一次累加.
(2)
在os每次执行任务切换时读取该计数器的值(auxtimer),
并保存到tcb中,
比如,
从任务task1切换到任务task2,
算法如下:
task1,
换出动作:
task1的结束运行时间
=
auxtimer的当前值
task1的总运行时间
=
task1的总运行时间
+
task1的结束运行时间
-
task1的开始运行时间
task2,
换入动作:
task2的开始运行时间
=
auxtimer的当前值
(以上算法中没有考虑数字回绕,
在工程实现时应当考虑,
发生回绕后任务的结束运行时间小于任务的开始运行时间.
(3)
周期性地计算cpu占用率,
一般每秒钟计算一次,
并清除每个任务的总运行时间,
下面的公式中,
一个周期内的总时间等于auxtimer周期除以tick周期得到的倍数:
某个任务对cpu占用率的贡献
=
一个周期内该任务的总运行时间
/
一个周期内的总时间
realtime
cpu
load
=
所有任务的cpu占用率之和
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-09

CPU利用率和CPU使用率是相同概念,计算方法如下:

    需要两个进程,一个为idle进程;一个为统计进程。 

    idle进程在系统空闲时执行,每执行一次为一个计数器count加一。统计进程每秒执行一次负责计算CPU使用率,并把count清零。 

    首先要求出没有其它进程时count一秒中内由零开始的累加值max,这通常在系统初始化时完成。有其它进程时idle进程执行的次数减少,count的累加值也小于max。

    统计进程计算CPU使用率时采用以下公式: 
    usage=(1-count/max)*100。


再来介绍下CPU使用率:

    CPU使用率其实就是运行的程序占用的CPU资源,表示机器在某个时间点的运行程序的情况。

    使用率越高,说明机器在这个时间上运行了很多程序,反之较少。使用率的高低与CPU强弱有直接关系。现代分时多任务操作系统对 CPU 都是分时间片使用的。

第2个回答  推荐于2019-09-12

B、89%;

计算方法如下:

CPU时间=user+system+nice+idle+iowait+irq+softirq

除idle外,cpu均被有效利用,取两个采样点,于是有:

cpuusage=[(user_2+sys_2+nice_2+iowait_2+irq_2+softirq_2)-(user_1+sys_1+nice_1+iowait_1+irq_1+softirq_2)]/(total_2-total_1)*100%

或者:

cpu usage=(idle2-idle1)/(total_2-total_1)*100%

拓展资料

CPU使用率其实就是你运行的程序占用的CPU资源,表示你的机器在某个时间点的运行程序的情况。使用率越高,说明你的机器在这个时间上运行了很多程序,反之较少。使用率的高低与你的CPU强弱有直接关系。现代分时多任务操作系统对 CPU 都是分时间片使用的。

查看进程

svchost.svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。

一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上 。

本回答被网友采纳
第3个回答  2006-04-15
假设一段时间total内,该任务的运行时间为idle,cpu利用率的计算公式为(total-idle)%total。 这一种方法实现起来很简单,但是它只能算得整个系统的cpu使用情况,不能得到单个任务 的cpu使用情况!同时它会使cpu满负荷工作。本回答被提问者采纳
第4个回答  2020-03-31
这个不用自己计算,现成的。
  按Ctrl+Alt+Del,出来任务管理器,选[性能],就能看到CPU的使用率。