首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Linux】进程概念(四):进程优先级调整

【Linux】进程概念(四):进程优先级调整

作者头像
我不是呆头
发布2025-12-20 14:00:42
发布2025-12-20 14:00:42
20
举报

引言

本文深入解析了 Linux 进程优先级的核心原理,阐述了优先级作为 CPU 资源分配顺序的本质意义。文章详细介绍了使用 ps -lps -al 查看进程状态的方法,重点剖析了 PRI(优先级)与 NI(Nice值)的计算公式 PRI(新) = PRI(旧) + NI 及其在内核调度中的作用,并演示了通过 toprenice 命令调整 Nice 值(范围 -20 至 19)的实操步骤。最后,文章梳理了进程竞争性、独立性以及并行与并发的区别,旨在帮助读者构建完整的 Linux 进程调度知识体系。

一、基本概念

优先级实际上就是获取某种资源的先后顺序,而进程优先级实际上就是进程获取CPU资源分配的先后顺序,就是指进程的优先权(priority),优先权高的进程有优先执行的权力。

为什么存在进程的进程优先级呢? 优先级存在的主要原因就是资源是有限的,而存在进程优先级的主要原因就是CPU资源是有限的,一个CPU一次只能跑一个进程,而进程是可以有多个的,所以需要存在进程优先级,来确定进程获取CPU资源的先后顺序。

二、查看系统进程

代码语言:javascript
复制
ps -l

包含重要信息解读:

  1. UID:代表执行者的身份。
  2. PID:代表这个进程的代号。
  3. PPID:代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号。
  4. PRI:代表这个进程可被执行的优先级,其值越小越早被执行
  5. NI:代表这个进程的nice值

三、优先级的改变

3.1 示例查看
代码语言:javascript
复制
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>

int main()
{
  while(1)
  {
    printf("i am process,my PID:%d,my PPID:%d\n",getpid(),getppid());
    sleep(2);
  }

  return 0;
}
在这里插入图片描述
在这里插入图片描述

在 Linux 中,每个 SSH 连接都会被分配一个独立的伪终端(如 pts/0pts/1),ps -l 命令默认的作用域仅限于当前终端,因此具有隔离性,无法看到其他 SSH 窗口的进程;而当你使用 ps -al 时,参数 -a 指示系统显示所有终端下的进程,打破了窗口限制,所以你就能在新窗口成功“跨界”查看到原窗口运行的 proc 了。


3.2 PRI和NI
  1. PRI表示越小就越快被执行,那么加入NI(nice)值后会变成PRI(新)=PRI(旧)+NI,注意这个旧的PRI为初始值一直不变,比如初始值PRI为80,NI为10,那么运算后,新PRI为80+10为90,那么下次计算时,PRI仍然使用初始值进行计算,比如下一次NI为-10,那么运算后,新PRI为80-10为70
  2. 这样NI(nice)为负数,那么那么该程序优先级的值的会变小,即进程优先级会变高,也就越快被执行

即在linux中,用户调整进程优先级的方式是调整nice值

  1. 既然我用户可以调整优先级,那么我可不可以将nice设置的非常小,然后大大提高我们进程的优先级?
  2. 不可以,linux本身是有调整优先级的调度器的,调度器决定哪一个进程被优先调度,即由调度器确定进程的优先级,调度器使用调度算法极为合理的安排进程的优先级,提高系统性能,所以linux不想让用户过多的参与优先级的调整,所以限定我们在一定范围进行调正, 即nice值对应[-20,19],一共40个值,那么当PRI为80时,那么对应优先级就为[60,99]

3.3 top

进程优先级的调整需要使用su将普通用户切换到root用户,因为调整进程优先级需要toot权限 su root进行提权

top命令就相当于Windows操作系统中的任务管理器,它能够动态实时的显示系统当中进程的资源占用情况。

在这里插入图片描述
在这里插入图片描述

使用top命令后按“r”键,会要求你输入待调整nice值的进程的PID。

在这里插入图片描述
在这里插入图片描述

输入进程PID并回车后,会要求你输入调整后的nice值。

在这里插入图片描述
在这里插入图片描述

输入nice值后按“q”即可退出,如果我们这里输入的nice值为10,那么此时我们再用ps命令查看进程的优先级信息,即可发现进程的NI变成了10,PRI变成90(80+NI)。

在这里插入图片描述
在这里插入图片描述

3.4 renice

使用renice命令,后面跟上更改后的nice值和进程的PID即可。

注意:那么加入NI(nice)值后会变成PRI(新)=PRI(旧)+NI,注意这个旧的PRI为初始值一直不变,那么下次计算时,PRI仍然使用初始值进行计算。

四、四个重要概念
  1. 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便有了优先级。
  2. 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
  3. 并行: 多个进程在多个CPU下分别同时进行运行,这称之为并行。
  4. 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

总结

综上所述,进程优先级是操作系统处理资源竞争、实现高效调度的关键机制,用户虽不能直接决定进程的最终优先级,但可以通过调整 Nice 值在限定范围(-20 到 19)内间接影响 PRI 值,从而改变进程获取 CPU 的权重。理解“基准 PRI 不变”的计算逻辑以及掌握 pstoprenice 等工具的使用,能让我们更灵活地管理系统资源;同时,厘清并行与并发的概念,对于深入理解 Linux 内核如何在多任务环境下保障进程的独立性与高效推进具有重要的理论价值。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
    • 一、基本概念
    • 二、查看系统进程
    • 三、优先级的改变
      • 3.1 示例查看
      • 3.2 PRI和NI
      • 3.3 top
      • 3.4 renice
      • 四、四个重要概念
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档