进程优先级

基本概念

为什么要有进程优先级?

这似乎不用过多的解释,毕竟自从多任务操作系统诞生以来,进程执行占用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值