SolarisTM オペレーティングシステムの機能は、顧客のニーズを満たすために拡大し続けています。Solaris オペレーティングシステムは、32 ビットおよび 64 ビットのアーキテクチャを完全にサポートするように設計されており、大規模ファイルおよび大容量仮想アドレス空間を利用できる 64 ビットアプリケーションを構築し、実行するための環境を提供します。同時に 32 ビットアプリケーションについて、引き続き最大限のソースおよびバイナリの互換性と相互運用性を提供します。実際、Solaris の 64 ビット実装上で実行、および構築されているシステムコマンドの大部分は、32 ビットプログラムです。
このリリースでは、SPARC® および x86 系列のプロセッサアーキテクチャ (UltraSPARC®、SPARC64、AMD64、Pentium、Xeon EM64T) を使用するシステムをサポートします。サポートされるシステムについては、Solaris 10 Hardware Compatibility List (http://www.sun.com/bigadmin/hcl) を参照してください。 本書では、プラットフォームにより実装が異なる場合は、それを特記します。
本書では、「x86」という用語は AMD64 あるいは Intel Xeon/Pentium 製品系列と互換性のあるプロセッサを使用して製造された 32 ビットおよび 64 ビットシステムを意味します。サポートされるシステムについては、Solaris 10 Hardware Compatibility List を参照してください。
32 ビットと 64 ビットのアプリケーションの開発環境間の主な相違点は、32 ビットアプリケーションは、int、long、およびポインタが 32 ビットである ILP32 データ型モデルに基づいているのに対し、64 ビットアプリケーションは、LP64 データ型モデルに基づいているということです。LP64 データ型モデルでは、long とポインタは 64 ビットで、ほかの基本データ型は ILP32 と同じです。
大部分のアプリケーションは、32 ビットプログラムのままで使用することができます。次の要件のうち 1 つ以上に該当するアプリケーションのみ、64 ビットプログラムに変換する必要があります。
4G バイトを超える仮想アドレス空間を必要とする
libkvm ライブラリ、/dev/mem または /dev/kmem ファイルを使用してカーネルメモリーを読み込み、解釈する
64 ビットバージョンのみで構成されるライブラリを利用する
64 ビット演算を効率的に行うために完全な 64 ビットレジスタが必要
このほか特定の相互運用性の問題により、コードの変更が必要になる場合があります。たとえば、アプリケーションが 2G バイトより大きいファイルを使用する場合、64 ビットに変換することがあります。
性能上の理由から、アプリケーションを 64 ビットに変換した方が望ましいことがあります。これには、64 ビット演算を効率良く実行するために 64 ビットレジスタを必要とする場合や、64 ビット命令セットにより提供されるその他の改善された機能を利用する場合などが考えられます。
このマニュアルは、C および C++ の開発者を対象読者としています。あるアプリケーションを 32 ビットにするか 64 ビットにするかを判定する方法について説明しています。このマニュアルで示す内容は、次のとおりです。
32 ビットと 64 ビットアプリケーション環境の類似性と相違点
両環境間で移植可能なコードの書き方
64 ビットアプリケーションを開発するための、オペレーティングシステムに含まれているツール
このマニュアルは次の章で構成されています。
第 1 章「64 ビットコンピューティング」では、64 ビットコンピューティングがなぜ必要なのか、また 64 ビットアプリケーションの特長について概要を説明します。
第 2 章「64 ビットの使用方法」では、構築および実行環境について、32 ビット Solaris と 64 ビット Solaris との違いを説明します。この章は、どのような場合にコードを 64 ビット安全に変換するのが適当であるかを、アプリケーション開発者が判断するための参考となるように書かれています。
第 3 章「32 ビットと 64 ビットインタフェースの比較」では、32 ビットアプリケーションと 64 ビットアプリケーションの類似性、および 64 ビットインタフェースについて説明します。
第 4 章「アプリケーションの変換」では、既存の 32 ビットコードを 64 ビット安全なコードへ変換する方法と、その変換を簡単に行うためのツールについて説明します。この章では主に、移植性のあるコードの書き方について説明しています。この章の内容は、既存の 32 ビットアプリケーションを 64 ビットに変換、または 32 ビットと 64 ビットの両環境で実行可能なアプリケーションを作成する際に適用できます。
第 5 章「開発環境」では、ヘッダー、コンパイラ、ライブラリについて、およびパッケージ方法とデバッグツールなどの構築環境について説明します。
第 6 章「上級者向けトピック」では、64 ビットシステムプログラミングと ABI の概要、およびパフォーマンスの問題について説明します。
付録 A 「派生型の変更」では、64 ビットアプリケーション開発環境で変更された派生型について説明します。
付録 B 「よく尋ねられる質問 (FAQ)」では、64 ビット実装とアプリケーション開発環境に関して、よく尋ねられる質問とその回答をまとめてあります。
参考として、次のマニュアルをお薦めします。
『American National Standard for Information Systems Programming Language-C, ANSI X3.159-1989』
『SPARC Architecture Manual, Version 9』SPARC International
『SPARC Compliance Definition, Version 2.4』SPARC International
『Large Files in Solaris: A White Paper』(Part No: A White Paper』(Part No: 96115-001)
Solaris 10 Reference Manual Collection
『Writing Device Drivers』 (Part No: 816-4854)
『Sun Studio 10: C ユーザーズガイド』(Part No: 819-0494-10)
docs.sun.com では、Sun が提供しているオンラインマニュアルを参照することができます。マニュアルのタイトルや特定の主題などをキーワードとして、検索を行うこともできます。URL は、http://docs.sun.com です。
このマニュアルでは、次のような字体や記号を特別な意味を持つものとして使用します。
表 P–1 表記上の規則
字体または記号 |
意味 |
例 |
|
---|---|---|---|
AaBbCc123 |
コマンド名、ファイル名、ディレクトリ名、画面上のコンピュータ出力、コード例を示します。 |
.login ファイルを編集します。 ls -a を使用してすべてのファイルを表示します。 system% |
|
AaBbCc123 |
ユーザーが入力する文字を、画面上のコンピュータ出力と区別して示します。 |
system% su password: |
|
AaBbCc123 |
変数を示します。実際に使用する特定の名前または値で置き換えます。 |
ファイルを削除するには、rm filename と入力します。 |
|
『 』 |
参照する書名を示します。 |
『コードマネージャ・ユーザーズガイド』を参照してください。 |
|
「 」 |
参照する章、節、ボタンやメニュー名、強調する単語を示します。 |
第 5 章「衝突の回避」を参照してください。 この操作ができるのは、「スーパーユーザー」だけです。 |
|
\ |
枠で囲まれたコード例で、テキストがページ行幅を超える場合に、継続を示します。 |
|
コード例は次のように表示されます。
C シェル
machine_name% command y|n [filename] |
C シェルのスーパーユーザー
machine_name# command y|n [filename] |
Bourne シェルおよび Korn シェル
$ command y|n [filename] |
Bourne シェルおよび Korn シェルのスーパーユーザー
# command y|n [filename] |
[ ] は省略可能な項目を示します。上記の例は、filename は省略してもよいことを示しています。
| は区切り文字 (セパレータ) です。この文字で分割されている引数のうち 1 つだけを指定します。
キーボードのキー名は英文で、頭文字を大文字で示します (例: Shift キーを押します)。ただし、キーボードによっては Enter キーが Return キーの動作をします。
ダッシュ (-) は 2 つのキーを同時に押すことを示します。たとえば、Ctrl-D は Control キーを押したまま D キーを押すことを意味します。