Solaris 10 资源管理器开发者指南

项目和任务概述

Solaris OS 使用工作负荷分层结构组织系统中所执行的工作。任务是指表示工作负荷组件的进程集合。项目是指表示整个工作负荷的任务集合。在任何给定的时间,进程都只能是一个任务和一个项目的组件。下图说明了工作负荷分层结构中的关系。

图 2–1 工作负荷分层结构

图中显示了项目、任务和进程间的关系。

作为多个项目成员的用户可以同时运行多个项目中的进程。由某个进程启动的所有进程都会继承父进程的项目。在启动脚本中切换到新项目时,所有子进程都会在该新项目中运行。

正在执行的用户进程有关联的用户标识 (uid)、组标识 (gid) 和项目标识 (projid)。进程属性和功能是从用户、组和项目标识继承而来,从而形成任务的执行环境。

有关项目和任务的深入讨论,请参见《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的第 2  章 “项目和任务(概述)”。有关用于管理项目和任务的管理命令,请参见《系统管理指南:Solaris Containers-资源管理和 Solaris Zones》中的第 3  章 “管理项目和任务”

/etc/project 文件

project 文件是工作负荷分层结构的核心。project 数据库是在系统中通过 /etc/project 文件或在网络上通过名称服务(如 NIS 或 LDAP)来维护的。

/etc/project 文件包含五个标准项目。

system

此项目用于所有系统进程和守护进程。

user.root

所有的根进程都在 user.root 项目中运行。

noproject

此特殊项目用于 IPQoS。

default

缺省项目会指定给每个用户。

group.staff

此项目用于 staff 组中的所有用户。

要通过编程方式访问项目文件,请使用以下结构:

struct project {

  char      *pj_name;       /* name of the project */

  projid_t   pj_projid;     /* numerical project ID */

  char      *pj_comment;    /* project comment */

  char     **pj_users;      /* vector of pointers to project user names */

  char     **pj_groups;     /* vector of pointers to project group names */

  char      *pj_attr;       /* project attributes */

};

project 结构成员包括以下各项:

*pj_name

项目的名称。

pj_projid

项目 ID。

*pj_comment

用户提供的项目说明。

**pj_users

指向项目用户成员的指针。

**pj_groups

指向项目组成员的指针。

*pj_attr

项目属性。使用这些属性可为资源控制和项目池设置值。

通过项目属性,可以控制资源的使用情况。可以使用四种前缀对各种类型的资源控制属性进行分组:

有关资源控制的完整列表,请参见 resource_controls(5)