Solaris(64 位)开发者指南

运行的是哪种 Solaris 操作环境?

Solaris 操作环境可以同时支持两个一流的 ABI。换句话说,两个完全正常工作的独立系统调用路径可连接到 64 位内核中,这两组库均支持应用程序。

64 位操作系统只能在 64 位 CPU 硬件上运行,而 32 位版本则可以在 32 位 CPU 硬件上或 64 位 CPU 硬件上运行。由于 Solaris 32 位和 64 位操作环境看上去非常相似,因此可能不易分辨特定硬件平台上运行的是哪个版本的操作环境。

要确定系统上运行的是哪个版本的操作环境,最容易的方法就是使用 isainfo 命令。此新命令可以列显有关系统上所支持的应用程序环境的信息。

以下举例说明了在运行 64 位操作系统的 UltraSPARC 系统中执行的 isainfo 命令:


% isainfo -v

64-bit sparcv9 applications

32-bit sparc applications  

以下是在运行 32 位 Solaris 操作系统的 x86 系统中执行的 isainfo 命令:


% isainfo -v

32-bit i386 applications

以下是在运行 64 位 Solaris 操作系统的 x86 系统上执行的 isainfo 命令:


% isainfo -v

64-bit amd64 applications

32-bit i386 applications

注 –

并非所有 x86 系统都能够运行 64 位内核。在这种情况下,如果系统运行的是 Solaris 操作环境,则内核会在 32 位模式下运行。


-nisainfo(1) 命令的一个有用选项,用来列显所运行的平台的本机指令集:


% isainfo -n

sparcv9

-b 选项用来列显对应本机应用程序环境的地址空间中的位数:


% echo "Welcome to "`isainfo -b`"-bit Solaris"

Welcome to 64-bit Solaris

必须在早期版本的 Solaris 操作环境中运行的应用程序可以确定 64 位功能是否可用,方法是检查 uname(1) 的输出或检查 /usr/bin/isainfo 是否存在。

isalist(1)isainfo 的相关命令,它更适合在 shell 脚本中使用。isalist 可用来列显平台所支持的指令集的完整列表。但是,随着指令集扩展数量的增加,所有子集的列表的局限性也更加明显。建议用户将来不要依赖此接口。

如果用户要创建依赖指令集扩展的库,则应使用动态链接程序的硬件功能。使用 isainfo 命令可以确定当前平台上的指令集扩展。


% isainfo -x

amd64: sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc fpu

i386: sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc fpu