Solaris 10 新增功能

开发者工具增强功能

本节介绍自 Solaris 9 OS 最初于 2002 年 5 月发行以来,在 Solaris 10 3/05 发行版中新增或增强的所有开发工具。DTrace 动态跟踪工具是一项尤为重要的功能。

开发者还应查看安全和系统管理章节中的如下新增功能:

动态跟踪功能

此功能是 Solaris Express 11/03 发行版中的新增功能。

Solaris DTrace 是一项全面的动态跟踪功能,借助该功能,Solaris 用户、管理员和开发者可在一个全新级别观察内核和用户进程。有关详细信息,请参见DTrace 动态跟踪工具

GCC 3.4.3 版

此功能是 Solaris 10 3/05 发行版中的新增功能。

GCC 是来自 GNU 软件基金会的开放源代码 "C" 编译器。生成工具包括 gmakebisonbinutilsgnuM4flex

Perl 5.8.4 版

该功能是 Solaris Express 8/04 发行版中的新增功能。

Solaris 10 OS 提供了一个新的实际提取和报告语言 (Perl) 缺省版本。 新的 Perl 缺省版本为 5.8.4。在升级到 Solaris 10 软件之后,您需要重新安装以前手动安装的所有模块。有关安装模块的更多信息,请参见《系统管理指南:网络服务》中的 "Perl 5"。

有关 Perl 的更多信息,请参见 perl(1) 手册页。

每线程模式增强功能

该功能是 Solaris Express 8/04 发行版中的新增功能。

trusspstackpflags 命令已得到更新,用户可在一个进程或核心内指定单个线程。开发者和系统管理员可以更好地了解大型多线程应用程序的行为,并锁定特定的线程以便进行调试。

有关详细信息,请参见以下手册页:

USB 最终用户设备支持增强功能

这些增强功能是 Solaris Express 5/04 发行版中的新增功能。Solaris Express 8/04 发行版中添加了新的编程接口。

当前所有的 Edgeport USB 转串口设备都适用于该 Solaris 发行版。USB 1.1 音频和其他同步设备现在使用 USB 2.0 高速集线器。

新编程接口

这些接口是 Solaris Express 8/04 发行版中的新增功能。

通用串行总线体系结构 (USBA) 2.0 编程接口作为 Solaris 10 OS 的一部分公开发行。在手册页的 9F 和 9S 两节中,这些接口被记录为 usb_* 函数和结构。另请参见《编写设备驱动程序》

USBA 结构现在称作 USBA 2.0。在以前的 DDK 中写入 USBA 1.0 接口的 USB 驱动程序只与 Solaris 10 软件二进制兼容。这些驱动程序不能与 Solaris 10 软件源兼容。

ls 增强功能

该功能是 Solaris Express 8/04 发行版中的新增功能。

ls 命令现在可将文件时间显示到秒或纳秒。请参见ls 命令的增强

用于转换字符串的新函数

此功能是 Solaris Express 7/04 发行版中的新增功能。

现在,内核模块开发者可以使用两个新函数将字符串转换为长整数。使用 ddi_strtol()ddi_strtoul () 函数可将字符串分别转换为长整数和无符号长整数。使用这些新函数,能够实现灵活输入、符合 DDI 标准并增强错误检测功能。

有关更多信息,请参阅 ddi_strtol(9F)ddi_strtoul(9F) 手册页。

pstack 命令的 Java 支持

此功能是 Solaris Express 7/04 发行版中的新增功能。

pstack 命令已得到增强,使用最新版本的 Java 时,此命令可以显示 Java 帧。对于调用栈中的每个 Java 帧,将显示函数和行号(如果有)。

请参见 pstack(1) 手册页。

Solaris 加密框架的新机制

此功能是 Solaris Express 6/04 发行版中的新增功能。

Solaris 加密框架现在支持安全套接字层 (SSL) 和传输层安全性 (TLS) 协议的如下机制:

Solaris 加密框架是一种结构,可使 Solaris 系统中的应用程序使用或提供加密服务。与该框架之间的所有交互都基于 RSA Laboratories(RSA Security, Inc. 的研究机构)的 PKCS#11 密码令牌接口 (Cryptoki)。

有关更多信息,请参见 《Solaris 开发者安全性指南》中的“PKCS #11 函数:C_GetMechanismList”。

Solaris 加密框架中面向提供商的零售和非零售选项

此功能是 Solaris Express 6/04 发行版中的新增功能。

与 Solaris 加密框架连接的加密服务提供器的供应商可以更灵活地从 Sun Microsystems 请求证书。现在,证书既支持零售出口分发,也支持非零售出口分发。

零售加密产品是指美国政府允许发往所有国家/地区的产品。但是,零售产品不能发往美国政府认为会带来安全威胁的指定国家/地区。非零售加密产品是指美国政府规定仅限国内使用的产品,或供美国政府已经豁免的国家/地区使用的产品。

有关更多信息,请参见 elfsign(1) 手册页和《Solaris 开发者安全性指南》中的附录 F,“打包和签署加密服务提供器”。

链接程序和库更新

此功能描述是 Software Express 试点计划中的新内容,并在 Solaris Express 5/04 发行版中进行了修订。链接程序和库更新也是在 Solaris 9 12/02 和后续发行版中引入的。这些更新包括在 Solaris 10 3/05 发行版中。

Solaris 10 OS 包括链接程序编辑器功能,例如字符串表压缩、非引用部分删除和非引用相关性检测。有关最新的增强功能的完整信息,请参见《链接程序和库指南》中的附录 D,"Linker and Libraries Updates and New Features"。

Solaris Express 5/04 发行版中引入的增强功能如下:

以前的 Software Express 试点计划中引入的增强功能如下:

分层驱动程序接口

此功能是 Solaris Express 3/04 发行版中的新增功能。

Solaris 10 操作系统已得到增强,内核模块可以执行各种设备访问操作,如打开、读取和写入设备。使用该系统还可确定哪些设备是通过一组新的公用分层驱动程序接口(称为 "LDI")提供的。

驱动程序开发者可以使用 LDI 接口,直接从 Solaris 内核访问字符、块或 STREAMS 设备。应用程序开发者可以使用 LDI 接口来显示设备分层信息。通过这一新的体系结构,管理员还可以观察内核内部的设备使用情况。有关详细信息,请参见 ldi_*(9F) 和 di_*(3DEVINFO) 手册页。

prtconffuser 实用程序已得到增强,包括了下列功能:

分层驱动程序接口以前缀 ldi_ 开头。这些接口用于访问设备并获取内核级别的设备信息。手册页的 9F 一节对这些接口进行了介绍。在用户级别,提供了一组设备信息库接口,用于检索应用程序内部的内核设备使用情况信息。手册页的 3DEVINFO 一节对 LDI libdevinfo 接口进行了介绍。此外,prtconf(1M)fuser(1M) 手册页也提供了一些信息,讲述如何显示由 LDI 体系结构提供的内核设备使用情况信息。

有关详细信息,请参见《编写设备驱动程序》中的第 13 章,“分层驱动程序接口 (Layered Driver Interface, LDI)”。

makecontext() 函数的更改

此功能是 Solaris Express 3/04 发行版和 Solaris 9 9/04 发行版中的新增功能。

ucontext_t 结构的 uc_stack 成员的语义在应用到 makecontext(3C) libc 库函数的输入时有所更改。二进制兼容性在 Solaris 早期版本和 Solaris 10 OS 之间得以保留。

在针对 Solaris 10 OS 重新编译使用此接口的应用程序之前,必须先更新这些应用程序。有关详细信息,请参见 makecontext(3C) 手册页。

单一 UNIX 规范 3.0 版

此功能是 Solaris Express 2/04 发行版中的新增功能。

此 Solaris 发行版遵循单一 UNIX 规范 3.0 版 (SUSv3)。SUSv3 提供对 POSIX.1-1990、POSIX.1b-1993、POSIX.1c-1996、POSIX.2-1992 和 POSIX.2a-1992 的更新。

有关 SUSv3 更新对 Solaris 用户所产生影响的详细描述,请参见《Solaris 10 发行说明》中的“单一 UNIX 规范版本 3 引入更改”。

高级 API

此功能是 Solaris Express 1/04 发行版中的新增功能。

IPv6 高级套接字 API 对 Solaris 套接字 API 进行了更新,以满足最新版本 RFC 2292 的要求。请参见IPv6 高级套接字 API

面向开发者的简单验证和安全层

此功能是 Solaris Express 12/03 发行版中的新增功能。

简单验证和安全层 (SASL) 为应用程序和共享库的开发者提供了一些接口,用于添加验证,检查数据完整性以及对基于连接的协议进行加密。

SASL 由以下几项构成:

通过 SASL,开发者可在不考虑安全机制细节的情况下编写通用 API。如果对服务器和客户机进行了开发,使其适当使用 SASL,则无需重新编译,服务器和客户机即可使用新的安全机制、命名和用户标准化插件以及 auxprop 插件。

RFC 2222 中对 SASL 进行了介绍。SASL 特别适用于使用如下协议(支持 SASL)的应用程序:

有关 SASL 的更多信息,请参见 libsasl(3LIB) 手册页。另请参见《Solaris 开发者安全性指南》

事件端口

此功能是 Solaris Express 12/03 发行版中的新增功能。

事件端口是一种结构,允许应用程序从不相交的各个源生成并收集事件。此结构可在不降低整体性能的情况下,同时从多个对象检索事件。

有关详细信息,请参见 port_create(3C)signal.h(3HEAD) 手册页。

核心转储文件内容

Solaris Express 12/03 发行版中引入了对 coreadmgcoremdb 实用程序的增强功能。请参见核心转储文件内容增强功能

原子操作

该功能是 Solaris Express 10/03 发行版中的新增功能,并在 Solaris 10 1/06 发行版中加以增强。

原子操作在 libc 中提供可快速执行简单原子操作的 API。该新增功能允许应用程序以原子方式更新内存,而不使用其他同步元语或特定平台的汇编语言。可用操作包括添加、"and" 布尔函数和 "or" 布尔函数。

有关更多信息,请参见 atomic_ops(3C) 手册页。

Solaris WBEM 文件更改

此功能描述是在 Solaris Express 9/03 发行版中更新的。

/usr/sadm/mof 目录中的管理对象格式 (MOF) 文件已更改多次。

软件开发者权限

此功能是 Software Express 试点计划中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

进程不必再作为 root 运行即可拥有超级用户功能。超级用户功能可由系统管理员划分为一些相互独立的进程权利。这些进程权利通过权限来实现。通过使用权限,开发者可对访问受限操作的行为以及权限的有效期加以限制。如果使用权限,则可降低以前在特权程序受到威胁时所产生的危害。为了实现兼容性,作为 root 运行的未经修改的程序仍拥有所有权限。

有关权限的总体信息,请参见进程权利管理。有关设置和获取权限的信息,请参见 setppriv(2)getppriv(2) 手册页。要了解有关处理权限的更多信息,请参见 priv_str_to_set(3C)priv_addset(3C) 手册页。

有关详细信息,请参见《Solaris 开发者安全性指南》

面向开发者的 Solaris 加密框架

此功能是 Software Express 试点计划中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

Solaris 加密框架为应用程序提供加密服务。应用程序可以通过 libpkcs11(3LIB) 在更高的级别访问此框架。

Solaris 加密框架为应用程序(使用加密)开发者提供如下功能:

请参见以下手册页:libpkcs11(3LIB)pkcs11_softtoken(5)pkcs11_kernel(5)。另请参见供系统管理员使用的 Solaris 加密框架

有意为 Solaris 加密框架提供插件的软件或硬件密码加速器供应商应与 Sun Microsystems 联系,以了解详细信息。

SPARC: 面向软件开发者的 64 位软件包更改

此功能是 Software Express 试点计划中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

在 Solaris 10 操作系统中,打包已得到简化,即在一个软件包中就提供了大多数的 32 位和 64 位组件。请参见SPARC: 64 位软件包更改

面向 GSS-API 应用程序的 SPNEGO 伪机制

此功能是 Software Express 试点计划中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

该 Solaris 10 OS 包括一个新的 GSS-API“伪机制”,用于协商基于 SPNEGO 协议 (IETF RFC 2478) 的 GSS-API 安全。简单且受保护的 GSS-API 协商 (SPNEGO) 最适用于那些基于 GSS-API 实现(支持多种安全机制)的应用程序。当两个应用程序使用 GSS-API 来交换数据,而且应用程序之间不知道对方支持哪些机制时,可以应用 SPNEGO。

SPNEGO 是一种伪安全机制,由下列对象标识符表示:


iso.org.dod.internet.security.mechanism.snego (1.3.6.1.5.5.2)

SPNEGO 允许 GSS-API 对在带内确定其凭证是否共享公用的 GSS-API 安全机制。如果机制是共享的,则这些对可以选择一个公用机制来建立安全环境。

有关详细信息,请参见 mech(4)mech_spnego(5) 手册页。另请参见《Solaris 开发者安全性指南》

地址组

此功能是 Software Express 试点计划和 Solaris 9 12/03 发行版中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

现在,《编程接口指南》中有一章介绍了用来与地址组 (locality groups, lgroups) 进行交互的接口。这些接口有助于应用程序有效地分配 CPU 和内存资源。该功能会使某些系统的性能得以提高。

pmap 中的线程栈

此功能是 Software Express 试点计划中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

现在,pmap 实用程序对线程栈进行了标记,可以更轻松地标识这些栈。

有关详细信息,请参见 pmap(1) 手册页。

新的 DOOR_REFUSE_DESC 标志

此功能是 Software Express 试点计划中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

door_create() 函数中添加了一个新标志 DOOR_REFUSE_DESC。这一新标志简化了门服务器(不接受参数描述符)的编写工作。

有关详细信息,请参见 door_create(3DOOR) 手册页。

栈检查 API

此功能是 Software Express 试点计划和 Solaris 9 4/03 发行版中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

栈检查 API 允许与 Sun ONE Studio 中的栈检查编译器支持进行高级的交互操作。这些 API 应该在编译时启用了栈检查的应用程序中使用,这些应用程序可以管理自己的栈或尝试检测自己的栈溢出。

对于维护自己的线程库的开发者,需要使用 setustack 接口以使库的用户能够在编译时启用栈检查功能。

请参见 stack_getbounds(3C)stack_setbounds(3C)stack_inbounds(3C) 手册页。

面向软件开发者的增强的 crypt() 函数

此功能是 Software Express 试点计划和 Solaris 9 12/02 发行版中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

Software Express 发行版中包含了对 crypt () 函数的新扩展,并引入了 crypt_gensalt() 函数。这些增强功能使管理员可以更改用于不明用户的 UNIX 登录口令的算法。

包含了用于 MD5 和 Blowfish 的模块。MD5 模块位于 crypt_sunmd5crypt_bsdmd5。Blowfish 模块位于 crypt_bsdbf 中。

开发者可以创建替换口令遮蔽算法的新模块。应用程序开发者必须使用 crypt_gensalt() 函数,而不能手动生成 salt 字符串以传递给 crypt() 函数。

crypt.conf(4) 文件中指定了用作替代算法的模块。module_path 字段指定实现两个所需的函数的共享库对象的路径:

有关详细信息,请参见 crypt(3C)policy.conf(4) 手册页。

madvise() 函数的新标志

此功能是 Software Express 试点计划和 Solaris 9 12/02 发行版中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

madvise() 函数使内核可以优化对用户定义的内存区域的访问。本 Solaris 发行版包括三个用于 madvise() 函数的新标志:

有关 madvise() 函数的详细信息,请参见 madvise(3C) 手册页。

使用 libumem 进行内存分配

此功能是 Software Express 试点计划和 Solaris 9 4/03 发行版中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

libumem 是一种用户模式(非内核模式)内存分配程序库。使用 libumem 提供的功能,您可以调试内存泄漏和其他内存使用异常。

此功能的使用方法与标准应用程序二进制接口 (ABI) 分配程序(例如 malloc())相同。用户模式应用程序可以申请任意字节数目的内存,然后返回一个带有已分配内存地址的指针。

有关详细信息,请参见 libumem(3LIB) 手册页。

智能卡终端接口

此功能是 Software Express 试点计划和 Solaris 9 8/03 发行版中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

Solaris 智能卡接口是用于智能卡终端的一组公共接口。卡终端供应商可在用户级的共享库上实现这些接口,以对 Solaris 中的智能卡终端提供设备级支持。这组 Solaris 智能卡终端接口基于可用作 Linux Smartcard 框架一部分的卡终端接口。Linux 的卡终端支持库可以轻松地导入 Solaris 环境。有关智能卡的详细信息,请参见《Solaris Smartcard Administration Guide》

智能卡中间件 API

此功能是 Software Express 试点计划和 Solaris 9 9/02 发行版中的新增功能。Solaris 10 3/05 发行版中也包含此功能。

Solaris 智能卡框架现在可以提供底层的中间件 API。通过使用智能卡读卡器,这些 API 可以用来与智能卡交换数据。这些 API 可以用于诸如 Sun BladeTM 和 Sun RayTM 系统的平台。用 Java 语言或 C 语言编写的应用程序可以使用这些接口。

有关更多信息,请参见 libsmartcard(3LIB) 手册页和 /usr/share/javadoc/smartcard 中的 JavaDocs。另请参见《Solaris Smartcard Administration Guide》