Linux 下nice 函数用法提高一个进程的友善值

来源:互联网 发布:淘宝天猫入驻费用 编辑:程序博客网 时间:2024/04/28 19:44
Linux不会随意对进程进行调度。事实上,应用程序会被指派优先级,优先级会对进程何时运行以及运行多久造成影响。以往,Unix将优先级成为友善值(nice value),因为友善值背后的概念是通过调低一个进程的优先级来“善待”系统上的其他进程,这让其他进程可以使用较多的处理器空间。 

友善值可控制一个进程何时运行。Linux会按照优先级(从最高到最低)的顺序来对运行进程进行调度:优先级较高的进程会比优先级较低的进程先运行。友善值还可控制一个进程的时间片大小。 

友善值的有效范围从-20到19,而且默认值是0。你可能会有点困惑,一个进程的友善值越低,则它的优先级就越高,而且它的时间片也越大;反过来说,友善值越高,进程的优先级越低,而且它的时间片越小。因此掉高一个进程的友善值就等于善待系统上的其他进程。但是以数字来看的确令人混淆。当我们说一个进程具有“高优先级”时,我们的意思是说,相较于优先级较低的进程,调度程序会更快安排它运行,而且会让它运行更长时间。

#include <unistd.h>
int nice (int nic);
 
执行成功,nice()会使用inc来掉高一个进程的友善值,而且会返回刚才所更新的值.只有具备CAP_SYS_NICE能力的进程(实际上就是root所拥有的进程)可以对inc提供一个负值来调低它的友善值,因而会掉高它的优先级.因此,拥有者非root的进程只能调低它们的优先级.
 
发生错误时,nice()会返回-1。然后,因为nice会返回新的友善值,所以-1也是执行成功时的返回值.为了有所区别,调用nice之前,你可以先将errno清为0并在事后检查它的值.
0 0