程序的执行顺序

每个进程有一个优先级属性,CPU利用该属性判断哪个工作比较重要,需要优先执行。我们可以使用 ps 观察优先级

[root@linux ~]# ps -l 
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD 
0 S     0 18851 18827  0  77   0 -  1302 wait   pts/0    00:00:00 su 
4 S     0 18852 18851  0  76   0 -  1349 wait   pts/0    00:00:00 bash 
4 R     0 19510 18852  0  76   0 -  1111 -      pts/0    00:00:00 ps
说明
PRI 是 Priority 的简写, NI 是 nice 的简写,两值叠加产生目前的 PRI 值!PRI 越小时,代表该程序可以具有『越早被优先执行』的意思。NI (nice) 则是我们操作值额外给予的一个数值, 他可以影响PRI 的值,他的相关性是这样的:
  • PRI(new) = PRI(old) + nice

不过您要特别留意到,如果原本的 PRI 是 50 ,并不是我们给予一个 nice = 5 ,就会让 PRI 变成 55 喔! 因为 PRI 是系统『动态』决定的,所以,虽然 nice 值是可以影响 PRI ,不过, 最终的 PRI 仍是要经过系统分析后才会决定的。另外, nice 值是有正负的喔,而既然 PRI 越小越早被执行, 所以,当 nice  值为负值时,那么该程序就会降低 PRI 值,亦即会变的较优先被处理。此外,您必须要留意到:

  • 一般使用者的 nice 值为 0 ~ 19 ;   
  • root 可用的 nice 值为 -20 ~ 19 ;   
  • 一般使用者仅可将 nice 值越调越高,如果本来 nice 为 5 ,则未来仅能调整到大于 5 的 nice ;   
  • 一般使用者仅能调整属于自己的程序的 nice 值。
这也就是说,要调整某个程序的优先执行序,就是『调整该程序的 nice 值』啦!那么如何给予某个程序 nice 值呢?有两种方式,分别是:   
  • 一开始执行程序就立即给予一个特定的 nice 值:用 nice 指令;   
  • 调整某个已经存在的 PID 的 nice 值:用 renice 指令。
 
top命令同样也是可以调整已经存在的某个process的nice的喔!
原文地址:https://www.cnblogs.com/yanxin880526/p/4742091.html