JavaScript is required to for searching.
跳过导航链接
退出打印视图
编程接口指南     Oracle Solaris 10 1/13 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  内存和 CPU 管理

2.  用于 Solaris Cluster 的远程共享内存 API

3.  会话描述协议 API

4.  进程调度程序

调度程序概述

分时类

系统类

实时类

交互式类

公平份额类

固定优先级类

命令和接口

priocntl 用法

priocntl 接口

与其他接口交互

内核进程

使用 forkexec

使用 nice

init(1M)

调度和系统性能

进程状态转换

5.  地址组 API

6.  输入/输出接口

7.  进程间通信

8.  套接字接口

9.  使用 XTI 和 TLI 编程

10.  包过滤钩子

11.  传输选择和名称到地址映射

12.  实时编程和管理

13.  Solaris ABI 和 ABI 工具

A.  UNIX 域套接字

索引

命令和接口

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

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

image:实时线程优先级高于系统线程。系统线程优先级高于分时线程。每个类都有一个单独的运行队列。

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

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

带有 -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 输入参数用于指定要更改的进程。