(57)【要約】【課題】共有ライブラリを使用する複数のプログラムまたはモジュールを、同時に正しく実行できる計算機システムを得る。【解決手段】プログラム識別部３２は、記憶領域２から読み出されたプログラムの管理情報とプログラム識別テーブル３４のプログラム識別情報とを比較し書き換え対象プログラムを識別する。書き換え対象プログラムに対応するプログラム書き換え規則識別番号３４５を取得してプログラム書き換え部３３に通知する。プログラム書き換え部３３は、プログラム書き換え規則識別番号３４５に基づいて書き換え規則情報をプログラム書き換え規則テーブル３５から取得し、この規則に従って書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える。【選択図】        図１
2004246413.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムによって共有され使用される共有ライブラリと、
前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、
前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、
前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えた計算機システム。
【請求項２】
書き換え対象プログラムの識別情報を有する識別テーブルと、プログラムの書き換え規則情報を有する書き換え規則テーブルとを備え、
識別手段が、前記識別テーブルの内容に基づいて書き換え対象プログラムを識別し、
書き換え手段が、前記書き換え規則テーブルの内容に基づいてプログラムを書き換えることを特徴とする請求項１記載の計算機システム。
【請求項３】
書き換え対象プログラムの識別情報と、プログラムの書き換え規則情報を有する１または複数の外部装置と通信可能であり、
前記外部装置に対して書き換え対象プログラムの識別を要求し、取得した結果を識別手段に通知する識別情報取得手段と、
前記外部装置から書き換え規則情報を取得して書き換え手段に通知する書き換え規則情報取得手段とを備えた請求項１記載の計算機システム。
【請求項４】
書き換え対象プログラムの識別情報と、プログラムの書き換え規則情報を有する１または複数の外部装置と通信可能であり、
前記外部装置から前記識別情報を取得して、当該識別情報に基づいて識別テーブルを更新する識別テーブル更新手段と、
前記外部装置から前記書き換え規則情報を取得して、当該書き換え規則情報に基づいて書き換え規則テーブルを更新する書き換え規則テーブル更新手段とを備えたことを特徴とする請求項２記載の計算機システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、共有ライブラリを必要とする複数のプログラムを正しく実行できる計算機システムに関するものである。
【０００２】
【従来の技術】
実行時に共有ライブラリを必要とするプログラムを計算機システム上で実行する際、計算機システムが備える共有ライブラリがそのプログラムと互換性がない場合、プログラムは正しく動作しないという問題が起こる。この問題を解決する技術として、互換性がない（非互換）共有ライブラリを、プログラムにより予め想定されている動作を行う互換共有ライブラリに動的に置換した後にプログラムを実行するものがある。例えば、特許文献１はこの種の計算機システムを開示する。
【０００３】
【特許文献１】
特開平１１−２８２６６４号公報（第４−６頁、第１図）
【０００４】
【発明が解決しようとする課題】
従来の計算機システムでは、非互換共有ライブラリを、同名を有する互換共有ライブラリに動的に置換することにより正しくプログラムを実行していた。しかし、同名の共有ライブラリは計算機システム上に複数保持できないため、一つのプログラムに適するように共有ライブラリを置換すると、元の共有ライブラリを使って正常に動作するはずの他のプログラムが共有ライブラリとの互換性を失って正常に動作しなくなる。また、プログラムが複数のモジュールから構成され、これらのモジュールが同時に使用する共有ライブラリを、一つのモジュールに適するように置換すると、他のモジュールが正常に動作しない場合もある。
【０００５】
上記問題を回避するため、計算機システム内で各プログラムまたはモジュールの実行領域を分離して、実行領域毎に異なるライブラリを使用できるようにする方法がある。しかしながらこの方法は、計算機システムの機能上の制約のため実行領域の分離ができない場合に適用できず、また、実行領域を分離できたとしても大量のメモリ資源を消費してしまうことが考えられる。
【０００６】
この発明は、上記のような問題を解決するためになされたもので、共有ライブラリを使用する複数のプログラムまたはモジュールを、同時に正しく実行できる計算機システムを得ることを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係る計算機システムは、複数のプログラムによって共有され使用される共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えたものである。
【０００８】
【発明の実施の形態】
以下、この発明の様々な実施の形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１による計算機システムのブロック図である。図１に示すように、この計算機システム１は、記憶領域２、プログラムローダ３、プログラム実行領域４を備える。記憶領域２には、実行する各種プログラムおよび共有ライブラリが格納される。プログラムローダ３は、記憶領域２に格納されたプログラムおよび共有ライブラリをプログラム実行領域４にロードするものであり、プログラム読み出し部３１、プログラム識別部（識別手段）３２、プログラム書き換え部（書き換え手段）３３、プログラム識別テーブル（識別テーブル）３４、プログラム書き換え規則テーブル（書き換え規則テーブル）３５、プログラム書き込み部３６を備える。また、プログラム実行領域４は、プログラムおよび共有ライブラリがロードされ、ロードされたプログラムが実行される領域である。記憶領域２はハードディスク等の比較的大容量の記憶媒体で構成され、プログラム実行領域４はＲＡＭ等の記憶媒体で構成される。
【０００９】
記憶領域２には、実行されるプログラムが格納され、図１ではそれらのうちのプログラムＡ２１、プログラムＢ２２を示す。また、記憶領域２には複数のプログラムによって共有され使用される共有ライブラリが格納され、図１ではそれらのうちの共有ライブラリＸ２３，Ｙ２６，Ｚ２７を示す。これらは最初から格納されているものであり、「本来の共有ライブラリ」と呼ぶ。さらに、本来の共有ライブラリとは異なる、プログラムＡ２１、プログラムＢ２２において予め想定された動作が可能となるように実装された共有ライブラリを本来の共有ライブラリとは異なる名称で格納する。すなわち、共有ライブラリＸ２３と基本的に類似しているが各々のプログラムにより予め想定されている動作が可能なように実装された共有ライブラリＸｂ２４，Ｘｃ２５を備え、共有ライブラリＺ２７と基本的に類似しているが各々のプログラムにより予め想定されている動作が可能なように実装されたライブラリＺｂ２８を備える。これらを「互換共有ライブラリ」と呼ぶ。互換共有ライブラリは、プログラムにより予め想定された動作が本来の共有ライブラリでは実現できない場合に、本来の共有ライブラリの代わりに呼び出される共有ライブラリである。また、図１の例では共有ライブラリＹ２６は全てのプログラムにとって正しく動作するように実装されたものである。
【００１０】
プログラムローダ３では、プログラム読み出し部３１が記憶領域２に格納された各種プログラムおよび各種共有ライブラリを読み出し、バッファ等（図示せず）に格納する。プログラム識別部３２は、上記バッファに格納されたプログラムから各プログラムの識別に必要な情報を取得し、プログラム識別テーブル３４に格納される情報と比較する。プログラム識別テーブル３４には、プログラム実行前に予め本計算機システム１の使用者、管理者、開発者などによって書き換えが必要なプログラムの識別情報等が格納される。また、このテーブル３４は実行時に動的に更新される場合がある。この更新方法については後述する。プログラム識別部３２は、上記バッファに格納されたプログラムがプログラム識別テーブル３４に登録されているとき、当該プログラムは書き換えが必要であると判断して必要な情報（後述する）をプログラム書き換え部３３に通知する。
【００１１】
プログラム書き換え部３３は、プログラム識別部３２から取得した情報に基づいて、プログラム書き換え規則テーブル３５から書き換え規則情報を取得する。プログラム書き換え規則テーブル３５には、プログラム書き換え部３３がプログラムを書き換える際の書き換え規則情報が格納されている。このテーブル３５には、前記情報を本計算機システム１の使用者、管理者、開発者などがプログラム実行前に予め格納しておく。プログラム書き換え部３３は、プログラム識別部３２から取得した識別情報とプログラム書き換え規則テーブル３５の情報とに基づいて、バッファに格納される書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える。プログラムの書き換え終了後、プログラム書き込み部３６はバッファからプログラムおよび共有ライブラリをプログラム実行領域４にロードする。
【００１２】
プログラム実行領域４には、プログラムローダ３によってプログラムＡ２１、プログラムＢ２２がロードされ、それぞれの実行形態４１、実行形態４５が格納される。プログラムＡの実行形態４１には共有ライブラリＸ，Ｙ，Ｚの実行形態４２，４３，４４がリンクされ、プログラムＢの実行形態４５には共有ライブラリＸｂ，Ｙ，Ｚｂの実行形態４６，４３，４７がリンクされる。ここで、実行形態とは計算機システム上で実行可能なようにＲＡＭ等に配置されたプログラムおよび共有ライブラリの状態を示す。
【００１３】
図２はプログラム識別テーブル３４の詳細図である。図に示すように、プログラム識別テーブル３４は、プログラムの識別に用いられる各種情報と、当該プログラムに適用すべきプログラム書き換え規則を指定する番号情報３４５とを備える。プログラムの識別に用いられる各種情報には、プログラムを開発したベンダ名３４１、プログラムの名称３４２、プログラムのバージョン３４３、プログラムファイルのＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）値３４４がある。
【００１４】
図３はプログラム書き換え規則テーブル３５の詳細図である。図に示すように、プログラム書き換え規則テーブル３５は、プログラム書き換え規則を指定する番号情報３５１と、この番号情報３５１に対応するライブラリ名の書き換え規則情報を備える。プログラム書き換え規則を指定する番号情報３５１は、図２に示すプログラム識別テーブル３４のプログラム書き換え規則識別番号３４５に対応する。ライブラリ名の書き換え規則情報には、書き換え前のプログラムから呼び出される共有ライブラリ名３５２、プログラムを正しく実行するために呼び出すべき互換共有ライブラリ名３５３がある。
【００１５】
図４は実施の形態１に係るプログラムローダ３の処理手順を示すフローチャートであり、この図を用いてプログラムローダ３の動作について説明する。
計算機システム１においてアプリケーションが起動されると、プログラムローダ３のプログラム読み出し部３１が記憶領域２から実行するプログラムとそれらの管理情報（ベンダ名、プログラム名称、バージョン、ＣＲＣ値）および共有ライブラリを読み出し、バッファ等に格納する（ステップＳＴ４０１）。プログラム識別部３２は、バッファ等に格納されたプログラムの管理情報とプログラム識別テーブル３４のプログラム識別情報とを比較する（ステップＳＴ４０２）。読み出したプログラムの管理情報がプログラム識別テーブル３４のベンダ名３４１、プログラム名称３４２、バージョン３４３、ＣＲＣ値３４４と一致するものは書き換え対象であると判断される（ステップＳＴ４０３）。書き換え対象プログラムが存在すると判断される場合、プログラム識別部３２は当該プログラムに対応するプログラム書き換え規則識別番号３４５をプログラム識別テーブル３４から取得し、プログラム書き換え部３３に対して通知する（ステップＳＴ４０４）。
【００１６】
プログラム書き換え部３３は、プログラム識別部３２から取得したプログラム書き換え規則識別番号３４５で指定された書き換え規則情報をプログラム書き換え規則テーブル３５から取得し、この規則に従ってバッファに格納される書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える（ステップＳＴ４０５）。例えば、取得したプログラム書き換え規則識別番号が’００００００２１’である場合、本来の共有ライブラリ名’Ｓｏｃｋｅｔ’の呼び出し箇所を互換共有ライブラリ名’Ｓｏｃｋｅｔ＿Ｂｃｏｒｐ’に書き換える（図３参照）。プログラムの書き換え終了後、プログラム書き込み部３６がバッファに格納されるプログラムおよび共有ライブラリをプログラム実行領域４にロードする（ステップＳＴ４０６）。また、ステップＳＴ４０３で書き換え対象プログラムがないと判断された場合は、読み出したプログラムと共有ライブラリとをそのままプログラム実行領域４にロードする（ステップＳＴ４０６）。
【００１７】
ここで、上記のようにプログラムを実行時に動的に修正する理由について説明する。プログラムの共有ライブラリ呼び出し箇所を図２、図３に示すようなプログラム識別情報、プログラム書き換え規則に従って予め修正して記憶領域２に格納しておくことができれば、プログラム実行時に動的にプログラムを修正する必要はなく、計算機システム１はテーブル３４，３５を備える必要はない。しかしながら、プログラムを予め修正して格納しておくことは、以下の理由から困難であると考えられる。
【００１８】
例えば、本発明による計算機システムの例として携帯電話を用い、複数の携帯電話がそれぞれ、ネットワークを介して接続される任意のサーバから任意のプログラムをダウンロードして各携帯電話上で実行する場合について説明する。プログラムの開発メーカは携帯電話の共通仕様に基づいて全ての携帯電話で動作することを想定したプログラムを開発し、サーバ上で公開する。各携帯電話が備える共有ライブラリの機能および動作は共通仕様に対して完全に互換でなければならない。しかしながら、携帯電話メーカはそれぞれ独自に共有ライブラリを開発するため、その機能および動作が共通仕様に対して完全に互換しない場合がある。したがって、共通仕様との互換性に問題のある共有ライブラリを備えた携帯電話においてプログラムが正しく動作しない場合がある。または、共通仕様との互換性に問題のある共有ライブラリを備えた携帯電話において正しく動作するよう開発されたプログラムは、共通仕様に対して完全に互換した共有ライブラリを備えた携帯電話において正しく動作しない場合があると考えられる。
【００１９】
この問題に対処するために、非互換の共有ライブラリに対応可能なようにプログラム開発メーカがプログラムを予め書き換えた上で、サーバ上で公開する方法がある。例えば、問題が発生する機種専用のプログラムを問題が発生しないように修正し、他の機種用のプログラムとは別に公開するようにしてもよい。また、プログラムの実行時に機種を判断して、問題の発生する機種では問題が発生しないように動作を変更させるようにプログラムを開発して公開してもよい。
【００２０】
しかしながら、携帯電話の機種は数多く存在するため、プログラム開発メーカが各機種の共有ライブラリの非互換情報を収集し、非互換の共有ライブラリへの対処を全てのプログラムに対して実施するのは困難である。すなわち、プログラム開発メーカは、全ての携帯電話、つまり全てのプログラム実行環境の共有ライブラリの互換状況を把握することは困難であり、予め上記修正を実施してサーバに格納しておくことは事実上不可能であると考えられる。したがって、本計算機システムは、プログラム識別テーブル３４とプログラム書き換え規則テーブル３５とを備え、これらに基づいて動的にプログラム修正を行う必要がある。
【００２１】
通常、共有ライブラリは携帯電話（計算機システム）が備えるものが全てであるため、その数は携帯電話メーカの把握できる範囲内であると考えられる。したがって、プログラムの書き換え規則も把握できる範囲内であるため、プログラム書き換え規則テーブル３５に関しては予め携帯電話内に格納しておけばよい。しかし、上述したように共有ライブラリに対して非互換であるプログラム、つまり書き換えが必要なプログラムを全て把握することは困難であるため、プログラム識別テーブル３４に予め全ての情報を格納しておくことは不可能と考えられる。したがって、プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合に、以下のように当該プログラムの情報をプログラム識別テーブル３４に追加するようにする。
【００２２】
プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合、計算機システム１のエラー取得部（図示せず）が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、この共有ライブラリを互換性の問題を有するライブラリであると判断する。続いて、エラー取得部は当該共有ライブラリ名をいずれの互換共有ライブラリ名に変更すべきかを判断し、プログラム書き換え規則テーブル３５を参照して対応するプログラム書き換え規則識別番号を取得する。続いて、取得した書き換え規則識別番号と前記プログラム識別情報とを対応付けてプログラム識別テーブル３４に追加する。このように、共有ライブラリの非互換性に起因するエラー発生時に、書き換えが必要なプログラムの情報と書き換え規則識別番号とをプログラム識別テーブル３４に追加すれば、それ以降の当プログラム実行時には互換共有ライブラリへの書き換えが行われるため、プログラムは正しく実行される。
【００２３】
以上のように、この実施の形態１によれば、プログラム識別部３２が本来の共有ライブラリに対して非互換であるプログラムを識別し、プログラム書き換え部が当該プログラムを、本来の共有ライブラリと異なる名称を持つ互換共有ライブラリを呼び出すように書き換えるようにしたので、同一名称の共有ライブラリを呼び出す複数のプログラムを、同一計算機システムで同時に正しく実行することができる効果が得られる。また、複数のプログラムや複数のモジュールがそれぞれ同一名称の共有ライブラリを呼び出す場合にも、互換共有ライブラリを呼び出すように書き換えられるため、各プログラムまたは各モジュールの実行領域を分離する機能も不要となる効果が得られる。
【００２４】
実施の形態２．
図５はこの発明の実施の形態２による計算機システムのブロック図である。この実施の形態２の計算機システム１は実施の形態１と同様に記憶領域、プログラムローダ、プログラム実行領域を備えるが、図５ではプログラムローダ３のみを示している。記憶領域には、実施の形態１と同様に、実行する各種プログラムおよびそれらの実行に必要なすべての共有ライブラリが格納される。また、プログラム実行領域には、実施の形態１と同様に、各種プログラムおよび各種共有ライブラリの実行形態がロードされる。プログラムローダ３は、図５に示すようにプログラム識別情報取得部（識別情報取得手段）３７、プログラム書き換え規則情報取得部（書き換え規則情報取得手段）３８を備える。また、図１と共通する構成要素には同一符号を付し、その説明を省略する。
【００２５】
プログラム識別情報取得部３７は複数の計算機システム間での通信を可能とするネットワーク５０３を介してサーバ５０６にアクセスする。サーバ５０６はプログラム識別情報データベース５０７を備える。データベース５０７には書き換えが必要なプログラムの識別情報等が格納され、識別情報データは図２に示すデータと同様である。サーバ５０６はプログラム識別情報取得部３７からのアクセスに応答してデータベース５０７のプログラム識別情報を検索する。
【００２６】
プログラム書き換え規則情報取得部３８はネットワーク５０３を介してサーバ５０４にアクセスする。サーバ５０４はプログラム書き換え規則データベース５０５を備える。データベース５０５にはプログラムを書き換える際の書き換え規則情報が格納され、書き換え規則情報データは図３に示すデータと同様である。サーバ５０４はプログラム書き換え規則情報取得部３８からのアクセスに応答してこのデータベース５０５からプログラム書き換え規則の情報を取得する。
【００２７】
データベース５０５，５０７には、プログラム実行前に予め本計算機システム１の使用者、管理者、開発者などによってそれぞれ書き換え規則情報、プログラム識別情報等が格納される。また、データベース５０７はプログラム実行時に動的に更新される場合がある。すなわち、プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合、計算機システム１のエラー取得部（図示せず）が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、エラー情報収集サーバ（図示せず）に通知する。エラー情報収集サーバはエラー情報の管理を行うサーバであり、サーバ５０４またはサーバ５０６と同一でもよい。エラー情報収集サーバは取得した共有ライブラリを互換性の問題を有するライブラリであると判断してプログラム書き換え規則データベース５０５から対応するプログラム書き換え規則識別番号を取得し、前記プログラム識別情報と対応付けてプログラム識別情報データベース５０７に追加する。
【００２８】
図６および図７は実施の形態２に係るプログラムローダ３の処理手順の一部を示すフローチャートである。図６は図４のステップＳＴ４０２に相当し、プログラム識別情報取得部３７の動作を示す。また、図７は図４のステップＳＴ４０５に相当し、プログラム書き換え規則情報取得部３８の動作を示す。図４、図６および図７を用いてプログラムローダ３の動作について説明する。
【００２９】
図４に示すように、計算機システム１においてアプリケーションが起動されると、プログラムローダ３のプログラム読み出し部３１が記憶領域２から実行するプログラムとそれらの管理情報（ベンダ名、プログラム名称、バージョン、ＣＲＣ値）および共有ライブラリを読み出し、バッファ等（図示せず）に格納する（ステップＳＴ４０１）。続いて図６に移り、プログラム識別部３２はプログラム識別情報取得部３７に対して、読み出したプログラムが書き換え対象であるか否かを調べる要求を出す（ステップＳＴ６０１）。プログラム識別情報取得部３７はネットワーク５０３を介してサーバ５０６に各プログラムの管理情報を通知して、当該プログラムが書き換え対象プログラムとしてプログラム識別情報データベース５０７に登録されているか否かを調べる要求を出す（ステップＳＴ６０２）。サーバ５０６は当該プログラムが書き換え対象プログラムとして登録されているか否かを、実施の形態１と同様に各プログラムの管理情報とプログラム識別情報データベース５０７のデータとを比較して調べる（ステップＳＴ６０３）。
【００３０】
サーバ５０６は、当該プログラムがデータベース５０７に登録されている場合はプログラム書き換え規則識別番号を取得し、ネットワーク５０３を介してプログラム識別情報取得部３７に通知する。また、登録されていなかった場合はその旨を通知する（ステップＳＴ６０４）。続いて、プログラム識別情報取得部３７は取得した結果をプログラム識別部３２に対して通知する（ステップＳＴ６０５）。続いて図４に戻り、データベース５０７に登録されている場合（ステップＳＴ４０３）、プログラム識別部３２はプログラム書き換え規則識別番号をプログラム書き換え部３３に対して通知する（ステップＳＴ４０４）。
【００３１】
続いて図７に移り、プログラム書き換え部３３はプログラム書き換え規則情報取得部３８に対してプログラム書き換え規則識別番号を通知し、対応するプログラム書き換え規則の取得を要求する（ステップＳＴ７０１）。プログラム書き換え規則情報取得部３８はネットワーク５０３を介して、サーバ５０４にプログラム書き換え規則の取得を要求する（ステップＳＴ７０２）。サーバ５０４はプログラム書き換え規則データベース５０５から、通知されたプログラム書き換え規則識別番号に対応するプログラム書き換え規則を取得する（ステップＳＴ７０３）。サーバ５０４は、取得したプログラム書き換え規則をネットワーク５０３を介してプログラム書き換え規則情報取得部３８に通知する（ステップＳＴ７０４）。
【００３２】
プログラム書き換え規則情報取得部３８は取得したプログラム書き換え規則情報をプログラム書き換え部３３に通知する（ステップＳＴ７０５）。プログラム書き換え部３３は、プログラム書き換え規則情報取得部３８から通知された書き換え規則に従って、バッファに格納される当該プログラムの共有ライブラリ呼び出し箇所を書き換える（ステップＳＴ７０６）。続いて図４に戻り、プログラム書き換え部３３がプログラムを書き換えた後、プログラム書き込み部３６がバッファに格納されるプログラムおよび共有ライブラリをプログラム実行領域４にロードする（ステップＳＴ４０６）。また、ステップＳＴ４０３で書き換え対象プログラムがないと判断された場合は、読み出したプログラムと共有ライブラリとをそのままプログラム実行領域４にロードする（ステップＳＴ４０６）。
【００３３】
以上のように、この実施の形態２によれば、プログラム識別情報取得部３７がプログラム識別情報を備えるサーバ５０６に対してプログラム識別情報の検索を要求するようにしたため、実施の形態１と同様の効果に加えて、プログラム識別情報データベース５０７を更新することにより計算機システム１は最新のプログラム識別情報を利用できる効果が得られる。同様に、プログラム書き換え規則情報取得部３８がプログラム書き換え規則を備えるサーバ５０４に対してプログラム書き換え規則の検索を要求するようにしたため、実施の形態１と同様の効果に加えて、本計算機システム１は最新のプログラム書き換え規則を利用できる効果が得られる。
【００３４】
また、ネットワーク上のサーバ５０４，５０６からプログラム書き換え規則およびプログラム識別情報を取得するようにしたので、計算機システム１に格納できないほど大量のプログラム書き換え規則およびプログラム識別情報を利用できる効果が得られる。
【００３５】
実施の形態３．
図８はこの発明の実施の形態３による計算機システムのブロック図である。この実施の形態３の計算機システム１は実施の形態１と同様に記憶領域、プログラムローダ、プログラム実行領域を備えるが、図８ではプログラムローダ３のみを示している。記憶領域には、実施の形態１と同様に、実行する各種プログラムおよびそれらの実行に必要なすべての共有ライブラリが格納される。また、プログラム実行領域には、実施の形態１と同様に、各種プログラムおよび各種共有ライブラリの実行形態がロードされる。プログラムローダ３は、図８に示すようにプログラム識別テーブル更新部（識別テーブル更新手段）３９、プログラム書き換え規則テーブル更新部（書き換え規則テーブル更新手段）４０を備える。また、図１と共通する構成要素には同一符号を付し、その説明を省略する。
【００３６】
この実施の形態３では、実施の形態１で示したプログラムローダにテーブル更新機能を追加した。すなわち、プログラム識別テーブル更新部３９はプログラム識別テーブル３４を更新する。また、プログラム書き換え規則テーブル更新部４０はプログラム書き換え規則テーブル３５を更新する。テーブル３４の更新は、プログラム識別部３２がテーブル３４を参照する前に、プログラム識別テーブル更新部３９に更新命令を通知することによって開始される。すなわち、図４においてステップＳＴ４０１とステップＳＴ４０２の間で行われる。同様に、テーブル３５の更新は、プログラム書き換え部３３がテーブル３５を参照する前に、プログラム書き換え規則テーブル更新部４０に更新命令を通知することによって開始される。すなわち、図４においてステップＳＴ４０４とステップＳＴ４０５の間で行われる。
【００３７】
プログラム識別テーブル更新部３９は複数の計算機システム間での通信を可能とするネットワーク５０３を介してサーバ８０４にアクセスする。サーバ８０４はプログラム識別情報データベース５０７を備える。データベース５０７には書き換えが必要なプログラムの識別情報等が格納されており、その内容は適宜更新され、最新の情報が格納されるようになっている。データベース５０７が有する識別情報データは、図２に示すデータと同様である。サーバ８０４はプログラム識別テーブル更新部３９からのアクセスに応答してデータベース５０７のプログラム識別情報を取得する。
【００３８】
プログラム書き換え規則テーブル更新部４０はネットワーク５０３を介してサーバ８０３にアクセスする。サーバ８０３はプログラム書き換え規則データベース５０５を備える。データベース５０５にはプログラムを書き換える際の書き換え規則が格納されており、その内容は適宜更新され、最新の情報が格納されるようになっている。データベース５０５が有する書き換え規則データは、図３に示すデータと同様である。サーバ８０３はプログラム書き換え規則テーブル更新部４０からのアクセスに応答してデータベース５０５からプログラム書き換え規則を取得する。
【００３９】
図９は実施の形態３に係るプログラム識別テーブル３４の更新手順を示すフローチャートであり、この図を用いてプログラム識別テーブル更新部３９の動作を説明する。
プログラム識別テーブル更新部３９は、更新命令が通知されるとネットワーク５０３を介してサーバ８０４に、更新されたプログラム識別情報の送信を要求する（ステップＳＴ９０１）。サーバ８０４は、前記要求に応答してプログラム識別情報データベース５０７に更新された情報があるか否かを調べる（ステップＳＴ９０２）。データベース５０７に更新された情報がある場合、サーバ８０４は更新情報をネットワーク５０３を介してプログラム識別テーブル更新部３９に通知する。また、更新された情報がない場合はその旨を通知する（ステップＳＴ９０３）。続いて、プログラム識別テーブル更新部３９は、取得した情報に基づいてプログラム識別テーブル３４を更新する（ステップＳＴ９０４）。
【００４０】
図１０は実施の形態３に係るプログラム書き換え規則テーブル３５の更新手順を示すフローチャートであり、この図を参照してプログラム書き換え規則テーブル更新部４０の動作を説明する。
プログラム書き換え規則テーブル更新部４０は、更新命令が通知されるとネットワーク５０３を介してサーバ８０３に、更新されたプログラム書き換え規則情報の送信を要求する（ステップＳＴ１００１）。サーバ８０３は、前記要求に応答してプログラム書き換え規則データベース５０５に更新された情報があるか否かを調べる（ステップＳＴ１００２）。データベース５０５に更新された情報がある場合、サーバ８０３は更新情報をネットワーク５０３を介してプログラム書き換え規則テーブル更新部４０に通知する。また、更新された情報がない場合はその旨を通知する（ステップＳＴ１００３）。続いて、プログラム書き換え規則テーブル更新部４０は、取得した情報に基づいてプログラム書き換え規則テーブル３５を更新する（ステップＳＴ１００４）。
【００４１】
上記手順では、プログラム識別テーブル更新部３９、プログラム書き換え規則テーブル更新部４０がそれぞれテーブル３４、テーブル３５の更新をプログラムのロード手順と同期して行ったが、プログラムのロードとは無関係に行ってもよい。
また、テーブル３４の更新については、実施の形態１で述べたようにエラー発生時に行われる場合もある。すなわち、エラー発生時に計算機システム１のエラー取得部（図示せず）が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、プログラム書き換え規則テーブル３５から当該共有ライブラリ名に対応するプログラム書き換え規則識別番号を取得し、これらを対応付けてプログラム識別テーブル３４に追加する。
【００４２】
以上のように、この実施の形態３によれば、プログラム識別テーブル更新部３９がサーバ８０４からプログラム識別情報を取得し、プログラム識別テーブル３４を更新するようにしたので、実施の形態１と同様の効果に加えて、プログラム識別情報データベース５０７を更新することにより計算機システム１は最新のプログラム識別情報を取得できる効果が得られる。同様に、プログラム書き換え規則テーブル更新部４０がサーバ８０３からプログラム書き換え規則情報を取得し、プログラム書き換え規則テーブル３５を更新するようにしたので、計算機システム１は最新のプログラム書き換え規則情報を取得できる効果が得られる。
【００４３】
また、計算機システム１はネットワークを介してサーバ５０６，５０４から更新情報のみを取得するようにしたので、実施の形態２と比較してネットワークを介して伝送される情報量が少量で済むという効果が得られる。
【００４４】
【発明の効果】
以上のように、この発明によれば、計算機システムが、複数のプログラムによって共有され使用される共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えるように構成したので、同一名称の共有ライブラリを呼び出す複数のプログラムを、同一計算機システムで同時に正しく実行することができる効果がある。
【図面の簡単な説明】
【図１】この発明の実施の形態１による計算機システムのブロック図である。
【図２】図１のプログラム識別テーブルの詳細図である。
【図３】図１のプログラム書き換え規則テーブルの詳細図である。
【図４】実施の形態１に係るプログラムローダの処理手順を示すフローチャートである。
【図５】この発明の実施の形態２による計算機システムのブロック図である。
【図６】同実施の形態２に係るプログラムローダの処理手順の一部を示すフローチャートである。
【図７】同実施の形態２に係るプログラムローダの処理手順の一部を示すフローチャートである。
【図８】同実施の形態３による計算機システムのブロック図である。
【図９】同実施の形態３に係るプログラム識別テーブルの更新手順を示すフローチャートである。
【図１０】実施の形態３に係るプログラム書き換え規則テーブルの更新手順を示すフローチャートである。
【符号の説明】
１  計算機システム、２  記憶領域、３  プログラムローダ、４  プログラム実行領域、２１  プログラムＡ、２２  プログラムＢ、２３  共有ライブラリＸ、２４  共有ライブラリＸｂ、２５  共有ライブラリＸｃ、２６  共有ライブラリＹ、２７  共有ライブラリＺ、２８  共有ライブラリＺｂ、３１  プログラム読み出し部、３２  プログラム識別部（識別手段）、３３  プログラム書き換え部（書き換え手段）、３４  プログラム識別テーブル（識別テーブル）、３５  プログラム書き換え規則テーブル（書き換え規則テーブル）、３６  プログラム書き込み部、３７  プログラム識別情報取得部（識別情報取得手段）、３８  プログラム書き換え規則情報取得部（書き換え規則情報取得手段）、３９  プログラム識別テーブル更新部（識別テーブル更新手段）、４０  プログラム書き換え規則テーブル更新部（書き換え規則テーブル更新手段）、４１  プログラムＡの実行形態、４２  共有ライブラリＸの実行形態、４３  共有ライブラリＹの実行形態、４４  共有ライブラリＺの実行形態、４５  プログラムＢの実行形態、４６  共有ライブラリＸｂの実行形態、４７  共有ライブラリＺｂの実行形態、３４１  ベンダ名、３４２  プログラム名称、３４３  バージョン、３４４  ＣＲＣ値、３４５，３５１  プログラム書き換え規則識別番号、３５２  共有ライブラリ名、３５３  互換共有ライブラリ名、５０３  ネットワーク、５０４，５０６，８０３，８０４  サーバ、５０５  プログラム書き換え規則データベース、５０７  プログラム識別情報データベース。
【図１】
2004246413.tif 000003
【図２】
2004246413.tif 000004
【図３】
2004246413.tif 000005
【図４】
2004246413.tif 000006
【図５】
2004246413.tif 000007
【図６】
2004246413.tif 000008
【図７】
2004246413.tif 000009
【図８】
2004246413.tif 000010
【図９】
2004246413.tif 000011
【図１０】
2004246413.tif 000012