深入解析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通过进程/线程切换实现并发。

相关推荐
huainingning几秒前
防火墙重启后ssl登录提示证书过期临时解决方法
linux·服务器·ssl
sulikey6 分钟前
服务器安装Docker教程。如何在云服务器安装Docker容器?
运维·服务器·ubuntu·docker·安装教程·云服务器
Fu_Lin_23 分钟前
Qt嵌入式从零基础到精通(01):Qt嵌入式开发全景图:从桌面Qt到ARM Linux
linux·arm开发·qt·qt5·嵌入式linux
池央26 分钟前
NAS里的大文件怎么快速传?用Copyparty搭建轻量文件服务器
运维·服务器·cpolar
金海境科技26 分钟前
【服务器数据恢复】H3C CAS虚拟化平台HP存储qcow2文件损坏快照丢失数据恢复案例
服务器·数据库·经验分享
lczllx32 分钟前
从 TCP 90μs 到 SHM 28μs:我的 RPC 框架零拷贝优化历程
linux·后端
发量惊人的中年网工1 小时前
AI服务器托管怎么选机房?GPU集群对机柜、电力和网络的硬要求
服务器·网络·人工智能
盐焗鹌鹑蛋1 小时前
【Linux】权限
linux
玖玥拾2 小时前
Unity 3D 笔记(十五)Unity/C# Socket 网络笔记4
服务器·网络·unity·c#
小此方2 小时前
Re:Linux系统篇(四十六)信号篇·四:一文串联操作系统底层:时钟中断、内核态切换、系统调用与 Linux 信号处理全解析
linux·驱动开发·信号处理