Comments
Description
Transcript
HP-UX 互換性
HP-UX 互換性 Technical white paper 目次 はじめに ...................................................................................................................................................................2 互換性の種類............................................................................................................................................................2 HP の方針.................................................................................................................................................................3 PA-RISC から Itanium ベースのシステムへの移行 .............................................................................................................4 アーキテクチャ間のバイナリ互換性............................................................................................................................5 アーキテクチャ間のソース互換性...............................................................................................................................5 Java アプリケーションのソース互換性とバイナリ互換性 ..................................................................................................5 Linux から HP-UX への移行...........................................................................................................................................6 互換性の提供方法 .....................................................................................................................................................6 まとめ ......................................................................................................................................................................7 表 1. HP-UX 11i のリリース ......................................................................................................................................7 付録: 制限事項 .........................................................................................................................................................8 1 はじめに 1986 年に PA-RISC 上で動作する HP-UX オペレーティング システムを発表して以来、HP はオペレーティング システムのすべての アップデートでソース互換性とバイナリ互換性を提供するという方針を貫いています。この方針は、1974 年に MPE オペレーティング システムと HP 3000 製品ファミリを発表したときから続いている、互換性提供の伝統に基づくものです。 アプリケーションの複雑さが増し、他社のライブラリへの依存度が高まるにつれて、ソース互換性とバイナリ互換性の考え方も複雑にな ってきました。現在、ソフトウェア開発者やエンド ユーザーが求めているのは、新しい OS リリースが以前のリリースとのソース互換性 とバイナリ互換性を実現していることだけではありません。他社の複数のライブラリが異なる OS リリース上で異なるコンパイラを使っ て生成された可能性があっても、それを混在して使えることが求められています。HP Integrity サーバ(Itanium® 2 プロセッサ搭載)の 発表によって、アーキテクチャを越えたバイナリ互換性や、ディスク上に保存されたりネットワーク経由で伝送される際のデータ構造の 互換性も新たに求められています。これらの新しいニーズに応えて、HP は互換性の概念を形式化し、HP-UX のすべてのリリースでそ のようなニーズが満たされるようにするプロセスを整備しています。 このホワイトペーパーでは、互換性の種類、HP の互換性に対する信念、その信念を HP-UX 11i v2 でどのように実現したかについ て説明します。 互換性の種類 アプリケーションやアプリケーション クラスに対する互換性が期待されるのは、そのアプリケーションを作成または展開するシステムが 変更された場合を想定するからです。システムの変更は、たとえば HP-UX のメジャーリリースやマイナーリリース、ソフトウェアパッチ、 ハードウェア プラットフォームの移行、あるいはプログラミング環境の移行(32 ビットから 64 ビットへの移行など)などがきっかけとな って行われます。このようなきっかけがさまざまな面で互換性に影響を与えます。 ソース互換性 (所定のイベントに関する所定のアプリケーション クラスの)ソース互換性とは、アプリケーションを、その全体を、(ソースコードやメイク ファイルを)まったく変更することなく再コンパイルすることができ、さらに生成されたバイナリが従来とまったく同一の動作を実行すると いう意味です。ソース互換性を維持するには、コンパイラ、システム ヘッダ ファイル、システム ライブラリ(アーカイブまたは共有)、シス テム コマンド、システム データ ファイル、カーネルに十分に注意する必要があります。 バイナリ互換性 バイナリ互換性とは、実行可能モジュールとアプリケーション共有ライブラリから構成されるアプリケーションが、再コンパイルやその他 の変更を行わずに、以前とまったく同一の動作を実行するという意味です。バイナリ互換性は、サポートされているあらゆるスクリプト 言語(shell、awk、make など)で記述されたスクリプトにも適用されます。バイナリ互換性が確実なら、アプリケーションを、開発環境と は違う環境に展開することもできます。バイナリ互換性を維持するには、システム共有ライブラリ、システム コマンド、システム データ ファイル、カーネルに十分に注意する必要があります。 データ互換性 データ互換性とは、ある環境で開発、生成されたアプリケーションが、別の環境で開発、配備された対応するアプリケーションと(ディス ク ファイルやネットワーク経由で)データ交換できるという意味です。PA-RISC から Itanium ベースのシステムに移行する場合、このデ ータ互換性の問題が特に重要です。データ互換性を維持するには、コンパイラとシステム ヘッダ ファイルに十分に注意する必要があ ります。 再配置可能オブジェクトの互換性 再配置可能オブジェクトの互換性とは、アプリケーションを、その一部を再コンパイルし、異なる環境で生成した複数の再配置可能オブ ジェクト ファイルを再リンクすることで、生成できるという意味です。再配置可能オブジェクトの互換性を維持するには、コンパイラ、オブ ジェクト ファイル フォーマット、システム ヘッダ ファイル、システム ライブラリ(アーカイブまたは共有)、システム コマンド、システム デ ータ ファイル、カーネルに十分に注意する必要があります。再配置可能オブジェクトの互換性がない場合、ソフトウェアはすべて再コン パイルする必要があります。別の ISV(Independent Software Vendor: 独立系ソフトウェア ベンダ)ソフトウェアのスタック上にある ISV アプリケーションは、それと依存関係にあるアプリケーションがすべて再コンパイルされるまで待つ必要があります。この状況は「ク ラスの移行」と呼ばれ、新しい環境を採用するまでに長い時間がかかります。 上位互換性と下位互換性 互換性について取り上げる場合、普通は前方へ進む場合、たとえば HP-UX のあるリリースから次のリリースへの移行や、あるプロセ ッサ アーキテクチャから新しいプロセッサ アーキテクチャへの移行が問題になります。パッチ リリースの場合には(後述)、逆方向への 互換性も問題になります。下位互換性とは、ある環境(たとえば特定のパッチが当てられているシステム)で開発したアプリケーションを、 それ以前の環境(たとえばそのパッチが当てられていないシステム)で展開できるという意味です。 2 HP の方針 HP はさまざまな変更に対して異なるレベルでの互換性をサポートします。各種の OS リリースおよびその他の移行に対する互換性に ついてまとめたものを次に示します。 メジャーリリース HP-UX のメジャーリリースには重要な新機能が追加されていて、普通は「.0」リリース(11.0 など)に対応します。メジャーリリースの 発表はそれほど頻繁には行われず(1 年半以上の間隔がおかれる)、アプリケーションを以前のリリースから移行するための互換性に 対する要求はあまり厳しくありません。以前のリリースで動作するアプリケーションについては、バイナリ互換性とデータ互換性が必要 です。ソース互換性については、重要ではありますが、新機能を提供し、新しい規格に準拠するために妥協することがあります。再配 置可能オブジェクトの互換性は保証されません。つまり、メジャーリリースではクラスの移行が暗黙の要求です。 マイナーリリース HP-UX のマイナーリリースには新機能が追加されていますが、クラスの移行を行わなければならないほどの重要な機能は追加されま せん。以前のリリースで動作するアプリケーションについて、マイナーリリースではソース互換性、バイナリ互換性、データ互換性、再配 置可能オブジェクトの互換性が必要です。 パッチ リリース HP-UX のパッチ リリースは欠陥を修正するために出されるのが普通ですが、限定的な方法で新機能を追加することもできます。パッ チ リリースでは、マイナーリリースの互換性の要件に加えて、パッチ ストリーム内の再配置可能オブジェクト ファイルに対する下位互 換性(すなわちそのパッチが適用されたマイナーリリースへの下位互換性)が必要です。つまり、パッチが適用された環境でコンパイル された再配置可能オブジェクト ファイルは、パッチが適用されていない環境でコンパイルされた再配置可能オブジェクト ファイルと完全 に互換でなければなりません。さらに、生成される実行可能モジュールも、パッチが適用されていない環境と互換である必要がありま す。ただし、パッチによって追加される新機能を利用するためにソースコードやメイクファイルが変更される場合は、このような互換性は 必要ありません。したがって、新機能を利用するために変更し、再コンパイルしたアプリケーションを、その機能を実現するパッチが適 用されていない環境で実行することは、当然ですが制限されます。 Itanium ベースのシステムへの移行 PA-RISC から Itanium ベースのシステムにアプリケーションを短期間で移行するには、ソース互換性、バイナリ互換性、データ互換性 が必要です。そのためには、2 つのアーキテクチャ上でサポートされる HP-UX バージョン間で互換性が必要です。バイナリ互換性が あると、HP-UX のあるバージョンで動作する PA-RISC のアプリケーションが、Itanium ベースのシステム上でサポートされる HP-UX バージョン上で動作します。ソース互換性があると、アプリケーションを何も変更せずに再コンパイルし、ネイティブモードの性能を完全 に引き出せます。データ互換性によって、そのままデータを Itanium の環境へ移行することができます。 64 ビット プログラミング環境への移行 32 ビットから 64 ビットへのプログラミング環境の移行は、大規模アプリケーションでは大変な作業になるのが普通です。この場合は 基本データ型のサイズが変わるので、ソース互換性とデータ互換性は保証できません。しかし、データ モデルの変更に影響されない 範囲では、開発者ができるだけ楽に移行を進めることができるように、高いレベルのソース互換性が提供されています。64 ビット HPUX プラットフォーム上で継続して 32 ビット アプリケーション バイナリを稼動させることができます。 HP がお客様にお約束する互換性は「行儀の良い(well-behaved)」アプリケーションに限定されています。「行儀の良い」アプリケーショ ンは、次の要件に従います。 · ドキュメントに記述されてる API のみを使用していること · 特にドキュメントに明記された必須のプラクティスに準拠していること (たとえば、パス名を「バーコード」するようなプラクティスを避けること) · ドキュメントに記載された機能のうち、プラットフォーム、アーキテクチャ、あるいは構成の制限があることが明記されている機能を使 用しないこと · HP 製品を分解しないこと、また、それを利用しないこと 3 PA-RISC から Itanium ベースのシステムへの移行 HP は、PA-RISC アプリケーションが Itanium ベースのシステムに移行する際のバイナリ互換性、ソース互換性、データ互換性をサポ ートします。バイナリとソースについては HP-UX バージョン 11.0 以降を移行ポイントとしてお勧めします。図 1 は、使用できる移行オ プションです。 図 1: Itanium ベースの HP-UX システムへのシームレスな移行の過程 移行前アプリケーション HP-UX の PA-RISC HP からの提供品 HP Aries:ダイナミック オブジェクト コード トラ ンスレータ (再コンパイル不要) Itanium® ベースの HP-UX システムに 展開するバイナリ 移行前の HP-UX バイナリ アプリケーション HP コンパイラ (コンパイル後使用) Linux 実行環境 (再コンパイル不要) ネイティブな HP-UX バイナリ ネイティブな Linux バイナリ Linux の Itanium ベースの アプリケーション (再コンパイル) ネイティブな HP-UX バイナリ Java™ HP JVM & J2EE アプリケーション (再コンパイル不要) 移行前のバイナリ Linux Porting Kit 4 アーキテクチャ間のバイナリ互換性 PA-RISC 向けに作成された「行儀の良い」アプリケーションのほとんどは、何も変更せずに Itanium ベースのシステム上で動作します。 このようなアプリケーションは、「Aries」と呼ばれるバイナリ トランスレータにより動作します。Aries は、PA-RISC 命令シーケンスをネ イティブな命令セットに変換する動的トランスレータと、PA-RISC システム ABI(Application Binary Interface: アプリケーション バ イナリ インタフェース)を模倣するシステム インタフェース階層で構成されます。Aries は、PA-RISC アプリケーションが実行されるたび に HP-UX カーネルによって自動的に実行され、ユーザーはそのアプリケーションが PA-RISC 向けバイナリか、Itanium 向けバイナリ かを意識する必要はありません。 Aries はハードウェアに近いレベルの信頼性を提供し、マルチスレッド アプリケーションをサポートします。また、アプリケーションと同じ 特権レベルで動作するので、余分なセキュリティ リスクが取り込まれることはありません。 ただし、一部のアプリケーションはハードウェアやオペレーティング システムの特定の機能に依存している場合があり、そのために互 換モードでサポートされないことがあります。Aries の制限については、付録をご参照ください。 Aries は、同一プログラム内に PA-RISC コードとネイティブ コードが混在するアプリケーション(混合モード プログラム)はサポートしま せん。このようなアプリケーションは、PA-RISC コードだけで構成されるプログラムとネイティブ コードだけで構成されるプログラムの 2 つに、手作業で分割する必要があります。この方法の詳細については、ホワイトペーパー『Integrity サーバ対応 HP-UX 11 v2 と混合 モード プログラム:その理由と実現方法』を参照してください。www.hp.com/jp/hpux から入手いただけます。 バイナリ互換性は動的命令変換によって実現されているので、互換モードで動作するアプリケーションの性能は、再コンパイルしてネイ ティブ モードで動作させた場合の性能より劣ります。大部分が対話型のアプリケーションや I/O を多用するアプリケーションの場合は、 性能劣化はほとんど見られないか、またはまったく見られません。しかし、大量の計算を実行するアプリケーションの場合は、最近の PA-RISC システム上に比べて動作速度が著しく遅くなることがあります。性能が重要視される場合は、アプリケーションとライブラリを すべて再コンパイルすることをお勧めします。 Itanium ベースのシステム向けにコンパイルされたアプリケーションを、PA-RISC システム上で実行することはできません。 アーキテクチャ間のソース互換性 HP は、2 つのハードウェア プラットフォーム間のソース互換性について次のような発表をしています。 HP-UX 11i v1.6 より、お客様および ISV(Independent Software Vendor: 独立系ソフトウェア ベンダ)が作成した、PARISC 上の HP-UX でサポートされるアプリケーション*は、ソースコードを変更しなくても、Itanium ベースのシステム上で再コン パイル可能です。 *アプリケーションは「行儀の良い」ものであり、PA-RISC アーキテクチャに明示的な依存関係を持たない必要があります。 この目標を達成するために、HP は次のような項目を実施しています。 · 2 つのアーキテクチャの C++コンパイラは共通のフロントエンド ソースコードを共有する · HP-UX ヘッダ ファイルとシステム API は共有ソースコードをベースにする · HP-UX は Itanium ベースのシステム上で 32 ビット アプリケーションをサポートしているので、アプリケーションを 64 ビットに移植 する必要はない · HP-UX のすべてのコンパイラとライブラリは必ず互換性試験を受ける · 非互換性は包括的なレビュー プロセスの対象であり、必要な場合を除いて許されないが、許された場合は特例的に互換性が損な われたことをドキュメントに記述する · 数百万行のソースコードで構成される HP-UX オペレーティング システムとそのコマンドおよびライブラリ、および多くの ISV アプリケ ーションはすでに新しいコンパイラでコンパイルされており、これまでに例外として特定されていない非互換性は障害として処理され、 修正されている もちろん、一部のアプリケーションはやむを得ず移植できない場合があり、ネイティブな実行環境への移行を成功させるために多少の 変更が必要になる可能性はあります。HP は、次の開発者向け Web ページで STK (Software Transition Kit) を提供しています。 このキットを使用して、アプリケーションのソースコードをスキャンして移行上の問題を検索できます。www.hp.com/go/stk 。既知の 互換性の例外事項については、付録をご参照ください。 Javaアプリケーションのソース互換性とバイナリ互換性 HP は両プラットフォーム上で Java SDK/RTE リリース 1.3.1.13 およびリリース 1.4.2.04 をサポートします。これらのリリースの Java アプリケーションは、両プラットフォーム間で双方向の互換性があります。 5 Linux から HP-UX への移行 Itanium ベースの HP-UX システムは、多くの Itanium ベースの 64bit Linux 上で開発されたアプリケーションにソース互換性とバイ ナリ互換性を提供します。ソース互換性は LPK (Linux Porting Kit)、バイナリ互換性は LRE(Linux Runtime Environment: Linux 実行環境)によって提供されます。 LPK のツールとライブラリを使うと、できるだけ少ないソースコードの変更で Linux アプリケーションを HP-UX に移植できます(この製 品 は PA-RISC と Itanium ベースの HP-UX シ ステムの ど ち ら で も 使 えま す) 。詳 細 は Web 上 でご 参 照 い た だ け ま す。 http://devrsrc1.external.hp.com/LPK/ LRE は、 Itanium ベースの Linux システム上でコンパイルされたアプリケーションが、再コンパイルもエミュレーションも行わずに Itanium ベースの HP-UX システム上で動作できるようにします。LRE は、HP-UX 上での Linux システム コールとシグナルのサポート を提供し、Linux バイナリのデバッグをサポートします。Linux アプリケーションに対するサポートには次のような制限があります。 · アプリケーションは共有されることを前提とすること · アプリケーションは gcc 2.96 以降でコンパイルされていること · アプリケーションは Itanium ベースの 64 ビット バイナリであること(LRE は 32 ビットの x86 バイナリのエミュレーションをサポート しない) · /proc ファイルシステムや ptrace システム コールのサポートは未提供 · サポート対象はユーザー空間アプリケーションに限定されており、デバイス ドライバはサポート対象外 · 永続的システム ファイル(/etc/utmp、/etc/wtmp など)のフォーマットは HP-UX 上と Linux 上では違うことがあり、それらのファ イルに直接アクセスするアプリケーションは動作しない可能性がある 互換性の提供方法 互換性は製品品質の基本的な側面の 1 つとみなされます。全体的な品質管理の一環として、HP はオペレーティング システムのすべ てのリリースで互換性を安定的に提供するためのプロセスをいくつも取り揃えております。その中心となるのが AACT (Application Availability and Compatibility Team) です。これは互換性についての社内開発者教育、互換性への影響を調べる変更点レビュ ー、非互換性を避けるための実装戦略のアドバイスを行うチームです。HP-UX オペレーティング システムを構成するソフトウェアの開 発研究室ごとに AACT に対する代表者を決め、その人物がその研究室の互換性に関する責任者になります。 プロセスの始めとして、AACT は包括的な互換性教育パッケージを作成します。このパッケージには、弊社のお客様に互換性を提供 することの大切さ、互換性の種類、非互換性を生じやすい典型的な間違い、非互換性を生じないように将来の変更に備える手法、互 換性問題に対して考えられる解決策などが含まれます。 互換性の問題は製品ライフサイクルの初期段階で解決され、各製品は設計から実装、リリースにいたるまで互換性に関する規約を堅 持します。HP-UX システム リリースはそれぞれの互換性要件を明確に定義し、それぞれの製品がその要件に沿っている必要があり ます。互換性の問題(または可能性のある問題)が見つかった場合、AACT に通知され、レビューが行われます。そこで AACT の互 換性の専門家によって非互換性を完全に回避できる解決策が見つかる場合もあります。最終的には、その製品を開発した研究室の 管理者が互換性の例外事項を承認する必要があります。例外事項はすべて文書化され、リリース ノートに記述されます。 AACT では、開発エンジニアがシステム API を検索して、その API に依存するすべての既知の製品(他社の製品を含む)を発見でき るようにするための依存関係データベースを管理しています。このデータベースは、廃止するかどうかの判断に役立ち、API の変更案 について潜在的な問題を特定するのにも便利です。 6 まとめ HP はソース互換性とバイナリ互換性を提供することにより、PA-RISC から Itanium ベースのシステムへの移行や、ある OS リリース から次のリリースへの移行を、短期間でスムーズに実施できるようにしています。高いレベルのソース互換性があるということは、性能 を重視するアプリケーションが Intel® Itanium アーキテクチャの優れた性能をできるだけ早く活用できるという意味です。また、Aries が提供するバイナリ互換性により、お客様は新しいシステムに短期間で移行できます。 表 1. HP-UX 11i のリリース リリース名 リリース ID サポートするプロセッサ アーキテクチャ HP-UX 11i v1 B.11.11 PA-RISC HP-UX 11i v1.6 B.11.22 Intel Itanium HP-UX 11i v2 B.11.23 Intel Itanium 7 付録: 制限事項 Aries 互換モード環境には次のような制限事項があります。 · サポートされるのはピュアな PA-RISC アプリケーションだけであり、PA-RISC コードと Itanium ネイティブ コードの混在は不可能 · カーネルやアーキテクチャに依存するコードはサポート対象外。内部カーネル データ構造(/dev/kmem を含む)、マシン状態、特 権モード命令に依存する既存の PA コードは再作成する必要がある · HP-UX リリース 9.0 より前にコンパイルされた PA-RISC アプリケーションはサポート対象外 · タイミングに依存する(リアルタイム応答性など)アプリケーションは正しく動作しない可能性がある · PA-RISC プロセッサ ステータス ワードの B (Taken Branch) ビットを参照するアプリケーションはサポート対象外 · ptrace、ttrace、profil システム コールを使うアプリケーションはサポート対象外(ただし gdb を使う PA-RISC アプリケーションの デバッグはサポート対象) · すべての NaN は Quiet NaN として動作し、Signaling NaN はサポート対象外 · Aries はアプリケーションの仮想メモリ空間を多少消費するので、ほとんどすべての使用可能メモリを使うアプリケーションは正しく動 作しない可能性がある · fork と vfork の違いに依存するアプリケーションはサポート対象外 PA-RISC から HP-UX 11i v2 時点の新しいアーキテクチャにソースコードを移行する際には、次のような制限事項があります。 · K&R C のサポートは終了している · Convex パラレル化プラグマとライブラリ関数のサポートは終了している(その代わりとして OpenMP が両プラットフォームでサポ ートされている) · アーキテクチャ固有のコード、オプション、プラグマは、新しいアーキテクチャでは変更する必要がある。PA-RISC アセンブリ コード、 インライン アセンブリ演算、PA-RISC のアーキテクチャと実行環境のコードのチューニングに使用するオプションとプラグマ、 PARISC でのみサポートされるシステム API の呼び出しなどが該当する · #pragma HP_ALIGN のサポートは終了している(代わりに Gnu や Sun のコンパイラに共通の#pragma pack を使う必要があ る) · 浮動小数点演算の結果が多少異なる場合があり(通常は Itanium ベースのシステムの演算結果のほうが精度が高い)、アプリケー ションは NaN、非正規化、無限値、符号付き 0、例外、0 への初期化を扱う際に違いがある可能性がある · 他社のライブラリを使うには、それが Intel Itanium プロセッサ ファミリと HP-UX 11i v2 で利用でき、サポートされていることが条 件となる。1 つのプログラム内でネイティブ コードと互換モード コードを混在させることはできない 8 お問い合わせはカスタマー インフォメーションセンターへ 03-6416-6660 月~金 9:00~19:00 土 10:00~18:00 (日、祝祭日、年末年始および 5/1を除く) HP UX 製品に関する情報は http://www.hp.com/jp/hpux HP UX に関する技術情報は http://www.hp.com/jp/developer ntel、インテル、Intel Inside ロゴ、Itaniumは、米国におけるIntelCorporationまたはその子会社の 商標または登録商標です。 Linuxは、Linus Torvalds氏の米国およびその他の国における商標または登録商標です。 記載されている会社名および商品名は、各社の商標または登録商標です。 記載事項は2004年7月現在のものです。 本書に記載された内容は、予告なく変更されることがあります。 本書中の技術的あるいは校正上の誤り、省略に対して、 いかなる責任も負いかねますのでご了承ください。 本書は、『HP-UX compatibility (5981-7108EN, 07/2004) 』(英語) をベースに日本語で提供するものです。 © Copyright 2004 Hewlett-Packard Development Company,L.P. 日本ヒューレット・パッカード株式会社 〒140-8641 東京都品川区東品川 2-2-24 天王洲セントラルタワー 9 PDFHS03-008-02