(57)【要約】      （修正有）【課題】プリオペレーティングシステム環境における実行時においてモジュールをロードする単純で、柔軟性があり、かつ、費用効果のある方法を提供する。【解決手段】ライブラリモジュール４８の第１のインスタンスを含むプリオペレーティングシステムライブラリを記憶するライブラリメモリ空間と、ローダ４６およびライブラリモジュール４８の第２のインスタンスを含むアプリケーション４２，４４を記憶するアプリケーションメモリ空間と、第１のメモリ空間および第２のメモリ空間に接続され、実行時においてローダ４６を実行し、ローダ４６の制御下で、第１のインスタンスからライブラリモジュール４８の第２のインスタンスを生成し、モジュール４８の第２のインスタンスをアプリケーション４２、４４とリンクするプロセッサとを備える。【選択図】図４Ａ
2006092544.tif 000002
【特許請求の範囲】
【請求項１】
ライブラリモジュール（４８）の第１のインスタンスを含むプリオペレーティングシステムライブラリ（２１６）を記憶するように動作可能なライブラリメモリ空間と、
ローダ（４６）および前記ライブラリモジュール（４８）の第２のインスタンスを含むアプリケーション（４２，４４）を記憶するように動作可能なアプリケーションメモリ空間と、
前記第１のメモリ空間および前記第２のメモリ空間に接続されたプロセッサであって、
実行時において前記ローダ（４６）を実行し、
前記ローダ（４６）の制御下で、前記第１のインスタンスから前記ライブラリモジュール（４８）の前記第２のインスタンスを生成し、前記モジュール（４８）の前記第２のインスタンスを前記アプリケーション（４２、４４）とリンクする
ように動作可能なプロセッサと、
を備える電子システム。
【請求項２】
前記アプリケーション（４２、４４）は、プリオペレーティングシステムアプリケーションである
請求項１に記載の電子システム。
【請求項３】
前記ローダ（４６）は、第１の後続の実行時において、前記アプリケーション（４２、４４）に機能を追加するようにさらに動作可能である
請求項１に記載の電子システム。
【請求項４】
前記ローダ（４６）は、第２の後続の実行時において、前記アプリケーション（４２、４４）から機能を除去するようにさらに動作可能である
請求項１に記載の電子システム。
【請求項５】
前記ローダ（４６）は、第３の後続の実行時において、前記アプリケーション（４２、４４）の機能を変更するようにさらに動作可能である
請求項１に記載の電子システム。
【請求項６】
前記ライブラリ（２１６）は、
アプリケーションバイナリフォーマット
を有する
請求項１に記載の電子システム。
【請求項７】
前記ライブラリ（２１６）の前記バイナリフォーマットは、ＥＬＦ６４である
請求項６に記載の電子システム。
【請求項８】
前記リンクすることは、
前記モジュール（４８）の前記第２のインスタンスの内容を構文解析することを
さらに含む、
請求項１に記載の電子システム。
【請求項９】
前記リンクすることは、
アドレスを再配置すること
をさらに含む
請求項８に記載の電子システム。
【請求項１０】
プリオペレーティングシステムアプリケーション（４２，４４）をコンパイルすることと、
前記アプリケーションに動的ローダ（４６）を追加することと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリオペレーティングシステム環境におけるモジュールの動的リンクに関する。
【背景技術】
【０００２】
製造者は、コンピュータシステムにオペレーティングシステムをインストールする前に、通常、ハードウェアおよびファームウェアの双方のオペレーションをテストして検証する。
【０００３】
［プリオペレーティングシステム環境］
Ｉｎｔｅｌの中央処理装置を有する多くのコンピュータシステムの場合、プリオペレーティングシステム検証環境は、拡張可能ファームウェアインターフェース（ＥＦＩ）である。
ＥＦＩ環境は、通常、チップセット、システムバス、Ｉ／Ｏバス、周辺機器、システムファームウェア、および他のシステムレベルのエンティティ間の相互作用をテストする検証ツールと共に使用される。
ＥＦＩは、業界標準であり、すべてのＩＰＦシステムに適用される。
具体的には、ＥＦＩファームウェアはシステム抽象レイヤ（ＳＡＬ）とインターフェースし、次に、ＳＡＬはプロセッサ抽象レイヤ（ＰＡＬ）とインターフェースし、ＰＡＬはハードウェアＩＰＦプロセッサとインターフェースする。
【０００４】
ＥＦＩ環境は、オペレーティングシステムがブートされるまで、コンピュータシステムのメモリを管理する。
プリオペレーティングシステム検証アプリケーションは、ＥＦＩの内部（ＥＦＩアプリケーション）およびＥＦＩの上部（非ＥＦＩアプリケーション）の双方で、実時間クロックや、ＥＦＩパラメータおよび変数名のテーブル等の関数のＥＦＩライブラリを利用するＥＦＩ環境の一部として実行することができる。
また、ＥＦＩライブラリは、オペレーティングシステムがブートされた後、オペレーティングシステムによってアクセス可能である。
【０００５】
［コンパイル］
コンピュータは、通常、低級マシン言語を実行するのに対して、プログラミングは、通常、高級言語で行われる。
低級マシン言語は、コンピュータプロセッサによって容易に処理されるが、プログラマが使用するには難しく、多くの時間を要する。
高級言語は、プログラマが使用するのに容易であり、多くの時間を要しない。
コンパイラは、そのソース言語が高級言語であり、そのオブジェクト言語が実際のコンピュータのマシン語に近く、アセンブリ言語または或る種のマシン言語（再配置可能または絶対）のいずれかであるトランスレータである。
高級ソース言語の実行可能マシン言語プログラムへの変換は、多くの場合、２つ以上の変換ステップを含む。
例えば、プログラムをまずマシン依存アセンブリ言語にコンパイルし、次いで、アセンブルして再配置可能マシンコードを生成し、最後に、ロードおよびリンクを行って実行可能マシンコードを生成することは珍しくない。
その上、コンパイルステップ自体も、通常、最終的なオブジェクトプログラムを生成する前に、プログラムを徐々に変換してさまざまな中間形式にする多数のパスを含む。
【０００６】
［ローダ］
ローダまたはリンキングローダは、そのオブジェクト言語が実際の実行可能マシンコードであり、そのソース言語がほとんど同一であるが、通例、再配置可能コードが真に実行可能になるために変更を受けなければならないポイントを指定するデータのテーブルを伴った再配置可能形式のマシン言語プログラムから成るトランスレータステップである。
このステップは、実際のメモリが割り当てられた後の実行直前に実行される。
【０００７】
［ライブラリ］
スコープは、通常、動的または静的に分類される。
動的スコープルールは、実行時におけるプログラムの実行の点からスコープを定義する。
静的スコープルールは、構築時（変換時）におけるプログラムの構造の点からスコープを定義する。
プログラムは、通常、コンパイラに利用可能なライブラリのモジュールに対するファンクションコールを含む。
静的ライブラリ環境では、プログラムのファンクションコールによって参照されるモジュールは、構築時にリンクおよびロードされ、実行時には変更できない。
動的環境では、ライブラリは、実行時に利用可能であり、ライブラリモジュールのリンクおよびロードは、実行の初期化直前に行われる。
【０００８】
［参照］
参照は、所与の識別子の一意で現在アクティブな関連を使用して当該識別子に現在関連したデータまたはプログラムオブジェクトを取り出すオペレーションである。
識別子の参照が、現在実行中のサブプログラム内でのみアクティブな関連を使用する場合、当該参照はローカル参照として分類される。
グローバル参照は、プログラムの実行全体を通じてアクティブな関連を参照することである。
ローカル環境またはローカル参照環境は、参照環境の最後の変更時に導入されたそれらローカルな関連を指定するのに使用される。
【０００９】
上述した概念を、図１Ａ〜図３と共に以下で説明し例示する。
【００１０】
図１Ａを参照して、静的プリオペレーティングシステム構築時環境１０が示されている。
この環境１０は、ＥＦＩアプリケーション２および非ＥＦＩアプリケーション４を含む。
これらアプリケーションの双方は、ＥＦＩライブラリモジュール８のファンクションコールを含む。
ライブラリモジュール８は、再配置可能コードが真に実行可能なマシンコードになるために変更を受けなければならないポイントを指定するデータのテーブルを伴った再配置可能マシンコードの形式である。
静的プリオペレーティングシステム構築時環境１０は静的ローダ６を含む。
アプリケーション２のコンパイルの最終ステップの期間中、静的ローダ６は、モジュール８の第１のコピーをアプリケーション２にリンクし、相対アドレスを絶対アドレスに置き換える必要がある箇所のすべてを変更する。
同様にして、非ＥＦＩアプリケーション４のコンパイルの最終ステップの期間中、静的ローダ６は、モジュール８の第２のコピーをアプリケーション４にリンクし、相対アドレスを絶対アドレスに置き換える必要がある箇所のすべてを変更する。
このような静的プリオペレーティングシステム構築時環境では、各アプリケーション２および４の各ファンクションコールは、再配置可能ライブラリモジュール８のコピーを必要とする。
アプリケーション２および４のソースコードまたはコールされたモジュール８のいかなる変更も、それらアプリケーションの完全な再コンパイルを必要とする。
【００１１】
図１Ｂを参照して、静的プリオペレーティング構築時環境１０（図１Ａ）に関連した静的プリオペレーティングシステム実行時環境１２は、もはやローダにアクセスしない。
コンパイルされたＥＦＩライブラリモジュール８にリンクされているコンパイルされたＥＦＩアプリケーション２は、再配置不可マシンコードフォーマットを有し、メモリにロードされて実行される。
【００１２】
図１Ｃは、実行中の静的プリオペレーティング構築時環境１０に関連した静的プリオペレーティングシステム実行時環境１２を示している。
コンパイルされたアプリケーション２は、ＥＦＩモジュール８のコンパイルおよびリンクされたコピーによって満たされるファンクションコール１４を含む。
グローバル参照を有するライブラリモジュール８の内部の変数は、コンパイルされたアプリケーション２に関連するすべての変数にアクセスすることができる。
この参照環境は静的であり、構築時に設定され、再コンパイルを行うことなく変更することはできない。
また、アプリケーション２のコードに何か変更があれば、パッケージ全体を再コンパイルする必要があり、モジュール８のコードに何か変更があれば、パッケージ全体を再コンパイルする必要がある。
したがって、何か必要な機能を追加すると、その機能を静的プリオペレーティング構築時環境に追加しなければならず、パッケージ全体を再コンパイルする必要がある。
【００１３】
図２Ａを参照して、静的プリオペレーティングシステム構築時環境２０は、多数（ここでは４つ）のアプリケーションＡＡ〜ＤＤを含む。
これらアプリケーションのいくつかはＥＦＩアプリケーションであり、これらアプリケーションのいくつかは非ＥＦＩアプリケーションであり、これらアプリケーションのすべてはＥＦＩライブラリモジュールＮＮからの機能を必要とする。
静的ローダ６は、モジュールＮＮをアプリケーションのそれぞれにコピーし、モジュールＮＮの再配置可能マシンコードをアプリケーションＡＡ〜ＤＤのマシンコードにリンクし、実行可能な絶対マシンコードフォーマットの４つのアプリケーションを生成する。
【００１４】
図２Ｂを参照して、静的プリオペレーティングシステム構築時環境２０（図２Ａ）に関連した静的プリオペレーティングシステム実行時環境２２は、もはやローダにアクセスしない。
アプリケーションＡＡ〜ＤＤの絶対バイナリを実行することができる。
再コンパイルを行うことなく、アプリケーションにも共有ライブラリモジュールにも変更を行うことができない。
また、セット全体の完全なコンパイルを行うことなく、アプリケーションＡＡ〜ＤＤのいずれにも機能を追加する方法もないし、当該アプリケーションＡＡ〜ＤＤのいずれからも機能を除去する方法もない。
【００１５】
図３を参照して、プリオペレーティングシステム環境アップグレードプロセス１１２は、静的構築時環境１１２、静的実行時環境１１４、およびアップグレード環境１２０を含む。
上述したように、静的構築時１１０の期間中、ＥＦＩアプリケーション１００および非ＥＦＩアプリケーション１０４は、ファンクションコール参照を満たすようにＥＦＩライブラリ１０２を使用してコンパイルされる。
これは、静的ローダ１０６がＥＦＩライブラリ１０２からアプリケーション内へモジュールをコピーして、それらモジュールを絶対マシンコードフォーマットでリンクすることによって行われる。
静的実行時１１４の期間中、リンクされたライブラリモジュールを有するコンパイルされたＥＦＩアプリケーション１１６が実行される。
また、静的実行時１１４の期間中、リンクされたライブラリモジュールを有するコンパイルされた非ＥＦＩアプリケーション１１８も実行される。
アップグレード時１２０の期間中、ＥＦＩアプリケーションまたは非ＥＦＩアプリケーションに対してコードアップグレード１２２が行われると、プロセスは、パス１２４を介して構築時環境１１０に戻り、アプリケーションを再コンパイルする。
参照されたライブラリモジュールに対してコードアップグレードが行われると、プロセスは、パス１２４を介して構築時環境１１０に戻り、アップグレードされたモジュールを有するＥＦＩライブラリ１０６を再コンパイルした後、アプリケーションを再コンパイルする。
プロセスを初めからやり直すことなく、静的環境を変更する手段はない。
これは不便であり、多大な費用を要し、手続き上複雑であり、柔軟性がなく、かつ、多くの時間を要する。
【発明の開示】
【課題を解決するための手段】
【００１６】
動的リンキングローダがプリオペレーティングシステム環境用に提供される。
【００１７】
このようなローダは、プリオペレーティングシステム環境における実行時においてモジュールをロードする単純で、柔軟性があり、かつ、費用効果のある方法を提供することができる。
【発明を実施するための最良の形態】
【００１８】
図４Ａを参照して、ＥＦＩアプリケーション４２および非ＥＦＩアプリケーション４４を含む動的プリオペレーティングシステム構築時環境４０が示されている。
これらＥＦＩアプリケーション４２および非ＥＦＩアプリケーション４４の双方は、ＥＦＩライブラリモジュール４８のファンクションコールを含む。
ライブラリモジュール４８は、再配置可能コードが真に実行可能なマシンコードになるために変更を受けなければならないポイントを指定するデータのテーブルを伴った再配置可能マシンコードの形式である。
【００１９】
動的プリオペレーティングシステム構築時環境４０は、動的ローダ４６を含む。
この動的ローダ４６は、ＥＦＩアプリケーション４２の一部として構成され、また、非ＥＦＩアプリケーション４４の一部としても構成される。
ライブラリモジュール４８は、アプリケーションバイナリフォーマット（ＡＢＩ（Application Binary Format））を有する。
ＥＦＩシステム用にIntelによって定義されたＡＢＩがＥＬＦ６４である。
ＥＦＩアプリケーション４２のコンパイル中、ＡＢＩ準拠のライブラリモジュール４８の参照が行われて挿入されるが、ロードは行われない。
非ＥＦＩアプリケーション４４のコンパイル中、ＡＢＩ準拠のライブラリモジュール４８の別の参照が行われて挿入されるが、ロードは行われない。
【００２０】
図４Ｂを参照して、動的プリオペレーティング構築時環境４０（図４Ａ）に関連した動的プリオペレーティングシステム実行時環境４９は、各アプリケーションの一部として動的ローダ４６を含む。
動的ローダ４６は、モジュールをメモリにロードする方法、ライブラリモジュールの内容を構文解析する方法、必要な再配置を実行する方法、および最後に、ロードを行うアプリケーションとロードされるモジュールとの間のあらゆる依存関係をリンクする方法を知っている１つのコードである。
動的ローダ４６は、ＡＢＩ準拠のライブラリモジュール４８のロードされたコピーをＥＦＩアプリケーション４２にリンクし、相対アドレスを絶対アドレスに置き換える必要がある箇所のすべてを変更する。
同様にして、非ＥＦＩアプリケーション４４のロード中、動的ローダ４６は、ＡＢＩ準拠のライブラリモジュール４８の第２のロードされたコピーを非ＥＦＩアプリケーション４４にリンクし、相対アドレスを絶対アドレスに置き換える必要がある箇所のすべてを変更する。
コンパイルされたＡＢＩ準拠のＥＦＩライブラリモジュール４８にリンクされた、コンパイルされたＥＦＩアプリケーション４２は、再配置不可マシンコードフォーマットを有し、実行の準備ができている。
同様にして、コンパイルされたＡＢＩ準拠のＥＦＩライブラリモジュール４８にリンクされた、コンパイルされた非ＥＦＩアプリケーション４４も、再配置不可マシンコードフォーマットを有し、実行の準備ができている。
【００２１】
コンパイル、リンク、およびロードが行われたアプリケーションの最初の実行後に、任意の回数の追加実行を後続の動的実行時において行うことができる。
ライブラリモジュール４８に対してアップグレードが行われ、アップグレードされたライブラリモジュールが再コンパイルされると、アップグレードされたＡＢＩ準拠のライブラリモジュール４８が、ライブラリにおいてそのモジュールの非アップグレード版に置き換わり、次の動的実行時において、動的ローダ４６は、アプリケーションを再コンパイルする必要なく、アップグレードされたＡＢＩ準拠のライブラリモジュール４８を、参照を行うアプリケーションにリンクしてロードする。
【００２２】
図４Ｃは、実行中の動的プリオペレーティング構築時環境４０（図４Ａ）に関連した動的プリオペレーティングシステム実行時環境４９を示している。
コンパイルされたアプリケーション４２は、ＡＢＩ準拠のＥＦＩモジュール４８の、コンパイルされてリンクされたコピーによって満たされるファンクションコール４３を含む。
グローバル参照を有するライブラリモジュール４８の内部の変数は、コンパイルされたアプリケーション４２に関連したすべての変数にアクセスすることができる。
参照環境は動的であり、実行時に設定されるので、ライブラリがアップグレードされると、アプリケーションの再コンパイルを行うことなく、参照環境を変更することができる。
動的ローダ４６はアプリケーション４２の実行中に存在するが、後続の実行に先行する後続のロードオペレーションまで使用されない。
また、アプリケーション４２の１つのみが示されているが、アプリケーション４４の実行も同様である。
【００２３】
図５Ａを参照して、動的プリオペレーティングシステム構築時環境５０は、多数（ここでは４つ）のアプリケーションＡ１〜Ｄ１を含む。
これらアプリケーションのいくつかはＥＦＩアプリケーションであり、これらアプリケーションのいくつかは非ＥＦＩアプリケーションであり、これらアプリケーションのすべてはＡＢＩ準拠のＥＦＩライブラリモジュールＮ１からの機能を必要とする。
動的ローダ４６は、コンパイルプロセスの一部として各アプリケーションに組み込まれる。
さらに、動的ローダ４６は、ＡＢＩ準拠のＥＦＩライブラリＮ１をアプリケーションのそれぞれにコピーする。
【００２４】
図５Ｂを参照して、動的プリオペレーティング構築時環境５０（図５Ａ）に関連した動的プリオペレーティングシステム実行時環境５２は、引き続きローダ４６にアクセスすることができる。
各アプリケーションの動的ローダ４６は、モジュールＮ１の再配置可能マシンコードを、アプリケーションＡ１〜Ｄ１のマシンコードにリンクし、実行可能な絶対マシンコードフォーマットの４つのアプリケーションを生成する。
【００２５】
図５Ｃを参照して、第１の後続の動的プリオペレーティングシステム実行時環境５４は、同じ４つのアプリケーションＡ１〜Ｄ１を含む。
これらアプリケーションのそれぞれは、アップグレードされたＡＢＩ準拠のＥＦＩライブラリＮ２を実行前にリンクしてロードする動的ローダ４６を組み込んでいる。
これらアプリケーションのいずれも、アップグレードされたＡＢＩ準拠のＥＦＩライブラリＮ２に関連した機能を変更するために再コンパイルする必要はない。
【００２６】
図５Ｄを参照して、第２の後続の動的プリオペレーティングシステム実行時環境５６は、同じ４つのアプリケーションを含むが、これらアプリケーションの２つは、異なる追加機能を有する。
アプリケーションＡ２はアプリケーションＡ１（図５Ｂ）のアップグレードであり、アプリケーションＣ２はアプリケーションＣ１（図５Ｂ）のアップグレードである。
これら２つのアプリケーションは個別に再コンパイルされ、リンクされてロードされると、ＡＢＩ準拠のライブラリからの新しい機能にアクセスする。
アプリケーションおよびモジュールのセット全体を再コンパイルする必要はない。
【００２７】
図６Ａを参照して、動的プリオペレーティングシステム構築時環境６０は、動的ローダ４６、ベースアプリケーションＥ０、および１組のＡＢＩ準拠のライブラリモジュールＸ〜Ｚを含む。
ベースアプリケーションＥ０は、異なる機能を実行できるものであり、この異なる機能に基づいて、ＡＢＩ準拠のライブラリモジュールは参照される。
コンパイラは、動的ローダ４６のコピーをアプリケーションの各バージョンに配置する。
次に、動的ローダ４６は、参照されたＡＢＩ準拠のライブラリモジュールの再配置可能マシンコードをアプリケーション内へコピーする。
【００２８】
図６Ｂを参照して、動的プリオペレーティングシステム構築時環境６０（図６Ａ）に関連した動的プリオペレーティングシステム実行時環境６２は、導出された３つの異なるアプリケーションＥ１〜Ｅ３を示している。
各アプリケーションＥ１〜Ｅ３は、異なる１組のＡＢＩ準拠のライブラリモジュールＸ〜Ｚを有する。
アプリケーションＥ１はモジュールＸおよびモジュールＹの機能を含み、アプリケーションＥ２はモジュールＹおよびモジュールＺの機能を含み、アプリケーションＥ３はモジュールＸおよびモジュールＺの機能を含む。
後続のどの実行時においても、アプリケーションを再コンパイルすることなく、これらアプリケーションＥ１〜Ｅ３のいずれの機能も変更することができる。
例えば、アプリケーションＥ３を変更して、後続の実行時の開始時にモジュールＹをローダ４６にロードさせることによって、モジュールＹの機能も含めることができる。
【００２９】
図７を参照して、動的プリオペレーティングシステム環境アップグレードプロセス２００は、動的構築時環境２０２、動的実行時環境２０８、およびアップグレード環境２２０を含む。
前述したように、動的構築時２０２の期間中、ＥＦＩアプリケーション２０４および非ＥＦＩアプリケーション２１２は、ＡＢＩ準拠のＥＦＩライブラリ２１６を使用してコンパイルされてファンクションコール参照を満たす。
これは、コンパイラにより各アプリケーションの一部として構成された後に、ＥＦＩライブラリ２１６からアプリケーション内へモジュールをコピーする動的ローダ２０６によって行われる。
後続の動的実行時２０８の期間中、コンパイルされたＥＦＩアプリケーション２１０の動的ローダ２０６は、すべての参照されたライブラリモジュールをリンクし、その後、実行される。
また、後続の動的実行時２０８の期間中、コンパイルされた非ＥＦＩアプリケーション２１４の動的ローダ２０６は、すべての参照されたライブラリモジュールをリンクし、その後、実行される。
アップグレード時２２０の期間中、ＥＦＩアプリケーションまたは非ＥＦＩアプリケーションに対してコードアップグレード２２２が行われると、プロセスは、パス２２４を介して構築時環境２０２に戻り、アプリケーションを再コンパイルする。
参照されたライブラリモジュールに対してコードアップグレードが行われると、プロセスは、アップグレードされたモジュールを有する、アップグレードされたＡＢＩ準拠のＥＦＩライブラリ２１８を再コンパイルした後、パス２２６を介して動的実行時環境２０８に戻る。
したがって、アプリケーションを再コンパイルする必要なく、機能の変更、または、アプリケーションへの機能の追加が行われる。
【００３０】
前述の説明は、当業者がこの発明を構成または使用できるように提示されている。
開示した実施の形態に対するさまざまな変更が、当業者には容易に明らかとなろう。
本明細書の一般原理は、本発明の精神および範囲から逸脱することなく、他の実施の形態および用途に適用することができる。
したがって、本発明は、図示した実施の形態に限定されることが意図されておらず、本明細書に開示した原理および特徴と一致した最も広い範囲に適合されるべきである。
【図面の簡単な説明】
【００３１】
【図１Ａ】静的ローダを有する静的構築時環境を示すブロック図である（従来技術）。
【図１Ｂ】図１Ａのアプリケーションの実行時環境のブロック図である（従来技術）。
【図１Ｃ】従来型のファンクションコールが行われ、グローバル変数が利用可能にされることを示す図１Ｂの実行時環境のブロック図である（従来技術）。
【図２Ａ】いくつかのアプリケーションが同じライブラリモジュールを必要としていることを示す静的動作時環境のブロック図である（従来技術）。
【図２Ｂ】同じライブラリモジュールがロードされた図２Ａのいくつかのアプリケーションを示す静的実行時環境のブロック図である（従来技術）。
【図３】静的ローダを有するシステム検証プロセスの機能図である（従来技術）。
【図４Ａ】この発明の一実施の形態による動的ローダを有する構築時環境を示すブロック図である。
【図４Ｂ】この発明の一実施の形態による図４Ａのアプリケーションの実行時環境のブロック図である。
【図４Ｃ】この発明の一実施の形態によるファンクションコールを行いグローバル変数にアクセスする方法を示す図４Ｂの実行時環境のブロック図である。
【図５Ａ】この発明の一実施の形態による、いくつかのアプリケーションが同じライブラリモジュールを必要としていることを示す構築時環境のブロック図である。
【図５Ｂ】この発明の一実施の形態による、同じライブラリモジュールがロードされた図５Ａのいくつかのアプリケーションの実行時環境のブロック図である。
【図５Ｃ】この発明の一実施の形態による、アップグレードされたライブラリモジュールが動的にロードされた図５Ａのいくつかのアプリケーションを示す後続の実行時環境のブロック図である。
【図５Ｄ】この発明の一実施の形態による、共通のライブラリモジュールが動的にロードされた図５Ｂに関するいくつかのアップグレードされたアプリケーションを示す後続の実行時環境のブロック図である。
【図６Ａ】この発明の一実施の形態による、いくつかの異なる組のライブラリモジュールで構築されたアプリケーションを示す構築時環境のブロック図である。
【図６Ｂ】この発明の一実施の形態による、図６Ａのアプリケーションが、異なる組のライブラリモジュールに基づいていくつかの異なるアプリケーションになることを示す実行時環境のブロック図である。
【図７】この発明の一実施の形態による動的ローダを有するシステム検証プロセスを示す機能図である。
【符号の説明】
【００３２】
４０・・・構築環境，
４２，４４・・・アプリケーション，
４６・・・ローダ，
４８・・・モジュール，
４２，４４・・・アプリケーション，
４６・・・ローダ，
４７・・・グローバルアクセス，
４８・・・モジュール，
４９，５２，６２・・・実行環境，
５０・・・構築環境，
５４，５６・・・後続の実行環境，
２００・・・アップグレードプロセス，
２０４，２１０，２１２，２１４・・・アプリケーション、
２０６・・・ローダ，
２１６・・・ライブラリ，
【図１Ａ】
2006092544.tif 000003
【図１Ｂ】
2006092544.tif 000004
【図１Ｃ】
2006092544.tif 000005
【図２Ａ】
2006092544.tif 000006
【図２Ｂ】
2006092544.tif 000007
【図３】
2006092544.tif 000008
【図４Ａ】
2006092544.tif 000009
【図４Ｂ】
2006092544.tif 000010
【図４Ｃ】
2006092544.tif 000011
【図５Ａ】
2006092544.tif 000012
【図５Ｂ】
2006092544.tif 000013
【図５Ｃ】
2006092544.tif 000014
【図５Ｄ】
2006092544.tif 000015
【図６Ａ】
2006092544.tif 000016
【図６Ｂ】
2006092544.tif 000017
【図７】
2006092544.tif 000018