编程接口指南

命令和接口

下图说明了缺省的进程优先级。

图 3–1 进程优先级(从程序员的角度考虑)

实时线程优先于系统线程。系统线程优先于分时线程。每种类均有一个单独的运行队列。

进程优先级仅在调度器类的上下文中才有意义。可以通过指定类和特定于类的优先级值来指定进程优先级。系统会将类和特定于类的值映射成其用来调度进程的全局优先级。

从系统管理员的角度考虑的优先级与从用户或程序员的角度考虑的优先级不同。配置调度器类时,管理员直接处理全局优先级。系统会将用户提供的优先级映射成这些全局优先级。有关优先级的更多信息,请参见《系统管理指南:基本管理》

带有 -cel 选项的 ps(1) 命令可用于报告所有活动进程的全局优先级。priocntl(1) 命令可用于报告用户和程序员使用的特定于类的优先级。

priocntl(1) 命令以及 priocntl(2)priocntlset(2) 接口用于设置或检索进程的调度器参数。使用上述命令和两个接口设置优先级的顺序基本相同:

  1. 指定目标进程。

  2. 指定要用于这些进程的调度器参数。

  3. 执行命令或接口,为进程设置参数。

进程 ID 是 UNIX 进程的基本属性。有关更多信息,请参见 Intro(2)。类 ID 是指进程的调度器类。priocntl(2) 仅适用于分时类和实时类,不适用于系统类。

priocntl 用法

priocntl(1) 实用程序在调度进程时可执行四个不同的控制接口:

priocntl -l

显示配置信息

priocntl -d

显示进程的调度参数

priocntl -s

设置进程的调度参数

priocntl -e

执行带有指定调度参数的命令

以下示例说明了 priocntl(1) 的用法。

priocntl(1) 包括 nice(1) 的接口。nice 仅适用于分时进程,并会使用较大的数字指定较低的优先级。上一个示例相当于使用 nice(1) 将增量设置为 10:


$ nice -10 make bigprog

priocntl 接口

priocntl(2) 用于管理一个或一组进程的调度参数。可以针对 LWP、单个进程或一组进程调用 priocntl(2)。一组进程可以通过父进程、进程组、会话、用户、组、类或所有活动进程进行标识。有关更多详细信息,请参见 priocntl 手册页。

如果给定类 ID,则 PC_GETCLINFO 命令可以获取调度器类名称和参数。使用此命令,在编写程序时就不用假设需要对哪些类进行配置。

PC_SETXPARMS 命令用于设置一组进程的调度器类和参数。idtypeid 输入参数用于指定要更改的进程。