深入解析Linux进程优先级机制

文章目录

    1. 进程优先级基本概念
    • 1.1 是什么?
    • 1.2 优先级 VS 权限
    • 1.3 为什么存在优先级
    1. 如何查看系统进程
    1. PRI && NI
    1. 如何查看优先级
    1. 竞争、独立、并行、并发

1. 进程优先级基本概念

1.1 是什么?

进程优先级是操作系统用来决定哪个进程优先获得CPU资源的机制。优先级高的进程会被优先调度执行,确保系统资源合理分配。

1.2 优先级 VS 权限

简单来说,权限是能不能的问题,优先级时已经能了,先后的问题

a.优先级
用于决定任务或资源的处理顺序,通常与时间、性能或紧急程度相关
b.权限
控制对系统资源的访问能力,属于安全范畴

1.3 为什么存在优先级

核心原因在于资源不足,CPU数量有限,设置优先级就设置了某种资源的分配顺序

优化效率、平衡公平性,或在特定目标下实现资源最大化利用。


2. 如何查看系统进程

bash 复制代码
//输入
ps -l

3. PRI && NI

3.1. PRI(进程优先级)

定义表示进程的实际调度优先级,由内核动态计算得出,数值越小优先级越高(范围通常为0~139)。

计算公式PRI(new) = PRI(old) + nice 其中PRI默认为80,NI为用户设置的优先级偏移值。

特点

调度器根据PRI决定进程获取CPU资源的顺序。

不可直接修改,其值随NI的变化而动态调整。

3.2. NI(Nice Value)

定义 :用户可调整的进程优先级偏移值,范围通常为-20~19。

作用

NI > 0:降低优先级(如NI=5 → PRI升高为85)。NI < 0:提升优先级(如NI=-5 → PRI降低为75)。NI=0:保持默认优先级(PRI=80)。

调整方式

启动时设置

bash 复制代码
nice -n 5 ./script.sh  # 以NI=5启动进程

运行时修改

bash 复制代码
renice -n -5 -p 1234  # 将PID=1234的进程NI改为-5

权限限制

普通用户仅能提升NI值(降低优先级),降低NI值(提升优先级)需root权限。

3. PRI与NI的关系示例

NI值 PRI计算结果(Base=80) 实际优先级效果
-20 80 + (-20) = 60 最高优先级
0 80 + 0 = 80 默认优先级
19 80 + 19 = 99 最低优先级

3.4. 查看进程优先级

bash 复制代码
ps -eo pid,comm,ni,pri  # 列示进程的PID、命令、NI、PRI

输出示例:

复制代码
PID   COMMAND   NI   PRI
1234  python    0    80
5678  backup    10   90

3.5. 使用场景

  • 高优先级任务 :实时数据处理(如NI=-10)。

  • 低优先级任务 :后台备份任务(如NI=10)。

  • 系统稳定性:避免普通用户抢占关键系统资源。


4. 如何查看优先级

基础用法:直接在终端输入:

bash 复制代码
top

常用命令行参数

参数 功能 示例
-d <秒> 刷新间隔时间 top -d 5(每 5 秒刷新)
-p <PID> 监控特定进程 top -p 1234
-u <用户名> 显示指定用户的进程 top -u root
-n <次数> 刷新次数后退出 top -n 3(刷新 3 次后退出)
-b 批量模式(可重定向输出) top -b > log.txt

5. 竞争、独立、并行、并发

a. 竞争(Race Condition)

多个进程或线程同时访问共享资源,且最终结果取决于执行顺序。

b. 独立(Isolation)

进程或线程之间互不干扰,各自拥有独立的资源(如内存空间)。Linux中每个进程有独立的虚拟地址空间

c.并行(Parallelism)

多任务真正同时执行,依赖多核CPU或分布式系统。

d.并发(Concurrency)

多任务交替执行,通过时间片轮转模拟"同时"效果。单核CPU通过进程/线程切换实现并发。

相关推荐
点亮一颗LED(从入门到放弃)2 小时前
设备模型(10)
linux·服务器·前端
Web极客码2 小时前
使用VPS主机进行数据分析的主要优势
linux·windows·vps主机
九思x2 小时前
Linux 系统安装 JDK 17
linux·运维
HIT_Weston3 小时前
77、【Ubuntu】【Hugo】搭建私人博客:Detached HEAD
linux·运维·ubuntu
再睡一夏就好3 小时前
多线程并发编程核心:互斥与同步的深度解析及生产者消费者模型两种实现
linux·运维·服务器·jvm·c++·笔记
飞Link3 小时前
【MySQL】Linux(CentOS7)下安装MySQL8教程
linux·数据库·mysql
llilian_164 小时前
时间基准的行业赋能者——北斗卫星授时同步统一设备应用解析 时统 授时同步设备
服务器·网络·单片机
随祥4 小时前
网络开源工具
linux
码农胖虎-java4 小时前
技术深析:Delayed ACK与Nagle算法的“相爱相杀”
运维·服务器·网络