文章目录
-
- 进程优先级基本概念
- 1.1 是什么?
- 1.2 优先级 VS 权限
- 1.3 为什么存在优先级
-
- 如何查看系统进程
-
- PRI && NI
-
- 如何查看优先级
-
- 竞争、独立、并行、并发
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)。调整方式:
启动时设置:
bashnice -n 5 ./script.sh # 以NI=5启动进程运行时修改:
bashrenice -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. 如何查看优先级
基础用法:直接在终端输入:
bashtop常用命令行参数
参数 功能 示例 -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通过进程/线程切换实现并发。

