16.3.2
、具有优先级的½程队列示意图
如上图所示,具高优先权的
pro1, pro2
可以被取用两次,而½不重要的
pro3, pro4
则运作次数½少。
如此一来
pro1, pro2
就可以½快被完成啦!要注意,上图½是示意图,并非½优先者一定会被运作
两次啦!
为了要达到上述的功能,我们
Linux
给予½程一个所谓的『优先执行序
(priority, PRI)
』,
这个
PRI
值越低代表越优先的意思。不过这个
PRI
值是由核心动态调整的,
用户无法直½调整
PRI
值的。
先来瞧瞧
PRI
曾在哪里出现?
[root@study ~]#
ps
-
l
F S UID PID PPID C
PRI NI
ADDR SZ WCHAN TTY TIME CMD
4 S 0 14836 14835 0
90 10
-
29068 wait pts/0
00:00:00 bash
0 R 0 19848 14836 0
90 10
-
30319
-
pts/0 00:00:00 ps
#
应该
要好奇,怎么我的
NI
10
了?
还记
刚刚
top
测试吗
?我
在那
就有改
一次喔!
由于
PRI
是核心动态调整的,我们用户也无权去干涉
PRI
!那如果你想要调整½程的优先执行序
时,就得要透过
Nice
值了!
Nice
值就是上表的
NI
啦!一般来说,
PRI
NI
的相关性如下:
PRI(new) = PRI(old) + nice
不过你要特别留意到,如果原本的
PRI
50
,并不是我们给予一个
nice = 5
,就会让
PRI
变成
55
喔!
因为
PRI
是系统『动态』决定的,所以,虽然
nice
值是可以影响
PRI
,不过,
最终的
PRI
仍是要经过系统分析后才会决定的。另外,
nice
值是有正负的喔,而既然
PRI
越小越早被执行,
以,
nice
值为负值时,那么该½程就会½低
PRI
值,亦即会变的½优先被处理。
此外,你必须
要留意到:
.
nice
值可调整的范围为
-20 ~ 19
.
root
可随意调整自己或他人½程的
Nice
值,且范围为
-20 ~ 19
.
一般使用者½可调整自己½程的
Nice
值,且范围½为
0 ~ 19 (
避免一般用户抢占系统资源
)
.
一般使用者½可½
nice
值越调越高,例如本来
nice
5
,则未来½能调整到大于
5
这也就是说,要调整某个½程的优先执行序,就是『调整该½程的
nice
值』啦!那么如何给予某个
½程
nice
值呢?有两种方式,分别是:
.
一开始执行程序就立即给予一个特定的
nice
值:用
nice
指令;
.
调整某个已经存在的
PID
nice
值:用
renice
指令。
.
nice
:新执行的指令即给予新的
nice