当前位置: 首页 > news >正文

Linux的进程优先级调度学习笔记

Linux的进程优先级数值范围

范围 -20 到 19,数值越大优先级越低

示例代码

下面是一个简单的 C 语言示例,它演示了如何在 Linux 下修改进程的优先级并观察调度影响。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/resource.h>
#include <sys/time.h>

int main(int argc, char *argv[]) {
    if (argc != 2) {
        fprintf(stderr, "用法: %s <优先级 (-20 到 19)>\n", argv[0]);
        return 1;
    }

    int priority = atoi(argv[1]);
    if (priority < -20 || priority > 19) {
        fprintf(stderr, "错误: 优先级范围应在 -20 到 19 之间\n");
        return 1;
    }

    // 设置进程的优先级
    if (setpriority(PRIO_PROCESS, 0, priority) == -1) {
        perror("setpriority 失败");
        return 1;
    }

    // 获取并打印修改后的优先级
    int new_priority = getpriority(PRIO_PROCESS, 0);
    printf("进程的优先级已设置为: %d\n", new_priority);

    // 记录开始时间
    struct timeval start, end;
    gettimeofday(&start, NULL);

    // 模拟计算任务
    for (volatile long i = 0; i < 1000000000; i++);

    // 记录结束时间
    gettimeofday(&end, NULL);

    // 计算运行时间
    double elapsed_time = (end.tv_sec - start.tv_sec) +
                          (end.tv_usec - start.tv_usec) / 1000000.0;
    printf("进程运行时间: %.6f 秒\n", elapsed_time);

    return 0;
}

示例代码分析

没啥好分析的,看注释就行了。

交叉编译

将代码文件复制到Ubuntu中:

在这里插入图片描述
然后执行下面的命令进行编译:

arm-buildroot-linux-gnueabihf-gcc -o Priority_demo Priority_demo.c

在这里插入图片描述
复制到网络文件目录中备用:
在这里插入图片描述

上板测试

打开串口终端→打开开发板→挂载网络文件系统:

mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt

执行测试程序

/mnt/process_priority/Priority_demo 10

在这里插入图片描述

/mnt/process_priority/Priority_demo 5
/mnt/process_priority/Priority_demo 4

在这里插入图片描述

结果分析

由于咱们的开发板上的Linux系统并没有多少进程在运行,所以改变进程优先级对运行时间影响不大。

http://www.dtcms.com/a/99040.html

相关文章:

  • 智慧运维平台:赋能未来,开启高效运维新时代
  • React 中props的不可变性,如何在组件中处理需要修改props的情况?
  • 每日一题 MySQL基础知识----(三)
  • 饮食 “妙方”,助力进行性核上性麻痹调养
  • 学校智慧路灯的主要功能有哪些?
  • Python第六章19:函数的多种参数类型对比
  • 【嵌入式学习3】零散知识点
  • 【C++篇】类与对象(上篇):从面向过程到面向对象的跨越
  • 【8】递归之经典题型总结
  • Redis6数据结构之String类型
  • DeepSeek本地部署(linux)
  • 零基础驯服GitHub Pages
  • Linux进程管理之子进程的创建(fork函数)、子进程与线程的区别、fork函数的简单使用例子、子进程的典型应用场景、父进程等待子进程结束后自己再结束
  • Elasticsearch 高级
  • 分库分表策略
  • Flutter:切换账号功能记录
  • 【算法】动态规划:背包问题
  • HTTP---基础知识
  • python实现股票数据可视化
  • 【电子通识】案例:为什么电子产品制造过程中使用马克笔在FFC/FPC连接器打点进行标记
  • 去噪算法大比拼
  • 手撕string
  • 【C#】ForEach vs foreach
  • swift-7-汇编分析闭包本质
  • 蓝桥杯省赛 棋盘 3533 二维差分+二维前缀和
  • Ruoyi-Vue拆解:优雅实现Vue页面过渡动画
  • 消息队列篇--通信协议篇--SSL/TLS协议
  • 【教学类-58-16】黑白三角拼图14——黑白三角图连接部分的白线(2*2宫格)
  • AI大模型底层技术——Multi-LoRA Combination Methods
  • 【免费】2007-2019年各省地方财政科学技术支出数据