👦个人主页:Weraphael
✍🏻作者简介:目前正在学习c++和算法
✈️专栏:Linux
🐋 希望大家多多支持,咱一起进步!😁
如果文章有啥瑕疵,希望大佬指点一二
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注😍
一、什么是优先级
优先级实际上就是获取某种资源的先后顺序,而进程优先级就是进程获取
CPU
资源分配的先后顺序。
二、优先级存在的原因
诸如
CPU
、内存等资源都是有限的,一个CPU
只能执行一个进程,而进程可以有多个,这注定了进程之间是具有竞争关系的。那么操作系统就必须通过确定进程的优先级来保证各个进程之间的良性竞争。
三、Linux操作系统如何设计优先级
3.1 查看系统优先级关系
在Linux
中可以使用以下命令查询系统优先级关系:
ps -al
其中
NI
:影响进程优先级的变化,说白了就是进程优先级的修正数据,其取值范围[-20, 19]
PRI
:代表这个进程可被执行的优先级,其值越小越早被执行。计算规则:PRI = 80 + NI
,取值范围[60, 99]
UID
:代表执行者的身份。
3.2 修改进程优先级
因为PRI = 80 + NI
,因此我们只需要修改NI
的值即可。
注意:以下操作需要在root
用户下执行
-
输入
top
命令 -
进入
top
后按r
-
输入进程
PID
-
输入
NI
值
接下来看看修改后进程优先级的结果
虽然用户可以手动修改进程优先级,但并不建议这样做。
如果进程的优先级被频繁修改,可能导致资源的争夺。例如,如果一个进程在频繁地提高自己的优先级,那么它可能会抢占其他进程,导致资源分配不均衡,其他低优先级的进程可能会长时间地等待资源,产生饥饿问题。
四、四个重要概念
-
竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便有了优先级。
-
独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
-
并行:多个进程在多个
CPU
下分别同时运行,则称之为并行。 -
并发:多个进程在一个
CPU
下采用进程切换的方式。在一段时间之内,让多个进程代码都以同时推进,则称之为并发。