Solaris オペレーティング環境は、Solaris 実行環境で使用するソフトウェアアプリケーションの開発に必要なマニュアル、開発用ソフトウェアライブラリ、生産性向上ツール、サンプルコード、およびテスト用ツールを提供します。この節では、大規模ファイル (2G バイトを超えるもの)、マルチスレッドアプリケーション、および X サーバーとライブラリを扱うための新機能について説明します。
2G バイト以上の大規模ファイルをサポートします。UFS、NFS、および CacheFS の各ファイルシステムで大規模ファイルに対応するセマンティクスをサポートします。アプリケーションから作成したりアクセスしたりできるファイルの最大サイズは、次のとおりです。
UFS によってマウントされたファイルシステムでは、1 テラバイト
NFS および CacheFS によってマウントされたファイルシステムでは、NFS サーバーの限界まで
既存の入出力インタフェースが変更されて、大規模ファイルを扱うときのエラーを検出できるようになりました。新しいデータ型 (通常、接尾辞として 64 または 64_t が付く) と新しいインタフェース (通常、接尾辞として 64 が付く) が、大規模ファイル用に追加されています。
Solaris 2.x ソフトウェア上で実行する既存アプリケーションの場合、次の点について調べる必要があります。
アプリケーションが大規模ファイルに対応できるためには (「Solaris 2.6 で大規模ファイルを扱っても安全 (large-file safe)」)、アプリケーションのソースコードを調べて、既存のインタフェースが適切であること、そして正しいエラー処理特性を備えていることを確認する必要があります。
アプリケーションが大規模ファイルを取り扱えるようにするには (「大規模ファイルを使用できる (large-file aware)」)、アプリケーションのソースコードを調べて修正しなくてはなりません。次は、修正すべき箇所の例です。
%ld から %ll などの出力およびメモリー内部の書式文字列
サイズ情報またはオフセット情報の一時記憶領域に使用する変数は、正しいサイズに設定して切り捨てられるのを防ぐ必要がある
関数のパラメタと戻り値を調べて、必要に応じて修正する
詳細については、『NFS の管理』と『Solaris のシステム管理』を参照してください。
Solaris オペレーティング環境のリンカーに関連する拡張機能として、バージョン管理とスコープ管理が追加されました。動的オブジェクトの開発者は、これらの機能を使って動的オブジェクトのバイナリインタフェースについて一連のバージョン更新をオブジェクト内部で定義し、グローバルシンボルをローカルスコープに落とすことができます。この機能によって、異なるソフトウェアリリースにまたがってインタフェースの進化を管理できるほか、前バージョンのグローバルシンボルの継承、バージョン依存関係の記録、および内部の実装変更の記述を行うことができます。
バージョン管理とスコープ管理によって、開発者はプログラム開発のための安定したインタフェースを提供できるほか、標準に準拠し、バグ修正などの実装変更をオブジェクトのパブリックインタフェースから保護することができます。このほかにも、オブジェクトサイズを縮小し、実行時再配置に必要なコストを節約してアプリケーションの実行時性能を向上できるなどの利点が得られます。
Solaris 2.6 オペレーティング環境では、システムライブラリでこの技術を利用し、バージョン管理とスコープ管理の両方を適用しています。
詳細については、『Linker and Libraries Guide』を参照してください。
スケジューラの起動機能によって、マルチスレッドアプリケーションのための新しいカーネルスケジューリングがサポートされます。この機能は、カーネルと libthread ライブラリ (または、libpthread) の間の専用インタフェースとして実装されるので、libthread (libpthread) インタフェースを変更しません。また、これによりスレッドライブラリは状況判断型の相互排他ロック (mutex ロック) を実装できるようになります。状況判断型の相互排他ロックの場合、現在ロックを保持しているスレッドがプロセッサ上で実行中であれば、ロックスピンを獲得しようとするスレッドをロックしますが、実行中でなければブロックします。
詳細については、libsched(3X) のマニュアルページを参照してください。
先取りの制御機能によって、アプリケーションはカーネルにスケジューリングのヒントを与えることができます。これによって、短期間の先取りを防ぐことができるので、データベースサーバーなどの特定のクラスのアプリケーションで性能が向上します。
従来の /proc ファイルシステムがディレクトリ階層構造に再構築されて、状態情報や制御用の関数を格納するサブディレクトリを含むようになりました。また、ウォッチポイント機能を提供して、プロセスのアドレス空間にあるデータにアクセスしたりデータを変更したりすることを監視できるようにしています。この新しい /proc ファイル構造は、従来の /proc インタフェースとバイナリレベルで完全に互換です。
新しい /proc ウォッチポイント機能が使えるように、adb(1) コマンドが変更されました。adb コマンドは、新たにデータのブレイクポイントを提供します。データのブレイクポイントを挿入すると、対象となるプロセスは指定の変数にアクセスしたところで停止します。
詳細については、adb(1) のマニュアルページを参照してください。
FNS が、X/Open XFN CAE の定義に準拠しました。また、FNS の機能を拡張して、Lightweight Directory Access Protocol (LDAP) のサポートを追加したほか、ファイルと NIS バックエンドに対するサポートも強化しています。
詳細については、『Federated Naming Service Programming Guide』、『Solaris ネーミングの管理』、『Solaris ネーミングの設定と構成』を参照してください。
非同期 I/O をサポートするテープ用インタフェースによって、高性能テープデバイスの性能が向上しました。また、この機能では要求をキューに入れられるので、入出力スループットが大幅に向上しています。
SDK ソフトウェアが Solaris 環境に組み込まれて、別売製品ではなくなりました。一般ユーザー用 Solaris 実行環境で使用するアプリケーションやグラフィックスハンドラの作成に必要なすべての情報が Solaris ソフトウェアに用意されています。
Solaris VISUALTM ソフトウェアには、グラフィックスおよびマルチメディアのソフトウェア開発に必要な複数の基本ライブラリが含まれています。基本ライブラリは、 Solaris ソフトウェアでは最も低レベルの、デバイスから独立した層に属します。このような低レベルインタフェースは、広範囲のさまざまな共通機能をサポートするように設計されています。たとえば、基本ライブラリをベースにしてより高いレベルのライブラリを構築したり、アプリケーションで基本ライブラリをそのまま使用したりできます。基本ライブラリを使って、2 次元および 3 次元のグラフィックス、画像、またはデジタルビデオを取り込んだアプリケーションを開発できます。基本ライブラリは、XGL グラフィックスライブラリと XIL 画像ライブラリから構成されます。XGL グラフィックスライブラリは、Solaris PEX ソフトウェアの基本ライブラリとして機能します。
PEX 3.0.2 実行環境は、PEX クライアント側実行時ライブラリ (PEXlib) と PEX サーバー共用オブジェクトファイル拡張機能 (Solaris PEX サーバー) から構成されます。Xlib がコア X プロトコルの API であるように、PEXlib は PEX プロトコルの API です。PEXlib は異なるハードウェアプラットフォーム間でのアプリケーションの移植性を提供するほか、ローカルとリモートのディスプレイで 3 次元グラフィックスの描画を可能にします。PEX クライアントから PEX 要求を受け取ると、OpenWindows Version 3.6 の X11 サーバーは PEX 共用オブジェクト拡張機能を自動的に読み込みます。
PEXlib の Solaris 2.6 への実装は、マサチューセッツ工科大が提供している『PEXlib - Specification and C Language Binding: Version 5.1』に基づいています。また、PEX サーバー拡張機能は、『PEX Protocol Specification, Version 5.1』に基づいています。
PEX 3.0.2 実行環境は、Solaris 2.6 に含まれています。次の場合に、PEX 3.0.2 実行環境をインストールしてください。
PEXlib をベースにしたグラフィックスのクライアントアプリケーションを実行する
PEX プロトコルを使ってリモートディスプレイに描画するクライアントアプリケーションが任意の 3 次元グラフィックスを表示する
PEX をインストールするには、Solaris 2.6 ソフトウェアのインストール時にソフトウェアグループ全体を選択します。
PEX についての詳細は、次のマニュアルを参照してください。
また、書店で次の本を求めることができます。
『PEXlib Programming Manual』、O'Reilly and Associates, Inc.
『PEXlib Reference Manual』、O'Reilly and Associates, Inc.
XGL ライブラリは、2 次元画像および 3 次元画像の即時モード API です。この API は、異なるハードウェアプラットフォーム間のアプリケーションの移植性と、グラフィックスアクセラレータを利用してグラフィックスアプリケーション性能の最適化を行います。このほか、XGL Version 3.3 ライブラリを使って、アプリケーションは透過性のサポートレベルを判断できます。XGL Version 3.3 ライブラリには、エッジオフセットのユーザー制御を可能にする新しい属性が含まれます。
XGL 3.3 実行環境 (RTE) は、Solaris 2.6 に含まれています。グラフィックスアプリケーションを使用するサイトでは XGL RTE をインストールする必要があります。あるアプリケーションが XGL RTE を必要とするかどうかは必ずしも明確ではありません。したがって、CDE または OpenWindows のアプリケーションソフトウェアをインストールする場合は、そのアプリケーションが XGL ライブラリを参照することを考えて XGL RTE もインストールしておく必要があります。
XGL の詳細については、『XGL Programmer's Guide』または『XGL Reference Manual』を参照してください。
画像処理用 API である XIL ライブラリは、画像アプリケーションやビデオアプリケーションに基本関数を提供します。API 開発者はこのライブラリを利用して書いたコードを基本ライブラリ (低レベルのソフトウェアインタフェース) として提供できるようになります。
XIL 1.3 実行環境 (RTE) は、Solaris 2.6 に含まれています。画像アプリケーションを使用するサイトではインストールする必要があります。あるアプリケーションが XIL RTE を必要とするかどうかは必ずしも明確ではありません。したがって、CDE または OpenWindows のアプリケーションソフトウェアをインストールする場合は、そのアプリケーションが XIL ライブラリを参照することを考えて XGL RTE もインストールしておく必要があります。
XIL 1.3 ライブラリ API は、すべての点で下位互換です。既存アプリケーションは、修正または再コンパイルしないで実行することができます。
XIL 1.3 ライブラリ API は、マルチスレッド対応です。開発者は、XIL 関数にロックをかけないでマルチスレッドアプリケーションを書くことができます。API の複数のスレッドは、同じ画像からデータを要求しない限り確実に実行されます。ライブラリ自体もマルチスレッド対応なので、アプリケーションの書き直しをしなくてもマルチプロセッサシステムの利点を活用できます。
XIL 1.3 ライブラリでは、特に大きな画像をタイルと呼ばれるメモリーバッファー領域に格納します。特定のタイルに含まれる画像の一部が必要な場合は、そのタイルをメモリーに読み込むだけで済むので性能が向上します。
XIL 1.3 ライブラリには、従来の連続した記憶領域だけでなく、XIL 画像のためのタイル記憶領域やストリップ記憶領域をサポートする新しい記憶領域オブジェクトが含まれています。この記憶領域オブジェクトは、走査線、ピクセル幅、データポインタなどの画像属性を格納するコンテナとして機能します。画像をエクスポートするか、あるいは直接修正するときまで、画像に記憶領域は割り当てられません。その分、メモリー消費を節約できます。
XIL 1.3 ライブラリでは、新たに 32 ビット単精度の IEEE 浮動小数点データ型をサポートします。このデータ型を使って、高度に洗練された科学分野の画像アプリケーションを開発することができます。
XIL 1.3 ライブラリでは、一時画像をサポートします。この一時画像は、続けて作成する画像の中間的なステップとして使用されます。また、この画像を読み込んだり書き込んだりできるのは一回限りです。一時画像に使われる記憶領域は必要がなくなれば XIL が解放できるので、大きな画像を扱う場合は特に有利です。
XIL 1.3 ライブラリでは、新しく XIL_GENERAL 記憶領域形式をサポートします。この形式では、複数の帯域を持つそれぞれの帯域を別々のメモリーバッファーとして指定できるので、画像を柔軟に取り扱えます。さらに、帯域ごとに走査線とピクセル幅を持たせることができます。
XIL 1.3 ライブラリでは、XIL_BIT 画像だけでなくすべてのデータ型で XIL_BAND_SEQUENTIAL 記憶領域形式をサポートするようになりました。
XIL 1.3 ライブラリでは、Kodak Color Management System (KCMS) をサポートします。これによって、ディスプレイ上の画像と実際に格納される画像との間で非常に高いカラー対応を実現します。
Kodak Color Management System (KCMS) は、入力デバイスから出力デバイスまでの一貫したカラー表現を保証するカラー管理用ソフトウェア製品です。KCMS は、SunSoft が開発にかかわり、Eastman Kodak からライセンス供与されている技術です。
KCMS は、マルチスレッドプログラムをサポートし、マルチスレッドでの安全な動作を保証します (MT-安全)。KCMS アプリケーションでマルチスレッド機能を使う場合、KCMS ライブラリコールにロックをかける必要はありません。
詳細については、『KCMS Application Developer's Guide』を参照してください。
X11R6 Base Window System には、X コンソーシアムから提供された最新の修正やパッチが含まれます。
詳細については、X/Open の Web サイト http://www.xopen.org を参照してください。
X11 Double Buffer Extension (DBE) は、X Window System の枠組みの中でダブルバッファリングを使用する標準の方法です。ダブルバッファリングでは、「フロント」と「バック」の 2 種類のバッファーを使用して画像を保持します。フロントバッファーはユーザーにとって可視ですが、バックバッファーは可視ではありません。DBE の仕様に関する詳細な情報は、次の ftp://ftp.x.org/pub/DOCS/DBE/ サイトにあります。インターネットブラウザを使ってダウンロードできます。
詳細については、X/Open の Web サイト http://www.xopen.org を参照してください。