UNIX 系统中的进程调度相关函数

调度策略和调度优先级是由内核确定的。进程可用通过调整 nice 值选择以更低优先级运行(通过调整 nice 值降低他对 CPU 的占有,因此该进程是“友好的”)。只有特权进程允许提高调度权限。

Single UNIX Specification 中 nice 值得范围在 0 ~ (2*NZERO) - 1 之间,有些实现支持 0 ~ 2*NZERO。nice 值越小,优先级越高,这意思是:你越友好,你的调度优先级就越低。NZERO 是系统默认得 nice 值。

函数 nice 获取或更改它得 nice 值

#include <unistd.h>

int nice(int incr);
//返回值:若成功,返回 -NZERO ~ NZERO - 1 之间得nice值;若出错,返回-1

使用这个函数,进程只能影响自己得 nice 值,不能影响任何其他进程的 nice 值。

incr 参数被增加到调用进程的 nice 值上。如果 incr 太大,系统直接把它降到最大合法值,不给出提升。类似地,如果 incr 太小,系统也会无声无息地把它提高到最小合法值。

函数 getpriority

#include <sys/resource.h>

int getpriority(int which, id_t who);
//返回值:若成功,返回 -NZERO ~ NZERO - 1 之间的nice值;若出错,返回-1

getpriority 函数可用像 nice 函数那样用于获取进程的 nice 值,但是 getpriority 还可以获取一组相关进程的 nice 值。

which 参数可以取以下三个值之一:PRIO_PROCESS 表示进程,PRIO_PGRP 表示进程组,PRIO_USER 表示用户 ID。

which 参数控制 who 参数是如何解释的,who 参数选择感兴趣的一个或多个进程。

  • 如果 who 参数位 0,表示调用进程、进程组或者用户。
  • 当 which 设为 PRIO_USER 并且 who 为 0 时,使用调用进程的实际用户 ID。
  • 如果 which 参数作用于多个进程,则返回所有作用进程中优先级最高的。

函数 setpriority

#include <sys/resource.h>

int setpriority(int which, id_t who, int value);
//返回值:若成功,发返回0;若出错,返回-1

setpriority 函数可用于为进程、进程组和属于特定用户 ID 的所有进程设置优先级。

参数 which 和 who 与 getpriority 函数中相同。value 增加到 NZERO 上,然后变为新的 nice 值。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值