次の図に、Solaris オペレーティングシステムにおいて 32 ビットと 64 ビットの両方がサポートされているしくみを示します。左側のシステムは、32 ビットデバイスドライバを使用した 32 ビットカーネル上で、32 ビットライブラリとアプリケーションのみをサポートします。右側のシステムは、左側と同じ 32 ビットのアプリケーションとライブラリをサポートしますが、64 ビットデバイスドライバを使用した 64 ビットカーネル上で、64 ビットのライブラリとアプリケーションも同時にサポートします。
64 ビット環境の主な特徴は、次のとおりです。
大容量仮想アドレス空間
大規模ファイル
64 ビット演算
特定のシステム制約の解除
64 ビット環境では、1 つのプロセスは 64 ビット、すなわち 18 エクサバイトまでの仮想アドレス空間を持つことができます。これは、32 ビットプロセスの現在の最大値のおよそ 40 億倍になります。
ハードウェア上の制約のため、完全な 64 ビットアドレス空間をサポートしていないプラットフォームもあります。
アプリケーションが大規模ファイルに対するサポートのみを必要とする場合は、32 ビットのままで、大規模ファイルインタフェースを使用することができます。ただし、移植性がそれほど問題にならない場合には、アプリケーションを 64 ビットプログラムに変換して、整合性のあるインタフェースのセットを備えた 64 ビット機能を活用することもできます。
64 ビット演算は、以前の 32 ビット Solaris のリリースでも利用できましたが、64 ビット実装では、完全 64 ビットハードウェアレジスタを整数計算およびパラメータ渡しに利用しています。このため、アプリケーションは 64 ビット CPU ハードウェアの機能を最大限に活用することができます。
64 ビットシステムインタフェースは、本質的に 32 ビットシステムインタフェースの一部のものより機能が優れています。2038 年問題 (32 ビットの time_t
が時間を使い果すこと) の影響を受けると考えられるアプリケーションのプログラミングでは、64 ビットの time_t
を利用することができます。2038 年はずっと先の話と思われるでしょうが、抵当ローンのように将来のことがらに関する計算を行うアプリケーションでは、この拡張された時間機能が必要となる場合があります。