Linux: 进程优先级
- 一、进程优先级概念
- 二、如何查看进程优先级
- 三、如何修改进程的优先级(PRL vs NI)
- 四、为何优先级PRL必须限定范围
- 五、进程其他特性
一、进程优先级概念
优先级的本质就是排队,而排队则是资源不足所引起的。在计算机中,CPU的个数是有限的(大部分都是一个),并且在同一时间内CPU只能调度执行一个进程。CPU的资源严重不足,必然衍生出进程竞争,即进程优先级。
进程优先级是操作系统用于确定进程执行顺序的一个参数,它反映了进程在CPU资源分配中的先后顺序。
二、如何查看进程优先级
在Linux或unix操作系统中,我们可以通过输入ps -la
指令,会看到下面这些信息:
选项 | 意义 |
---|---|
F | 进程标志,说明进程的权限,常见的标志有两个:1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限; |
S | 进程状态 |
UID | 进程执行者 |
PID | 进程表示符,该进程的代号 |
PPID | 当前进程是由那个进程衍生出来的,即父进程的代号 |
PRL | 进程可被执行的优先级,数字越小,优先级越高。 |
NI | nice值,进程的优先级修正数据,用于调整优先级大小 |
C | 进程CPU的占有率 |
ADDR | 进程在内存中的位置 |
SZ | 进程占用内存大小 |
WCHAN | 进程是否被允许,-表示进程被运行 |
TIME | 进程占用 CPU 的运算时间 |
CMD | 产生该进程的命令名 |
三、如何修改进程的优先级(PRL vs NI)
PRL表示进程的优先级,数字越小,进程优先级越高,一般情况下PRL默认80。NI表示进程的nice值,用于调整PRL的大小。调整方式为:PRL(新) = PRL(旧) + NI
。
但进程的PRL是有范围的,从60~99
, 分为40个等级。NI值最小为-20,超出部分统一按-20处理;最大为19,超出部分按19处理。
四、为何优先级PRL必须限定范围
PRL越小,进程被调度的优先级越高。但操作系统作为一款管理进程(功能之一)的软件,OS在调度进程时,需要较为均衡的让每一个进程都被调度。
如果PRL范围不进行限制,会由于人为原因导致某些进程优先级较高,一直被CPU调度。进而导致一些优先级低的进程长时间无法被OS调度。
五、进程其他特性
进程特性 | 产生原因 |
---|---|
竞争性 | 统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。 |
独立性 | 多进程运行,需要独享各种资源,多进程运行期间互不干扰。 |
并行 | 多个进程在多个CPU下分别,同时进行运行,这称之为并行。 |
并发 | 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。 |