CPU占用率是什么?

嵌入式Linux

共 2117字,需浏览 5分钟

 · 2021-05-25

这是昨晚上在朋友圈发的一个讨论

回答的问题很多

因为这个问题,我晚上也没早睡,就想把这个讲清楚

说这个问题之前我们先了解下时间片调度算法,因为用这个来讲比较清楚。

CPU可以执行任务,CPU给哪个进程执行,哪个进程就可以占用CPU去做它想做的事情,如果进程的优先级比较低,调度器每次调度的时候,就容易被高优先级的进程插队,这个进程实际上占有CPU的时间就会比较短。

什么是CPU是利用率呢?

先说下,这个指的是有操作系统的情况下,有多任务系统,那系统有一个调度室,调度室分配给进程的使用CPU时间T1,进程在被调度时,进程实际占用CPU时间T2,T2/T1就是这个进程的CPU占用率了。

如果我们这样写代码

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    printf("%d:Cpu start...\n",getpid());
    while(1)
    {
        sleep(1);
    }
    return 0;
}

这时候的CPU占用率是

如果我们代码修改成这样

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int i=0;
    printf("%d:Cpu start...\n",getpid());
    while(1)
    {
        for(i=0;i<100000000;i++)
        {}
        sleep(1);
    }
    return 0;
}

CPU 占用率如下

如果我把代码修改成这样

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int i=0;
    printf("%d:Cpu start...\n",getpid());
    while(1)
    {
        for(i=0;i<100000000;i++)
        {}
        //sleep(1);
    }
    return 0;
}

CPU占用率如下:

关于这个问题,还有很多回复

至于能不能出现超过100%的CPU占用率,在多核的情况下肯定是可以的,至于单核是不会出现这个情况的


欢迎一起交流





推荐阅读:

专辑|Linux文章汇总
专辑|程序人生
专辑|C语言
我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~


浏览 9
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报