JP2004246413A - 計算機システム - Google Patents
計算機システム Download PDFInfo
- Publication number
- JP2004246413A JP2004246413A JP2003032639A JP2003032639A JP2004246413A JP 2004246413 A JP2004246413 A JP 2004246413A JP 2003032639 A JP2003032639 A JP 2003032639A JP 2003032639 A JP2003032639 A JP 2003032639A JP 2004246413 A JP2004246413 A JP 2004246413A
- Authority
- JP
- Japan
- Prior art keywords
- program
- identification
- information
- shared library
- rewriting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】共有ライブラリを使用する複数のプログラムまたはモジュールを、同時に正しく実行できる計算機システムを得る。
【解決手段】プログラム識別部32は、記憶領域2から読み出されたプログラムの管理情報とプログラム識別テーブル34のプログラム識別情報とを比較し書き換え対象プログラムを識別する。書き換え対象プログラムに対応するプログラム書き換え規則識別番号345を取得してプログラム書き換え部33に通知する。プログラム書き換え部33は、プログラム書き換え規則識別番号345に基づいて書き換え規則情報をプログラム書き換え規則テーブル35から取得し、この規則に従って書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える。
【選択図】 図1
【解決手段】プログラム識別部32は、記憶領域2から読み出されたプログラムの管理情報とプログラム識別テーブル34のプログラム識別情報とを比較し書き換え対象プログラムを識別する。書き換え対象プログラムに対応するプログラム書き換え規則識別番号345を取得してプログラム書き換え部33に通知する。プログラム書き換え部33は、プログラム書き換え規則識別番号345に基づいて書き換え規則情報をプログラム書き換え規則テーブル35から取得し、この規則に従って書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
この発明は、共有ライブラリを必要とする複数のプログラムを正しく実行できる計算機システムに関するものである。
【0002】
【従来の技術】
実行時に共有ライブラリを必要とするプログラムを計算機システム上で実行する際、計算機システムが備える共有ライブラリがそのプログラムと互換性がない場合、プログラムは正しく動作しないという問題が起こる。この問題を解決する技術として、互換性がない(非互換)共有ライブラリを、プログラムにより予め想定されている動作を行う互換共有ライブラリに動的に置換した後にプログラムを実行するものがある。例えば、特許文献1はこの種の計算機システムを開示する。
【0003】
【特許文献1】
特開平11−282664号公報(第4−6頁、第1図)
【0004】
【発明が解決しようとする課題】
従来の計算機システムでは、非互換共有ライブラリを、同名を有する互換共有ライブラリに動的に置換することにより正しくプログラムを実行していた。しかし、同名の共有ライブラリは計算機システム上に複数保持できないため、一つのプログラムに適するように共有ライブラリを置換すると、元の共有ライブラリを使って正常に動作するはずの他のプログラムが共有ライブラリとの互換性を失って正常に動作しなくなる。また、プログラムが複数のモジュールから構成され、これらのモジュールが同時に使用する共有ライブラリを、一つのモジュールに適するように置換すると、他のモジュールが正常に動作しない場合もある。
【0005】
上記問題を回避するため、計算機システム内で各プログラムまたはモジュールの実行領域を分離して、実行領域毎に異なるライブラリを使用できるようにする方法がある。しかしながらこの方法は、計算機システムの機能上の制約のため実行領域の分離ができない場合に適用できず、また、実行領域を分離できたとしても大量のメモリ資源を消費してしまうことが考えられる。
【0006】
この発明は、上記のような問題を解決するためになされたもので、共有ライブラリを使用する複数のプログラムまたはモジュールを、同時に正しく実行できる計算機システムを得ることを目的とする。
【0007】
【課題を解決するための手段】
この発明に係る計算機システムは、複数のプログラムによって共有され使用される共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えたものである。
【0008】
【発明の実施の形態】
以下、この発明の様々な実施の形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1による計算機システムのブロック図である。図1に示すように、この計算機システム1は、記憶領域2、プログラムローダ3、プログラム実行領域4を備える。記憶領域2には、実行する各種プログラムおよび共有ライブラリが格納される。プログラムローダ3は、記憶領域2に格納されたプログラムおよび共有ライブラリをプログラム実行領域4にロードするものであり、プログラム読み出し部31、プログラム識別部(識別手段)32、プログラム書き換え部(書き換え手段)33、プログラム識別テーブル(識別テーブル)34、プログラム書き換え規則テーブル(書き換え規則テーブル)35、プログラム書き込み部36を備える。また、プログラム実行領域4は、プログラムおよび共有ライブラリがロードされ、ロードされたプログラムが実行される領域である。記憶領域2はハードディスク等の比較的大容量の記憶媒体で構成され、プログラム実行領域4はRAM等の記憶媒体で構成される。
【0009】
記憶領域2には、実行されるプログラムが格納され、図1ではそれらのうちのプログラムA21、プログラムB22を示す。また、記憶領域2には複数のプログラムによって共有され使用される共有ライブラリが格納され、図1ではそれらのうちの共有ライブラリX23,Y26,Z27を示す。これらは最初から格納されているものであり、「本来の共有ライブラリ」と呼ぶ。さらに、本来の共有ライブラリとは異なる、プログラムA21、プログラムB22において予め想定された動作が可能となるように実装された共有ライブラリを本来の共有ライブラリとは異なる名称で格納する。すなわち、共有ライブラリX23と基本的に類似しているが各々のプログラムにより予め想定されている動作が可能なように実装された共有ライブラリXb24,Xc25を備え、共有ライブラリZ27と基本的に類似しているが各々のプログラムにより予め想定されている動作が可能なように実装されたライブラリZb28を備える。これらを「互換共有ライブラリ」と呼ぶ。互換共有ライブラリは、プログラムにより予め想定された動作が本来の共有ライブラリでは実現できない場合に、本来の共有ライブラリの代わりに呼び出される共有ライブラリである。また、図1の例では共有ライブラリY26は全てのプログラムにとって正しく動作するように実装されたものである。
【0010】
プログラムローダ3では、プログラム読み出し部31が記憶領域2に格納された各種プログラムおよび各種共有ライブラリを読み出し、バッファ等(図示せず)に格納する。プログラム識別部32は、上記バッファに格納されたプログラムから各プログラムの識別に必要な情報を取得し、プログラム識別テーブル34に格納される情報と比較する。プログラム識別テーブル34には、プログラム実行前に予め本計算機システム1の使用者、管理者、開発者などによって書き換えが必要なプログラムの識別情報等が格納される。また、このテーブル34は実行時に動的に更新される場合がある。この更新方法については後述する。プログラム識別部32は、上記バッファに格納されたプログラムがプログラム識別テーブル34に登録されているとき、当該プログラムは書き換えが必要であると判断して必要な情報(後述する)をプログラム書き換え部33に通知する。
【0011】
プログラム書き換え部33は、プログラム識別部32から取得した情報に基づいて、プログラム書き換え規則テーブル35から書き換え規則情報を取得する。プログラム書き換え規則テーブル35には、プログラム書き換え部33がプログラムを書き換える際の書き換え規則情報が格納されている。このテーブル35には、前記情報を本計算機システム1の使用者、管理者、開発者などがプログラム実行前に予め格納しておく。プログラム書き換え部33は、プログラム識別部32から取得した識別情報とプログラム書き換え規則テーブル35の情報とに基づいて、バッファに格納される書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える。プログラムの書き換え終了後、プログラム書き込み部36はバッファからプログラムおよび共有ライブラリをプログラム実行領域4にロードする。
【0012】
プログラム実行領域4には、プログラムローダ3によってプログラムA21、プログラムB22がロードされ、それぞれの実行形態41、実行形態45が格納される。プログラムAの実行形態41には共有ライブラリX,Y,Zの実行形態42,43,44がリンクされ、プログラムBの実行形態45には共有ライブラリXb,Y,Zbの実行形態46,43,47がリンクされる。ここで、実行形態とは計算機システム上で実行可能なようにRAM等に配置されたプログラムおよび共有ライブラリの状態を示す。
【0013】
図2はプログラム識別テーブル34の詳細図である。図に示すように、プログラム識別テーブル34は、プログラムの識別に用いられる各種情報と、当該プログラムに適用すべきプログラム書き換え規則を指定する番号情報345とを備える。プログラムの識別に用いられる各種情報には、プログラムを開発したベンダ名341、プログラムの名称342、プログラムのバージョン343、プログラムファイルのCRC(Cyclic Redundancy Check)値344がある。
【0014】
図3はプログラム書き換え規則テーブル35の詳細図である。図に示すように、プログラム書き換え規則テーブル35は、プログラム書き換え規則を指定する番号情報351と、この番号情報351に対応するライブラリ名の書き換え規則情報を備える。プログラム書き換え規則を指定する番号情報351は、図2に示すプログラム識別テーブル34のプログラム書き換え規則識別番号345に対応する。ライブラリ名の書き換え規則情報には、書き換え前のプログラムから呼び出される共有ライブラリ名352、プログラムを正しく実行するために呼び出すべき互換共有ライブラリ名353がある。
【0015】
図4は実施の形態1に係るプログラムローダ3の処理手順を示すフローチャートであり、この図を用いてプログラムローダ3の動作について説明する。
計算機システム1においてアプリケーションが起動されると、プログラムローダ3のプログラム読み出し部31が記憶領域2から実行するプログラムとそれらの管理情報(ベンダ名、プログラム名称、バージョン、CRC値)および共有ライブラリを読み出し、バッファ等に格納する(ステップST401)。プログラム識別部32は、バッファ等に格納されたプログラムの管理情報とプログラム識別テーブル34のプログラム識別情報とを比較する(ステップST402)。読み出したプログラムの管理情報がプログラム識別テーブル34のベンダ名341、プログラム名称342、バージョン343、CRC値344と一致するものは書き換え対象であると判断される(ステップST403)。書き換え対象プログラムが存在すると判断される場合、プログラム識別部32は当該プログラムに対応するプログラム書き換え規則識別番号345をプログラム識別テーブル34から取得し、プログラム書き換え部33に対して通知する(ステップST404)。
【0016】
プログラム書き換え部33は、プログラム識別部32から取得したプログラム書き換え規則識別番号345で指定された書き換え規則情報をプログラム書き換え規則テーブル35から取得し、この規則に従ってバッファに格納される書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える(ステップST405)。例えば、取得したプログラム書き換え規則識別番号が’00000021’である場合、本来の共有ライブラリ名’Socket’の呼び出し箇所を互換共有ライブラリ名’Socket_Bcorp’に書き換える(図3参照)。プログラムの書き換え終了後、プログラム書き込み部36がバッファに格納されるプログラムおよび共有ライブラリをプログラム実行領域4にロードする(ステップST406)。また、ステップST403で書き換え対象プログラムがないと判断された場合は、読み出したプログラムと共有ライブラリとをそのままプログラム実行領域4にロードする(ステップST406)。
【0017】
ここで、上記のようにプログラムを実行時に動的に修正する理由について説明する。プログラムの共有ライブラリ呼び出し箇所を図2、図3に示すようなプログラム識別情報、プログラム書き換え規則に従って予め修正して記憶領域2に格納しておくことができれば、プログラム実行時に動的にプログラムを修正する必要はなく、計算機システム1はテーブル34,35を備える必要はない。しかしながら、プログラムを予め修正して格納しておくことは、以下の理由から困難であると考えられる。
【0018】
例えば、本発明による計算機システムの例として携帯電話を用い、複数の携帯電話がそれぞれ、ネットワークを介して接続される任意のサーバから任意のプログラムをダウンロードして各携帯電話上で実行する場合について説明する。プログラムの開発メーカは携帯電話の共通仕様に基づいて全ての携帯電話で動作することを想定したプログラムを開発し、サーバ上で公開する。各携帯電話が備える共有ライブラリの機能および動作は共通仕様に対して完全に互換でなければならない。しかしながら、携帯電話メーカはそれぞれ独自に共有ライブラリを開発するため、その機能および動作が共通仕様に対して完全に互換しない場合がある。したがって、共通仕様との互換性に問題のある共有ライブラリを備えた携帯電話においてプログラムが正しく動作しない場合がある。または、共通仕様との互換性に問題のある共有ライブラリを備えた携帯電話において正しく動作するよう開発されたプログラムは、共通仕様に対して完全に互換した共有ライブラリを備えた携帯電話において正しく動作しない場合があると考えられる。
【0019】
この問題に対処するために、非互換の共有ライブラリに対応可能なようにプログラム開発メーカがプログラムを予め書き換えた上で、サーバ上で公開する方法がある。例えば、問題が発生する機種専用のプログラムを問題が発生しないように修正し、他の機種用のプログラムとは別に公開するようにしてもよい。また、プログラムの実行時に機種を判断して、問題の発生する機種では問題が発生しないように動作を変更させるようにプログラムを開発して公開してもよい。
【0020】
しかしながら、携帯電話の機種は数多く存在するため、プログラム開発メーカが各機種の共有ライブラリの非互換情報を収集し、非互換の共有ライブラリへの対処を全てのプログラムに対して実施するのは困難である。すなわち、プログラム開発メーカは、全ての携帯電話、つまり全てのプログラム実行環境の共有ライブラリの互換状況を把握することは困難であり、予め上記修正を実施してサーバに格納しておくことは事実上不可能であると考えられる。したがって、本計算機システムは、プログラム識別テーブル34とプログラム書き換え規則テーブル35とを備え、これらに基づいて動的にプログラム修正を行う必要がある。
【0021】
通常、共有ライブラリは携帯電話(計算機システム)が備えるものが全てであるため、その数は携帯電話メーカの把握できる範囲内であると考えられる。したがって、プログラムの書き換え規則も把握できる範囲内であるため、プログラム書き換え規則テーブル35に関しては予め携帯電話内に格納しておけばよい。しかし、上述したように共有ライブラリに対して非互換であるプログラム、つまり書き換えが必要なプログラムを全て把握することは困難であるため、プログラム識別テーブル34に予め全ての情報を格納しておくことは不可能と考えられる。したがって、プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合に、以下のように当該プログラムの情報をプログラム識別テーブル34に追加するようにする。
【0022】
プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合、計算機システム1のエラー取得部(図示せず)が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、この共有ライブラリを互換性の問題を有するライブラリであると判断する。続いて、エラー取得部は当該共有ライブラリ名をいずれの互換共有ライブラリ名に変更すべきかを判断し、プログラム書き換え規則テーブル35を参照して対応するプログラム書き換え規則識別番号を取得する。続いて、取得した書き換え規則識別番号と前記プログラム識別情報とを対応付けてプログラム識別テーブル34に追加する。このように、共有ライブラリの非互換性に起因するエラー発生時に、書き換えが必要なプログラムの情報と書き換え規則識別番号とをプログラム識別テーブル34に追加すれば、それ以降の当プログラム実行時には互換共有ライブラリへの書き換えが行われるため、プログラムは正しく実行される。
【0023】
以上のように、この実施の形態1によれば、プログラム識別部32が本来の共有ライブラリに対して非互換であるプログラムを識別し、プログラム書き換え部が当該プログラムを、本来の共有ライブラリと異なる名称を持つ互換共有ライブラリを呼び出すように書き換えるようにしたので、同一名称の共有ライブラリを呼び出す複数のプログラムを、同一計算機システムで同時に正しく実行することができる効果が得られる。また、複数のプログラムや複数のモジュールがそれぞれ同一名称の共有ライブラリを呼び出す場合にも、互換共有ライブラリを呼び出すように書き換えられるため、各プログラムまたは各モジュールの実行領域を分離する機能も不要となる効果が得られる。
【0024】
実施の形態2.
図5はこの発明の実施の形態2による計算機システムのブロック図である。この実施の形態2の計算機システム1は実施の形態1と同様に記憶領域、プログラムローダ、プログラム実行領域を備えるが、図5ではプログラムローダ3のみを示している。記憶領域には、実施の形態1と同様に、実行する各種プログラムおよびそれらの実行に必要なすべての共有ライブラリが格納される。また、プログラム実行領域には、実施の形態1と同様に、各種プログラムおよび各種共有ライブラリの実行形態がロードされる。プログラムローダ3は、図5に示すようにプログラム識別情報取得部(識別情報取得手段)37、プログラム書き換え規則情報取得部(書き換え規則情報取得手段)38を備える。また、図1と共通する構成要素には同一符号を付し、その説明を省略する。
【0025】
プログラム識別情報取得部37は複数の計算機システム間での通信を可能とするネットワーク503を介してサーバ506にアクセスする。サーバ506はプログラム識別情報データベース507を備える。データベース507には書き換えが必要なプログラムの識別情報等が格納され、識別情報データは図2に示すデータと同様である。サーバ506はプログラム識別情報取得部37からのアクセスに応答してデータベース507のプログラム識別情報を検索する。
【0026】
プログラム書き換え規則情報取得部38はネットワーク503を介してサーバ504にアクセスする。サーバ504はプログラム書き換え規則データベース505を備える。データベース505にはプログラムを書き換える際の書き換え規則情報が格納され、書き換え規則情報データは図3に示すデータと同様である。サーバ504はプログラム書き換え規則情報取得部38からのアクセスに応答してこのデータベース505からプログラム書き換え規則の情報を取得する。
【0027】
データベース505,507には、プログラム実行前に予め本計算機システム1の使用者、管理者、開発者などによってそれぞれ書き換え規則情報、プログラム識別情報等が格納される。また、データベース507はプログラム実行時に動的に更新される場合がある。すなわち、プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合、計算機システム1のエラー取得部(図示せず)が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、エラー情報収集サーバ(図示せず)に通知する。エラー情報収集サーバはエラー情報の管理を行うサーバであり、サーバ504またはサーバ506と同一でもよい。エラー情報収集サーバは取得した共有ライブラリを互換性の問題を有するライブラリであると判断してプログラム書き換え規則データベース505から対応するプログラム書き換え規則識別番号を取得し、前記プログラム識別情報と対応付けてプログラム識別情報データベース507に追加する。
【0028】
図6および図7は実施の形態2に係るプログラムローダ3の処理手順の一部を示すフローチャートである。図6は図4のステップST402に相当し、プログラム識別情報取得部37の動作を示す。また、図7は図4のステップST405に相当し、プログラム書き換え規則情報取得部38の動作を示す。図4、図6および図7を用いてプログラムローダ3の動作について説明する。
【0029】
図4に示すように、計算機システム1においてアプリケーションが起動されると、プログラムローダ3のプログラム読み出し部31が記憶領域2から実行するプログラムとそれらの管理情報(ベンダ名、プログラム名称、バージョン、CRC値)および共有ライブラリを読み出し、バッファ等(図示せず)に格納する(ステップST401)。続いて図6に移り、プログラム識別部32はプログラム識別情報取得部37に対して、読み出したプログラムが書き換え対象であるか否かを調べる要求を出す(ステップST601)。プログラム識別情報取得部37はネットワーク503を介してサーバ506に各プログラムの管理情報を通知して、当該プログラムが書き換え対象プログラムとしてプログラム識別情報データベース507に登録されているか否かを調べる要求を出す(ステップST602)。サーバ506は当該プログラムが書き換え対象プログラムとして登録されているか否かを、実施の形態1と同様に各プログラムの管理情報とプログラム識別情報データベース507のデータとを比較して調べる(ステップST603)。
【0030】
サーバ506は、当該プログラムがデータベース507に登録されている場合はプログラム書き換え規則識別番号を取得し、ネットワーク503を介してプログラム識別情報取得部37に通知する。また、登録されていなかった場合はその旨を通知する(ステップST604)。続いて、プログラム識別情報取得部37は取得した結果をプログラム識別部32に対して通知する(ステップST605)。続いて図4に戻り、データベース507に登録されている場合(ステップST403)、プログラム識別部32はプログラム書き換え規則識別番号をプログラム書き換え部33に対して通知する(ステップST404)。
【0031】
続いて図7に移り、プログラム書き換え部33はプログラム書き換え規則情報取得部38に対してプログラム書き換え規則識別番号を通知し、対応するプログラム書き換え規則の取得を要求する(ステップST701)。プログラム書き換え規則情報取得部38はネットワーク503を介して、サーバ504にプログラム書き換え規則の取得を要求する(ステップST702)。サーバ504はプログラム書き換え規則データベース505から、通知されたプログラム書き換え規則識別番号に対応するプログラム書き換え規則を取得する(ステップST703)。サーバ504は、取得したプログラム書き換え規則をネットワーク503を介してプログラム書き換え規則情報取得部38に通知する(ステップST704)。
【0032】
プログラム書き換え規則情報取得部38は取得したプログラム書き換え規則情報をプログラム書き換え部33に通知する(ステップST705)。プログラム書き換え部33は、プログラム書き換え規則情報取得部38から通知された書き換え規則に従って、バッファに格納される当該プログラムの共有ライブラリ呼び出し箇所を書き換える(ステップST706)。続いて図4に戻り、プログラム書き換え部33がプログラムを書き換えた後、プログラム書き込み部36がバッファに格納されるプログラムおよび共有ライブラリをプログラム実行領域4にロードする(ステップST406)。また、ステップST403で書き換え対象プログラムがないと判断された場合は、読み出したプログラムと共有ライブラリとをそのままプログラム実行領域4にロードする(ステップST406)。
【0033】
以上のように、この実施の形態2によれば、プログラム識別情報取得部37がプログラム識別情報を備えるサーバ506に対してプログラム識別情報の検索を要求するようにしたため、実施の形態1と同様の効果に加えて、プログラム識別情報データベース507を更新することにより計算機システム1は最新のプログラム識別情報を利用できる効果が得られる。同様に、プログラム書き換え規則情報取得部38がプログラム書き換え規則を備えるサーバ504に対してプログラム書き換え規則の検索を要求するようにしたため、実施の形態1と同様の効果に加えて、本計算機システム1は最新のプログラム書き換え規則を利用できる効果が得られる。
【0034】
また、ネットワーク上のサーバ504,506からプログラム書き換え規則およびプログラム識別情報を取得するようにしたので、計算機システム1に格納できないほど大量のプログラム書き換え規則およびプログラム識別情報を利用できる効果が得られる。
【0035】
実施の形態3.
図8はこの発明の実施の形態3による計算機システムのブロック図である。この実施の形態3の計算機システム1は実施の形態1と同様に記憶領域、プログラムローダ、プログラム実行領域を備えるが、図8ではプログラムローダ3のみを示している。記憶領域には、実施の形態1と同様に、実行する各種プログラムおよびそれらの実行に必要なすべての共有ライブラリが格納される。また、プログラム実行領域には、実施の形態1と同様に、各種プログラムおよび各種共有ライブラリの実行形態がロードされる。プログラムローダ3は、図8に示すようにプログラム識別テーブル更新部(識別テーブル更新手段)39、プログラム書き換え規則テーブル更新部(書き換え規則テーブル更新手段)40を備える。また、図1と共通する構成要素には同一符号を付し、その説明を省略する。
【0036】
この実施の形態3では、実施の形態1で示したプログラムローダにテーブル更新機能を追加した。すなわち、プログラム識別テーブル更新部39はプログラム識別テーブル34を更新する。また、プログラム書き換え規則テーブル更新部40はプログラム書き換え規則テーブル35を更新する。テーブル34の更新は、プログラム識別部32がテーブル34を参照する前に、プログラム識別テーブル更新部39に更新命令を通知することによって開始される。すなわち、図4においてステップST401とステップST402の間で行われる。同様に、テーブル35の更新は、プログラム書き換え部33がテーブル35を参照する前に、プログラム書き換え規則テーブル更新部40に更新命令を通知することによって開始される。すなわち、図4においてステップST404とステップST405の間で行われる。
【0037】
プログラム識別テーブル更新部39は複数の計算機システム間での通信を可能とするネットワーク503を介してサーバ804にアクセスする。サーバ804はプログラム識別情報データベース507を備える。データベース507には書き換えが必要なプログラムの識別情報等が格納されており、その内容は適宜更新され、最新の情報が格納されるようになっている。データベース507が有する識別情報データは、図2に示すデータと同様である。サーバ804はプログラム識別テーブル更新部39からのアクセスに応答してデータベース507のプログラム識別情報を取得する。
【0038】
プログラム書き換え規則テーブル更新部40はネットワーク503を介してサーバ803にアクセスする。サーバ803はプログラム書き換え規則データベース505を備える。データベース505にはプログラムを書き換える際の書き換え規則が格納されており、その内容は適宜更新され、最新の情報が格納されるようになっている。データベース505が有する書き換え規則データは、図3に示すデータと同様である。サーバ803はプログラム書き換え規則テーブル更新部40からのアクセスに応答してデータベース505からプログラム書き換え規則を取得する。
【0039】
図9は実施の形態3に係るプログラム識別テーブル34の更新手順を示すフローチャートであり、この図を用いてプログラム識別テーブル更新部39の動作を説明する。
プログラム識別テーブル更新部39は、更新命令が通知されるとネットワーク503を介してサーバ804に、更新されたプログラム識別情報の送信を要求する(ステップST901)。サーバ804は、前記要求に応答してプログラム識別情報データベース507に更新された情報があるか否かを調べる(ステップST902)。データベース507に更新された情報がある場合、サーバ804は更新情報をネットワーク503を介してプログラム識別テーブル更新部39に通知する。また、更新された情報がない場合はその旨を通知する(ステップST903)。続いて、プログラム識別テーブル更新部39は、取得した情報に基づいてプログラム識別テーブル34を更新する(ステップST904)。
【0040】
図10は実施の形態3に係るプログラム書き換え規則テーブル35の更新手順を示すフローチャートであり、この図を参照してプログラム書き換え規則テーブル更新部40の動作を説明する。
プログラム書き換え規則テーブル更新部40は、更新命令が通知されるとネットワーク503を介してサーバ803に、更新されたプログラム書き換え規則情報の送信を要求する(ステップST1001)。サーバ803は、前記要求に応答してプログラム書き換え規則データベース505に更新された情報があるか否かを調べる(ステップST1002)。データベース505に更新された情報がある場合、サーバ803は更新情報をネットワーク503を介してプログラム書き換え規則テーブル更新部40に通知する。また、更新された情報がない場合はその旨を通知する(ステップST1003)。続いて、プログラム書き換え規則テーブル更新部40は、取得した情報に基づいてプログラム書き換え規則テーブル35を更新する(ステップST1004)。
【0041】
上記手順では、プログラム識別テーブル更新部39、プログラム書き換え規則テーブル更新部40がそれぞれテーブル34、テーブル35の更新をプログラムのロード手順と同期して行ったが、プログラムのロードとは無関係に行ってもよい。
また、テーブル34の更新については、実施の形態1で述べたようにエラー発生時に行われる場合もある。すなわち、エラー発生時に計算機システム1のエラー取得部(図示せず)が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、プログラム書き換え規則テーブル35から当該共有ライブラリ名に対応するプログラム書き換え規則識別番号を取得し、これらを対応付けてプログラム識別テーブル34に追加する。
【0042】
以上のように、この実施の形態3によれば、プログラム識別テーブル更新部39がサーバ804からプログラム識別情報を取得し、プログラム識別テーブル34を更新するようにしたので、実施の形態1と同様の効果に加えて、プログラム識別情報データベース507を更新することにより計算機システム1は最新のプログラム識別情報を取得できる効果が得られる。同様に、プログラム書き換え規則テーブル更新部40がサーバ803からプログラム書き換え規則情報を取得し、プログラム書き換え規則テーブル35を更新するようにしたので、計算機システム1は最新のプログラム書き換え規則情報を取得できる効果が得られる。
【0043】
また、計算機システム1はネットワークを介してサーバ506,504から更新情報のみを取得するようにしたので、実施の形態2と比較してネットワークを介して伝送される情報量が少量で済むという効果が得られる。
【0044】
【発明の効果】
以上のように、この発明によれば、計算機システムが、複数のプログラムによって共有され使用される共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えるように構成したので、同一名称の共有ライブラリを呼び出す複数のプログラムを、同一計算機システムで同時に正しく実行することができる効果がある。
【図面の簡単な説明】
【図1】この発明の実施の形態1による計算機システムのブロック図である。
【図2】図1のプログラム識別テーブルの詳細図である。
【図3】図1のプログラム書き換え規則テーブルの詳細図である。
【図4】実施の形態1に係るプログラムローダの処理手順を示すフローチャートである。
【図5】この発明の実施の形態2による計算機システムのブロック図である。
【図6】同実施の形態2に係るプログラムローダの処理手順の一部を示すフローチャートである。
【図7】同実施の形態2に係るプログラムローダの処理手順の一部を示すフローチャートである。
【図8】同実施の形態3による計算機システムのブロック図である。
【図9】同実施の形態3に係るプログラム識別テーブルの更新手順を示すフローチャートである。
【図10】実施の形態3に係るプログラム書き換え規則テーブルの更新手順を示すフローチャートである。
【符号の説明】
1 計算機システム、2 記憶領域、3 プログラムローダ、4 プログラム実行領域、21 プログラムA、22 プログラムB、23 共有ライブラリX、24 共有ライブラリXb、25 共有ライブラリXc、26 共有ライブラリY、27 共有ライブラリZ、28 共有ライブラリZb、31 プログラム読み出し部、32 プログラム識別部(識別手段)、33 プログラム書き換え部(書き換え手段)、34 プログラム識別テーブル(識別テーブル)、35 プログラム書き換え規則テーブル(書き換え規則テーブル)、36 プログラム書き込み部、37 プログラム識別情報取得部(識別情報取得手段)、38 プログラム書き換え規則情報取得部(書き換え規則情報取得手段)、39 プログラム識別テーブル更新部(識別テーブル更新手段)、40 プログラム書き換え規則テーブル更新部(書き換え規則テーブル更新手段)、41 プログラムAの実行形態、42 共有ライブラリXの実行形態、43 共有ライブラリYの実行形態、44 共有ライブラリZの実行形態、45 プログラムBの実行形態、46 共有ライブラリXbの実行形態、47 共有ライブラリZbの実行形態、341 ベンダ名、342 プログラム名称、343 バージョン、344 CRC値、345,351 プログラム書き換え規則識別番号、352 共有ライブラリ名、353 互換共有ライブラリ名、503 ネットワーク、504,506,803,804 サーバ、505 プログラム書き換え規則データベース、507 プログラム識別情報データベース。
【発明の属する技術分野】
この発明は、共有ライブラリを必要とする複数のプログラムを正しく実行できる計算機システムに関するものである。
【0002】
【従来の技術】
実行時に共有ライブラリを必要とするプログラムを計算機システム上で実行する際、計算機システムが備える共有ライブラリがそのプログラムと互換性がない場合、プログラムは正しく動作しないという問題が起こる。この問題を解決する技術として、互換性がない(非互換)共有ライブラリを、プログラムにより予め想定されている動作を行う互換共有ライブラリに動的に置換した後にプログラムを実行するものがある。例えば、特許文献1はこの種の計算機システムを開示する。
【0003】
【特許文献1】
特開平11−282664号公報(第4−6頁、第1図)
【0004】
【発明が解決しようとする課題】
従来の計算機システムでは、非互換共有ライブラリを、同名を有する互換共有ライブラリに動的に置換することにより正しくプログラムを実行していた。しかし、同名の共有ライブラリは計算機システム上に複数保持できないため、一つのプログラムに適するように共有ライブラリを置換すると、元の共有ライブラリを使って正常に動作するはずの他のプログラムが共有ライブラリとの互換性を失って正常に動作しなくなる。また、プログラムが複数のモジュールから構成され、これらのモジュールが同時に使用する共有ライブラリを、一つのモジュールに適するように置換すると、他のモジュールが正常に動作しない場合もある。
【0005】
上記問題を回避するため、計算機システム内で各プログラムまたはモジュールの実行領域を分離して、実行領域毎に異なるライブラリを使用できるようにする方法がある。しかしながらこの方法は、計算機システムの機能上の制約のため実行領域の分離ができない場合に適用できず、また、実行領域を分離できたとしても大量のメモリ資源を消費してしまうことが考えられる。
【0006】
この発明は、上記のような問題を解決するためになされたもので、共有ライブラリを使用する複数のプログラムまたはモジュールを、同時に正しく実行できる計算機システムを得ることを目的とする。
【0007】
【課題を解決するための手段】
この発明に係る計算機システムは、複数のプログラムによって共有され使用される共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えたものである。
【0008】
【発明の実施の形態】
以下、この発明の様々な実施の形態を説明する。
実施の形態1.
図1はこの発明の実施の形態1による計算機システムのブロック図である。図1に示すように、この計算機システム1は、記憶領域2、プログラムローダ3、プログラム実行領域4を備える。記憶領域2には、実行する各種プログラムおよび共有ライブラリが格納される。プログラムローダ3は、記憶領域2に格納されたプログラムおよび共有ライブラリをプログラム実行領域4にロードするものであり、プログラム読み出し部31、プログラム識別部(識別手段)32、プログラム書き換え部(書き換え手段)33、プログラム識別テーブル(識別テーブル)34、プログラム書き換え規則テーブル(書き換え規則テーブル)35、プログラム書き込み部36を備える。また、プログラム実行領域4は、プログラムおよび共有ライブラリがロードされ、ロードされたプログラムが実行される領域である。記憶領域2はハードディスク等の比較的大容量の記憶媒体で構成され、プログラム実行領域4はRAM等の記憶媒体で構成される。
【0009】
記憶領域2には、実行されるプログラムが格納され、図1ではそれらのうちのプログラムA21、プログラムB22を示す。また、記憶領域2には複数のプログラムによって共有され使用される共有ライブラリが格納され、図1ではそれらのうちの共有ライブラリX23,Y26,Z27を示す。これらは最初から格納されているものであり、「本来の共有ライブラリ」と呼ぶ。さらに、本来の共有ライブラリとは異なる、プログラムA21、プログラムB22において予め想定された動作が可能となるように実装された共有ライブラリを本来の共有ライブラリとは異なる名称で格納する。すなわち、共有ライブラリX23と基本的に類似しているが各々のプログラムにより予め想定されている動作が可能なように実装された共有ライブラリXb24,Xc25を備え、共有ライブラリZ27と基本的に類似しているが各々のプログラムにより予め想定されている動作が可能なように実装されたライブラリZb28を備える。これらを「互換共有ライブラリ」と呼ぶ。互換共有ライブラリは、プログラムにより予め想定された動作が本来の共有ライブラリでは実現できない場合に、本来の共有ライブラリの代わりに呼び出される共有ライブラリである。また、図1の例では共有ライブラリY26は全てのプログラムにとって正しく動作するように実装されたものである。
【0010】
プログラムローダ3では、プログラム読み出し部31が記憶領域2に格納された各種プログラムおよび各種共有ライブラリを読み出し、バッファ等(図示せず)に格納する。プログラム識別部32は、上記バッファに格納されたプログラムから各プログラムの識別に必要な情報を取得し、プログラム識別テーブル34に格納される情報と比較する。プログラム識別テーブル34には、プログラム実行前に予め本計算機システム1の使用者、管理者、開発者などによって書き換えが必要なプログラムの識別情報等が格納される。また、このテーブル34は実行時に動的に更新される場合がある。この更新方法については後述する。プログラム識別部32は、上記バッファに格納されたプログラムがプログラム識別テーブル34に登録されているとき、当該プログラムは書き換えが必要であると判断して必要な情報(後述する)をプログラム書き換え部33に通知する。
【0011】
プログラム書き換え部33は、プログラム識別部32から取得した情報に基づいて、プログラム書き換え規則テーブル35から書き換え規則情報を取得する。プログラム書き換え規則テーブル35には、プログラム書き換え部33がプログラムを書き換える際の書き換え規則情報が格納されている。このテーブル35には、前記情報を本計算機システム1の使用者、管理者、開発者などがプログラム実行前に予め格納しておく。プログラム書き換え部33は、プログラム識別部32から取得した識別情報とプログラム書き換え規則テーブル35の情報とに基づいて、バッファに格納される書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える。プログラムの書き換え終了後、プログラム書き込み部36はバッファからプログラムおよび共有ライブラリをプログラム実行領域4にロードする。
【0012】
プログラム実行領域4には、プログラムローダ3によってプログラムA21、プログラムB22がロードされ、それぞれの実行形態41、実行形態45が格納される。プログラムAの実行形態41には共有ライブラリX,Y,Zの実行形態42,43,44がリンクされ、プログラムBの実行形態45には共有ライブラリXb,Y,Zbの実行形態46,43,47がリンクされる。ここで、実行形態とは計算機システム上で実行可能なようにRAM等に配置されたプログラムおよび共有ライブラリの状態を示す。
【0013】
図2はプログラム識別テーブル34の詳細図である。図に示すように、プログラム識別テーブル34は、プログラムの識別に用いられる各種情報と、当該プログラムに適用すべきプログラム書き換え規則を指定する番号情報345とを備える。プログラムの識別に用いられる各種情報には、プログラムを開発したベンダ名341、プログラムの名称342、プログラムのバージョン343、プログラムファイルのCRC(Cyclic Redundancy Check)値344がある。
【0014】
図3はプログラム書き換え規則テーブル35の詳細図である。図に示すように、プログラム書き換え規則テーブル35は、プログラム書き換え規則を指定する番号情報351と、この番号情報351に対応するライブラリ名の書き換え規則情報を備える。プログラム書き換え規則を指定する番号情報351は、図2に示すプログラム識別テーブル34のプログラム書き換え規則識別番号345に対応する。ライブラリ名の書き換え規則情報には、書き換え前のプログラムから呼び出される共有ライブラリ名352、プログラムを正しく実行するために呼び出すべき互換共有ライブラリ名353がある。
【0015】
図4は実施の形態1に係るプログラムローダ3の処理手順を示すフローチャートであり、この図を用いてプログラムローダ3の動作について説明する。
計算機システム1においてアプリケーションが起動されると、プログラムローダ3のプログラム読み出し部31が記憶領域2から実行するプログラムとそれらの管理情報(ベンダ名、プログラム名称、バージョン、CRC値)および共有ライブラリを読み出し、バッファ等に格納する(ステップST401)。プログラム識別部32は、バッファ等に格納されたプログラムの管理情報とプログラム識別テーブル34のプログラム識別情報とを比較する(ステップST402)。読み出したプログラムの管理情報がプログラム識別テーブル34のベンダ名341、プログラム名称342、バージョン343、CRC値344と一致するものは書き換え対象であると判断される(ステップST403)。書き換え対象プログラムが存在すると判断される場合、プログラム識別部32は当該プログラムに対応するプログラム書き換え規則識別番号345をプログラム識別テーブル34から取得し、プログラム書き換え部33に対して通知する(ステップST404)。
【0016】
プログラム書き換え部33は、プログラム識別部32から取得したプログラム書き換え規則識別番号345で指定された書き換え規則情報をプログラム書き換え規則テーブル35から取得し、この規則に従ってバッファに格納される書き換え対象プログラムの共有ライブラリ呼び出し箇所を書き換える(ステップST405)。例えば、取得したプログラム書き換え規則識別番号が’00000021’である場合、本来の共有ライブラリ名’Socket’の呼び出し箇所を互換共有ライブラリ名’Socket_Bcorp’に書き換える(図3参照)。プログラムの書き換え終了後、プログラム書き込み部36がバッファに格納されるプログラムおよび共有ライブラリをプログラム実行領域4にロードする(ステップST406)。また、ステップST403で書き換え対象プログラムがないと判断された場合は、読み出したプログラムと共有ライブラリとをそのままプログラム実行領域4にロードする(ステップST406)。
【0017】
ここで、上記のようにプログラムを実行時に動的に修正する理由について説明する。プログラムの共有ライブラリ呼び出し箇所を図2、図3に示すようなプログラム識別情報、プログラム書き換え規則に従って予め修正して記憶領域2に格納しておくことができれば、プログラム実行時に動的にプログラムを修正する必要はなく、計算機システム1はテーブル34,35を備える必要はない。しかしながら、プログラムを予め修正して格納しておくことは、以下の理由から困難であると考えられる。
【0018】
例えば、本発明による計算機システムの例として携帯電話を用い、複数の携帯電話がそれぞれ、ネットワークを介して接続される任意のサーバから任意のプログラムをダウンロードして各携帯電話上で実行する場合について説明する。プログラムの開発メーカは携帯電話の共通仕様に基づいて全ての携帯電話で動作することを想定したプログラムを開発し、サーバ上で公開する。各携帯電話が備える共有ライブラリの機能および動作は共通仕様に対して完全に互換でなければならない。しかしながら、携帯電話メーカはそれぞれ独自に共有ライブラリを開発するため、その機能および動作が共通仕様に対して完全に互換しない場合がある。したがって、共通仕様との互換性に問題のある共有ライブラリを備えた携帯電話においてプログラムが正しく動作しない場合がある。または、共通仕様との互換性に問題のある共有ライブラリを備えた携帯電話において正しく動作するよう開発されたプログラムは、共通仕様に対して完全に互換した共有ライブラリを備えた携帯電話において正しく動作しない場合があると考えられる。
【0019】
この問題に対処するために、非互換の共有ライブラリに対応可能なようにプログラム開発メーカがプログラムを予め書き換えた上で、サーバ上で公開する方法がある。例えば、問題が発生する機種専用のプログラムを問題が発生しないように修正し、他の機種用のプログラムとは別に公開するようにしてもよい。また、プログラムの実行時に機種を判断して、問題の発生する機種では問題が発生しないように動作を変更させるようにプログラムを開発して公開してもよい。
【0020】
しかしながら、携帯電話の機種は数多く存在するため、プログラム開発メーカが各機種の共有ライブラリの非互換情報を収集し、非互換の共有ライブラリへの対処を全てのプログラムに対して実施するのは困難である。すなわち、プログラム開発メーカは、全ての携帯電話、つまり全てのプログラム実行環境の共有ライブラリの互換状況を把握することは困難であり、予め上記修正を実施してサーバに格納しておくことは事実上不可能であると考えられる。したがって、本計算機システムは、プログラム識別テーブル34とプログラム書き換え規則テーブル35とを備え、これらに基づいて動的にプログラム修正を行う必要がある。
【0021】
通常、共有ライブラリは携帯電話(計算機システム)が備えるものが全てであるため、その数は携帯電話メーカの把握できる範囲内であると考えられる。したがって、プログラムの書き換え規則も把握できる範囲内であるため、プログラム書き換え規則テーブル35に関しては予め携帯電話内に格納しておけばよい。しかし、上述したように共有ライブラリに対して非互換であるプログラム、つまり書き換えが必要なプログラムを全て把握することは困難であるため、プログラム識別テーブル34に予め全ての情報を格納しておくことは不可能と考えられる。したがって、プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合に、以下のように当該プログラムの情報をプログラム識別テーブル34に追加するようにする。
【0022】
プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合、計算機システム1のエラー取得部(図示せず)が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、この共有ライブラリを互換性の問題を有するライブラリであると判断する。続いて、エラー取得部は当該共有ライブラリ名をいずれの互換共有ライブラリ名に変更すべきかを判断し、プログラム書き換え規則テーブル35を参照して対応するプログラム書き換え規則識別番号を取得する。続いて、取得した書き換え規則識別番号と前記プログラム識別情報とを対応付けてプログラム識別テーブル34に追加する。このように、共有ライブラリの非互換性に起因するエラー発生時に、書き換えが必要なプログラムの情報と書き換え規則識別番号とをプログラム識別テーブル34に追加すれば、それ以降の当プログラム実行時には互換共有ライブラリへの書き換えが行われるため、プログラムは正しく実行される。
【0023】
以上のように、この実施の形態1によれば、プログラム識別部32が本来の共有ライブラリに対して非互換であるプログラムを識別し、プログラム書き換え部が当該プログラムを、本来の共有ライブラリと異なる名称を持つ互換共有ライブラリを呼び出すように書き換えるようにしたので、同一名称の共有ライブラリを呼び出す複数のプログラムを、同一計算機システムで同時に正しく実行することができる効果が得られる。また、複数のプログラムや複数のモジュールがそれぞれ同一名称の共有ライブラリを呼び出す場合にも、互換共有ライブラリを呼び出すように書き換えられるため、各プログラムまたは各モジュールの実行領域を分離する機能も不要となる効果が得られる。
【0024】
実施の形態2.
図5はこの発明の実施の形態2による計算機システムのブロック図である。この実施の形態2の計算機システム1は実施の形態1と同様に記憶領域、プログラムローダ、プログラム実行領域を備えるが、図5ではプログラムローダ3のみを示している。記憶領域には、実施の形態1と同様に、実行する各種プログラムおよびそれらの実行に必要なすべての共有ライブラリが格納される。また、プログラム実行領域には、実施の形態1と同様に、各種プログラムおよび各種共有ライブラリの実行形態がロードされる。プログラムローダ3は、図5に示すようにプログラム識別情報取得部(識別情報取得手段)37、プログラム書き換え規則情報取得部(書き換え規則情報取得手段)38を備える。また、図1と共通する構成要素には同一符号を付し、その説明を省略する。
【0025】
プログラム識別情報取得部37は複数の計算機システム間での通信を可能とするネットワーク503を介してサーバ506にアクセスする。サーバ506はプログラム識別情報データベース507を備える。データベース507には書き換えが必要なプログラムの識別情報等が格納され、識別情報データは図2に示すデータと同様である。サーバ506はプログラム識別情報取得部37からのアクセスに応答してデータベース507のプログラム識別情報を検索する。
【0026】
プログラム書き換え規則情報取得部38はネットワーク503を介してサーバ504にアクセスする。サーバ504はプログラム書き換え規則データベース505を備える。データベース505にはプログラムを書き換える際の書き換え規則情報が格納され、書き換え規則情報データは図3に示すデータと同様である。サーバ504はプログラム書き換え規則情報取得部38からのアクセスに応答してこのデータベース505からプログラム書き換え規則の情報を取得する。
【0027】
データベース505,507には、プログラム実行前に予め本計算機システム1の使用者、管理者、開発者などによってそれぞれ書き換え規則情報、プログラム識別情報等が格納される。また、データベース507はプログラム実行時に動的に更新される場合がある。すなわち、プログラム実行中に共有ライブラリの非互換性に起因するエラーが発生した場合、計算機システム1のエラー取得部(図示せず)が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、エラー情報収集サーバ(図示せず)に通知する。エラー情報収集サーバはエラー情報の管理を行うサーバであり、サーバ504またはサーバ506と同一でもよい。エラー情報収集サーバは取得した共有ライブラリを互換性の問題を有するライブラリであると判断してプログラム書き換え規則データベース505から対応するプログラム書き換え規則識別番号を取得し、前記プログラム識別情報と対応付けてプログラム識別情報データベース507に追加する。
【0028】
図6および図7は実施の形態2に係るプログラムローダ3の処理手順の一部を示すフローチャートである。図6は図4のステップST402に相当し、プログラム識別情報取得部37の動作を示す。また、図7は図4のステップST405に相当し、プログラム書き換え規則情報取得部38の動作を示す。図4、図6および図7を用いてプログラムローダ3の動作について説明する。
【0029】
図4に示すように、計算機システム1においてアプリケーションが起動されると、プログラムローダ3のプログラム読み出し部31が記憶領域2から実行するプログラムとそれらの管理情報(ベンダ名、プログラム名称、バージョン、CRC値)および共有ライブラリを読み出し、バッファ等(図示せず)に格納する(ステップST401)。続いて図6に移り、プログラム識別部32はプログラム識別情報取得部37に対して、読み出したプログラムが書き換え対象であるか否かを調べる要求を出す(ステップST601)。プログラム識別情報取得部37はネットワーク503を介してサーバ506に各プログラムの管理情報を通知して、当該プログラムが書き換え対象プログラムとしてプログラム識別情報データベース507に登録されているか否かを調べる要求を出す(ステップST602)。サーバ506は当該プログラムが書き換え対象プログラムとして登録されているか否かを、実施の形態1と同様に各プログラムの管理情報とプログラム識別情報データベース507のデータとを比較して調べる(ステップST603)。
【0030】
サーバ506は、当該プログラムがデータベース507に登録されている場合はプログラム書き換え規則識別番号を取得し、ネットワーク503を介してプログラム識別情報取得部37に通知する。また、登録されていなかった場合はその旨を通知する(ステップST604)。続いて、プログラム識別情報取得部37は取得した結果をプログラム識別部32に対して通知する(ステップST605)。続いて図4に戻り、データベース507に登録されている場合(ステップST403)、プログラム識別部32はプログラム書き換え規則識別番号をプログラム書き換え部33に対して通知する(ステップST404)。
【0031】
続いて図7に移り、プログラム書き換え部33はプログラム書き換え規則情報取得部38に対してプログラム書き換え規則識別番号を通知し、対応するプログラム書き換え規則の取得を要求する(ステップST701)。プログラム書き換え規則情報取得部38はネットワーク503を介して、サーバ504にプログラム書き換え規則の取得を要求する(ステップST702)。サーバ504はプログラム書き換え規則データベース505から、通知されたプログラム書き換え規則識別番号に対応するプログラム書き換え規則を取得する(ステップST703)。サーバ504は、取得したプログラム書き換え規則をネットワーク503を介してプログラム書き換え規則情報取得部38に通知する(ステップST704)。
【0032】
プログラム書き換え規則情報取得部38は取得したプログラム書き換え規則情報をプログラム書き換え部33に通知する(ステップST705)。プログラム書き換え部33は、プログラム書き換え規則情報取得部38から通知された書き換え規則に従って、バッファに格納される当該プログラムの共有ライブラリ呼び出し箇所を書き換える(ステップST706)。続いて図4に戻り、プログラム書き換え部33がプログラムを書き換えた後、プログラム書き込み部36がバッファに格納されるプログラムおよび共有ライブラリをプログラム実行領域4にロードする(ステップST406)。また、ステップST403で書き換え対象プログラムがないと判断された場合は、読み出したプログラムと共有ライブラリとをそのままプログラム実行領域4にロードする(ステップST406)。
【0033】
以上のように、この実施の形態2によれば、プログラム識別情報取得部37がプログラム識別情報を備えるサーバ506に対してプログラム識別情報の検索を要求するようにしたため、実施の形態1と同様の効果に加えて、プログラム識別情報データベース507を更新することにより計算機システム1は最新のプログラム識別情報を利用できる効果が得られる。同様に、プログラム書き換え規則情報取得部38がプログラム書き換え規則を備えるサーバ504に対してプログラム書き換え規則の検索を要求するようにしたため、実施の形態1と同様の効果に加えて、本計算機システム1は最新のプログラム書き換え規則を利用できる効果が得られる。
【0034】
また、ネットワーク上のサーバ504,506からプログラム書き換え規則およびプログラム識別情報を取得するようにしたので、計算機システム1に格納できないほど大量のプログラム書き換え規則およびプログラム識別情報を利用できる効果が得られる。
【0035】
実施の形態3.
図8はこの発明の実施の形態3による計算機システムのブロック図である。この実施の形態3の計算機システム1は実施の形態1と同様に記憶領域、プログラムローダ、プログラム実行領域を備えるが、図8ではプログラムローダ3のみを示している。記憶領域には、実施の形態1と同様に、実行する各種プログラムおよびそれらの実行に必要なすべての共有ライブラリが格納される。また、プログラム実行領域には、実施の形態1と同様に、各種プログラムおよび各種共有ライブラリの実行形態がロードされる。プログラムローダ3は、図8に示すようにプログラム識別テーブル更新部(識別テーブル更新手段)39、プログラム書き換え規則テーブル更新部(書き換え規則テーブル更新手段)40を備える。また、図1と共通する構成要素には同一符号を付し、その説明を省略する。
【0036】
この実施の形態3では、実施の形態1で示したプログラムローダにテーブル更新機能を追加した。すなわち、プログラム識別テーブル更新部39はプログラム識別テーブル34を更新する。また、プログラム書き換え規則テーブル更新部40はプログラム書き換え規則テーブル35を更新する。テーブル34の更新は、プログラム識別部32がテーブル34を参照する前に、プログラム識別テーブル更新部39に更新命令を通知することによって開始される。すなわち、図4においてステップST401とステップST402の間で行われる。同様に、テーブル35の更新は、プログラム書き換え部33がテーブル35を参照する前に、プログラム書き換え規則テーブル更新部40に更新命令を通知することによって開始される。すなわち、図4においてステップST404とステップST405の間で行われる。
【0037】
プログラム識別テーブル更新部39は複数の計算機システム間での通信を可能とするネットワーク503を介してサーバ804にアクセスする。サーバ804はプログラム識別情報データベース507を備える。データベース507には書き換えが必要なプログラムの識別情報等が格納されており、その内容は適宜更新され、最新の情報が格納されるようになっている。データベース507が有する識別情報データは、図2に示すデータと同様である。サーバ804はプログラム識別テーブル更新部39からのアクセスに応答してデータベース507のプログラム識別情報を取得する。
【0038】
プログラム書き換え規則テーブル更新部40はネットワーク503を介してサーバ803にアクセスする。サーバ803はプログラム書き換え規則データベース505を備える。データベース505にはプログラムを書き換える際の書き換え規則が格納されており、その内容は適宜更新され、最新の情報が格納されるようになっている。データベース505が有する書き換え規則データは、図3に示すデータと同様である。サーバ803はプログラム書き換え規則テーブル更新部40からのアクセスに応答してデータベース505からプログラム書き換え規則を取得する。
【0039】
図9は実施の形態3に係るプログラム識別テーブル34の更新手順を示すフローチャートであり、この図を用いてプログラム識別テーブル更新部39の動作を説明する。
プログラム識別テーブル更新部39は、更新命令が通知されるとネットワーク503を介してサーバ804に、更新されたプログラム識別情報の送信を要求する(ステップST901)。サーバ804は、前記要求に応答してプログラム識別情報データベース507に更新された情報があるか否かを調べる(ステップST902)。データベース507に更新された情報がある場合、サーバ804は更新情報をネットワーク503を介してプログラム識別テーブル更新部39に通知する。また、更新された情報がない場合はその旨を通知する(ステップST903)。続いて、プログラム識別テーブル更新部39は、取得した情報に基づいてプログラム識別テーブル34を更新する(ステップST904)。
【0040】
図10は実施の形態3に係るプログラム書き換え規則テーブル35の更新手順を示すフローチャートであり、この図を参照してプログラム書き換え規則テーブル更新部40の動作を説明する。
プログラム書き換え規則テーブル更新部40は、更新命令が通知されるとネットワーク503を介してサーバ803に、更新されたプログラム書き換え規則情報の送信を要求する(ステップST1001)。サーバ803は、前記要求に応答してプログラム書き換え規則データベース505に更新された情報があるか否かを調べる(ステップST1002)。データベース505に更新された情報がある場合、サーバ803は更新情報をネットワーク503を介してプログラム書き換え規則テーブル更新部40に通知する。また、更新された情報がない場合はその旨を通知する(ステップST1003)。続いて、プログラム書き換え規則テーブル更新部40は、取得した情報に基づいてプログラム書き換え規則テーブル35を更新する(ステップST1004)。
【0041】
上記手順では、プログラム識別テーブル更新部39、プログラム書き換え規則テーブル更新部40がそれぞれテーブル34、テーブル35の更新をプログラムのロード手順と同期して行ったが、プログラムのロードとは無関係に行ってもよい。
また、テーブル34の更新については、実施の形態1で述べたようにエラー発生時に行われる場合もある。すなわち、エラー発生時に計算機システム1のエラー取得部(図示せず)が実行中のプログラムの識別情報とエラーが発生した共有ライブラリ名とを取得し、プログラム書き換え規則テーブル35から当該共有ライブラリ名に対応するプログラム書き換え規則識別番号を取得し、これらを対応付けてプログラム識別テーブル34に追加する。
【0042】
以上のように、この実施の形態3によれば、プログラム識別テーブル更新部39がサーバ804からプログラム識別情報を取得し、プログラム識別テーブル34を更新するようにしたので、実施の形態1と同様の効果に加えて、プログラム識別情報データベース507を更新することにより計算機システム1は最新のプログラム識別情報を取得できる効果が得られる。同様に、プログラム書き換え規則テーブル更新部40がサーバ803からプログラム書き換え規則情報を取得し、プログラム書き換え規則テーブル35を更新するようにしたので、計算機システム1は最新のプログラム書き換え規則情報を取得できる効果が得られる。
【0043】
また、計算機システム1はネットワークを介してサーバ506,504から更新情報のみを取得するようにしたので、実施の形態2と比較してネットワークを介して伝送される情報量が少量で済むという効果が得られる。
【0044】
【発明の効果】
以上のように、この発明によれば、計算機システムが、複数のプログラムによって共有され使用される共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えるように構成したので、同一名称の共有ライブラリを呼び出す複数のプログラムを、同一計算機システムで同時に正しく実行することができる効果がある。
【図面の簡単な説明】
【図1】この発明の実施の形態1による計算機システムのブロック図である。
【図2】図1のプログラム識別テーブルの詳細図である。
【図3】図1のプログラム書き換え規則テーブルの詳細図である。
【図4】実施の形態1に係るプログラムローダの処理手順を示すフローチャートである。
【図5】この発明の実施の形態2による計算機システムのブロック図である。
【図6】同実施の形態2に係るプログラムローダの処理手順の一部を示すフローチャートである。
【図7】同実施の形態2に係るプログラムローダの処理手順の一部を示すフローチャートである。
【図8】同実施の形態3による計算機システムのブロック図である。
【図9】同実施の形態3に係るプログラム識別テーブルの更新手順を示すフローチャートである。
【図10】実施の形態3に係るプログラム書き換え規則テーブルの更新手順を示すフローチャートである。
【符号の説明】
1 計算機システム、2 記憶領域、3 プログラムローダ、4 プログラム実行領域、21 プログラムA、22 プログラムB、23 共有ライブラリX、24 共有ライブラリXb、25 共有ライブラリXc、26 共有ライブラリY、27 共有ライブラリZ、28 共有ライブラリZb、31 プログラム読み出し部、32 プログラム識別部(識別手段)、33 プログラム書き換え部(書き換え手段)、34 プログラム識別テーブル(識別テーブル)、35 プログラム書き換え規則テーブル(書き換え規則テーブル)、36 プログラム書き込み部、37 プログラム識別情報取得部(識別情報取得手段)、38 プログラム書き換え規則情報取得部(書き換え規則情報取得手段)、39 プログラム識別テーブル更新部(識別テーブル更新手段)、40 プログラム書き換え規則テーブル更新部(書き換え規則テーブル更新手段)、41 プログラムAの実行形態、42 共有ライブラリXの実行形態、43 共有ライブラリYの実行形態、44 共有ライブラリZの実行形態、45 プログラムBの実行形態、46 共有ライブラリXbの実行形態、47 共有ライブラリZbの実行形態、341 ベンダ名、342 プログラム名称、343 バージョン、344 CRC値、345,351 プログラム書き換え規則識別番号、352 共有ライブラリ名、353 互換共有ライブラリ名、503 ネットワーク、504,506,803,804 サーバ、505 プログラム書き換え規則データベース、507 プログラム識別情報データベース。
Claims (4)
- 複数のプログラムによって共有され使用される共有ライブラリと、
前記共有ライブラリに対して非互換であるプログラムと互換し当該プログラムにより予め想定されている動作が可能なように実装され、前記共有ライブラリとは異なる名称が付された互換共有ライブラリと、
前記共有ライブラリに対して非互換であるプログラムを書き換え対象プログラムとして識別する識別手段と、
前記識別手段によって識別された書き換え対象プログラムに対して、当該プログラムと互換する互換共有ライブラリを呼び出すように書き換えを行う書き換え手段とを備えた計算機システム。 - 書き換え対象プログラムの識別情報を有する識別テーブルと、プログラムの書き換え規則情報を有する書き換え規則テーブルとを備え、
識別手段が、前記識別テーブルの内容に基づいて書き換え対象プログラムを識別し、
書き換え手段が、前記書き換え規則テーブルの内容に基づいてプログラムを書き換えることを特徴とする請求項1記載の計算機システム。 - 書き換え対象プログラムの識別情報と、プログラムの書き換え規則情報を有する1または複数の外部装置と通信可能であり、
前記外部装置に対して書き換え対象プログラムの識別を要求し、取得した結果を識別手段に通知する識別情報取得手段と、
前記外部装置から書き換え規則情報を取得して書き換え手段に通知する書き換え規則情報取得手段とを備えた請求項1記載の計算機システム。 - 書き換え対象プログラムの識別情報と、プログラムの書き換え規則情報を有する1または複数の外部装置と通信可能であり、
前記外部装置から前記識別情報を取得して、当該識別情報に基づいて識別テーブルを更新する識別テーブル更新手段と、
前記外部装置から前記書き換え規則情報を取得して、当該書き換え規則情報に基づいて書き換え規則テーブルを更新する書き換え規則テーブル更新手段とを備えたことを特徴とする請求項2記載の計算機システム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003032639A JP2004246413A (ja) | 2003-02-10 | 2003-02-10 | 計算機システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003032639A JP2004246413A (ja) | 2003-02-10 | 2003-02-10 | 計算機システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004246413A true JP2004246413A (ja) | 2004-09-02 |
Family
ID=33018929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003032639A Pending JP2004246413A (ja) | 2003-02-10 | 2003-02-10 | 計算機システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004246413A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100617297B1 (ko) | 2004-12-03 | 2006-08-30 | 한국전자통신연구원 | 복수의 응용 프로그램들에 공통된 경량 공유 라이브러리를생성하는 방법 |
JP2011128762A (ja) * | 2009-12-16 | 2011-06-30 | Sharp Corp | 情報処理装置、情報処理方法、及び情報処理プログラム |
WO2022254504A1 (ja) * | 2021-05-31 | 2022-12-08 | 富士通株式会社 | 情報処理プログラム、情報処理方法および情報処理装置 |
EP4357911A4 (en) * | 2021-06-16 | 2024-07-24 | Fujitsu Ltd | INFORMATION PROCESSING PROGRAM, INFORMATION PROCESSING METHOD AND INFORMATION PROCESSING DEVICE |
-
2003
- 2003-02-10 JP JP2003032639A patent/JP2004246413A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100617297B1 (ko) | 2004-12-03 | 2006-08-30 | 한국전자통신연구원 | 복수의 응용 프로그램들에 공통된 경량 공유 라이브러리를생성하는 방법 |
JP2011128762A (ja) * | 2009-12-16 | 2011-06-30 | Sharp Corp | 情報処理装置、情報処理方法、及び情報処理プログラム |
WO2022254504A1 (ja) * | 2021-05-31 | 2022-12-08 | 富士通株式会社 | 情報処理プログラム、情報処理方法および情報処理装置 |
EP4357911A4 (en) * | 2021-06-16 | 2024-07-24 | Fujitsu Ltd | INFORMATION PROCESSING PROGRAM, INFORMATION PROCESSING METHOD AND INFORMATION PROCESSING DEVICE |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8572033B2 (en) | Computing environment configuration | |
US9798555B2 (en) | Application implementation method and apparatus | |
CN103399734A (zh) | 生成rest服务和rest实现的方法及对应的设备 | |
KR20070049166A (ko) | 목표 기기 상에서의 종속 소프트웨어 패키지의 검출 및이용을 자동화하기 위한 방법 및 소프트웨어 리포지터리를생성하기 위한 시스템 | |
JP2005182809A (ja) | ストレージ技術抽象化方式におけるファイル内でのファイルシステムの生成 | |
JP2005509194A (ja) | プレインターナライズ済プログラムファイルの作成及び使用のための方法並びに装置 | |
EP2479663A1 (en) | Resource management method and system | |
US7774754B2 (en) | System and method for software application development using virtual path mapping | |
US20080141219A1 (en) | Multiple inheritance facility for java script language | |
KR20080039080A (ko) | 이종언어편집 라이브러리의 인터페이스 기능이 구비된단말장비, api호출방법 및 컴파일함수생성방법 | |
US20030074656A1 (en) | Program execution apparatus and method, computer program for performing the program execution method, image forming system, and address solution method | |
CN114020323A (zh) | 模型处理方法、代码获得方法、装置以及电子设备 | |
CN116760913B (zh) | k8s集群协议转换平台配置下发方法及系统 | |
CN109558121A (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
CN117707543A (zh) | 一种应用安装包制作和安装方法、计算设备及存储介质 | |
CN113626071A (zh) | 函数注册方法、系统、电子设备及存储介质 | |
CN105447040A (zh) | 二进制文件管理、更新方法、装置以及系统 | |
JP2004246413A (ja) | 計算機システム | |
CN109947407B (zh) | 一种数据获取方法及装置 | |
US9940334B2 (en) | Image forming apparatus and control method thereof | |
US11372627B2 (en) | System and method for providing integrated development environment (IDE) for programmable software system | |
JP5417820B2 (ja) | システムファイル共有装置、システムファイル共有方法及びプログラム | |
CN114116030A (zh) | 操作系统的运行方法、装置、电子设备、存储介质 | |
KR20080027293A (ko) | 데이터 언어에서 다수 언어들의 관리 | |
WO2019157891A1 (zh) | 应用安装方法、应用安装包的生成方法 |