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 位模式下运行。
-n 是 isainfo(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 |