进程优先级
基本概念
为什么要有进程优先级?
这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用cpu的能力就是一个必须要可以人为控制的事情。因为有的进程相对重要,而有的进程则没那么重要。
进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的。
就是说在同一个调度周期中,优先级高的进程占用的时间长些,而优先级低的进程占用的短些。
查看系统进程
在Linux或者Uni系统中,用 ps -l命令则会出现下面的一系列内容
让我们认识一下几个重要的信息:
- UID:代执行者的身份
- PID:代表进程的代号
- PPID:代表这个进程是由哪个进程发展衍生而来的,即父进程的代号
- PRI:代表这个进程可被执行的优先级,其值越小越早被执行
- NI:代表进程的nice值
PRI 和 NI
- PRI也还是比较好理解的,即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小,进程的优先级别越高
- NI表示进程可被执行的优先级修正数值
- PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice
- 这样,当nice值为负值时候,那么该程序将会优先级将会变小,即其优先级会变高,则其越快被执行。
- 调整进程优先级,在Linux下,就是调整进程nice值。
- nice的取值范围是-20至19,一共40个级别。
PRI vs NI
- 需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进程的优先级变化。
- 可以理解nice值是进程优先级的修正修正数据。
查看进程优先级的命令
用top命令更改已存在进程的nice:
- top
- 进入top后按 “ r ” -> 输入进程PID -> 输入nice值