(57)【特許請求の範囲】
【請求項１】
世代付きロードモジュール・ライブラリの世代間を差分管理するロードモジュール・ライブラリ管理機構において、世代運用を実施することにより生ずるフラグメンテーションをファイル内の特定のエクステントに統括する手段と、上記統括処理のアトミック・アクションを保証する手段と、解放されたエクステントを空き領域として返却する手段と、
ロードモジュール・ライブラリの実行状態と解放可能なエクステントを一元的に管理する手段と、補助的管理機構を具備する世代管理機構を設け、
上記世代管理機構により、解放可能なエクステントの使用者がいなくなった時点でエクステントを解放することにより、運用中のロードモジュール・ライブラリのエクステントを返却可能とし、世代付きロードモジュール・ライブラリのファイル・サイズの縮退を行い、
上記世代管理機構を含むシステムがダウンしたとき、上記補助的管理機構は、世代管理機構から通知される、ロードモジュール・ライブラリの実行状態と解放可能なエクステントを管理するための管理情報を再構築するに必要なエッセンス情報を利用して処理を継続することにより、運用中のロードモジュール・ライブラリの動作を保証しつつ、運用中のロードモジュール・ライブラリのエクステントを返却可能とした
ことを特徴とするロードモジュール・ライブラリ管理機構。
【請求項２】
世代管理機構と補助的管理機構をそれぞれクライアント・サーバ・モデルの現用サーバと待機サーバとし、また、現用サーバと待機サーバがアクセス可能な共用メモリを設け、ロードモジュール・ライブラリの実行状態と解放可能なエクステントを管理するための管理情報を再構築するに必要なエッセンス情報を上記共用メモリに格納し、上記世代管理機構を含むシステムがダウンしたとき、上記共用メモリに格納されたエッセンス情報を利用して上記補助的管理機構が処理を継続することを特徴とする請求項１のロードモジュール・ライブラリ管理機構。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、世代付きロードモジュール・ライブラリの管理機構に関し、さらに詳細には世代付きロードモジュール・ライブラリのファイル・サイズを運用形態のままで縮退することができるロードモジュール・ライブラリ管理機構に関するものである。
【０００２】
最近、ロードモジュールまたはロードモジュール・ライブラリの世代管理を実現し、ソフトウェアの活性保守を実現する上で、格納媒体の使用量の削減が重要な問題となっている。
実運用では、システム内で使用できる格納容量には限界があり、その中で各種のファイルを管理・運用する必要がある。したがって、ロードモジュール・ライブラリにおいても、運用上の使用可能な上限値が設定され、ロードモジュール・ライブラリ内に生ずるフラグメンテーションを解消（ファイル容量の縮退）し、媒体容量の増大を抑止する必要が生ずる。
【０００３】
また、世代付きロードモジュール・ライブラリの中には、そのロードモジュール・ライブラリ内に格納されているプログラムの運用を停止することが業務上不可能なものもあり、運用形態のままでフラグメンテーションの解消（ファイル容量の縮退）が必要となる。
【０００４】
【従来の技術】
世代付きロードモジュール・ライブラリの管理方法としては、従来、世代間の共通データを差分管理し、媒体容量の増大を防止する方法がとられてきた（特開平４−５２８２６号公報参照）。
図１９〜図２１は上記したロードモジュール・ライブラリの管理方法を示す図である。
【０００５】
同図において、１０１〜１０３は第１世代ないし第３世代のロードモジュール・ライブラリ、１０１ａ〜１０３ａは各世代を構成しているブロックの媒体上ファイルの相対位置を示す情報である。
１０４は媒体上のロードモジュール・ライブラリのファイルであり、ファイル１０４の格納領域はブロック単位に管理され、ロードモジュール・ライブラリの各モジュールはそれぞれのブロックに対応付けられて格納される。また、ファイル・システムに用意されているファイル・サイズの拡張／縮退機能は次の通りである。
・拡張：ファイル・サイズの拡張関数の発行により、図２２に示すように、現在使用しているファイルの後ろに別のエクステントを獲得し、ファイルの一部とし、ファイル関数の使用者に一連の領域として使用させる。すなわち、第１エクステントからなるファイルに新たに第２エクステントを追加することにより、ファイル・サイズを拡張する。
・縮退：ファイル・サイズの縮退関数の発行により、現在使用しているファイルの後ろからエクステント単位にファイルを解放し、ファイル・システム内で管理している空き領域に登録する。上記図２２の場合には、第２エクステントを解放することによりファイル・サイズの縮退をする。
【０００６】
現状において、世代付きロードモジュール・ライブラリの管理は次のように行われている。
(1) 図１９に示すように、第１世代、第２世代の２つの世代を持つロードモジュール・ライブラリが存在し、第１世代と第２世代のロードモジュール・ライブラリではモジュールＢとＢ’（同図の編みかけ部分）のみが相違し、モジュールＡ，Ｃ，Ｄは第１、第２世代において同一であるとする。
【０００７】
この場合、各モジュールＡ，Ｂ，Ｃ，Ｄはファイル１０４の各ブロックに次のように格納される。
同図に示すように、ファイル・サイズを６ブロックとし、その内、４ブロックを使用して、第１世代のロードモジュール・ライブラリ１０１のモジュールＡをファイル１０４のブロック０に格納し、また、モジュールＢをブロック１に格納し、さらにモジュールＣ，Ｄをブロック２に格納する。なお、同図では、モジュールＡがブロック０に収まりきらず、ブロック０とブロック１にまたがって格納されている。
【０００８】
また、第２世代のロードモジュール・ライブラリ１０２については、モジュールＡ，Ｃ，Ｄが第１世代のそれと同一であり、モジュールＢ’のみが相違しているので、第２世代のモジュールＢ’のみがファイル１０４のブロック３に格納される。なお、上記のように第１世代のモジュールＡはブロック０とブロック１にまたがって格納されているので、ブロック３にも第１世代のモジュールＡの後半部分が重複して格納される。
(2) 図１９の状態において、新世代として第３世代を作成し、モジュールＡ’，Ｂ" ，Ｃ’，Ｄ’をファイル１０４に格納すると図２０に示す状態となる。
【０００９】
すなわち、上記第３世代のモジュールＡ’，Ｂ" ，Ｃ’，Ｄ’は既存のファイル１０４のブロック４，５には収まりきらないため、図２０に示すようにファイル・サイズを１ブロック拡張し、拡張されたブロック６に第３世代のモジュールＣ’，Ｄ’を格納する。
その結果、ファルイ・サイズは７ブロックとなり、その内７ブロックを使用することとなる。
(3) 次に、図２０の状態で、不要となった「第１世代」を削除すると、図２１に示す状態となる。
【００１０】
すなわち、第１世代のロードモジュール・ライブラリを削除すると、ファイル１０４のブロック０、ブロック２は第２世代でも使用しているため、同図に示すように、ファイル１０４のブロック１のみが空きとなり、解放の対象となる。
上記のように、第１世代を削除することにより、ブロック１が空き領域となり、現状の仕組みではこの領域は次の世代作成要求時に割り当てることとなっているが、要求がない場合にはフラグメンテーションになる。
【００１１】
実際の運用では、各世代を構成する媒体上のブロックの数は大きなものであり、また、削除する版の数によって、このフラグメンテーションが多く発生する。
【００１２】
【発明が解決しようとする課題】
現状の世代付きロードモジュール・ライブラリでは、上記のように世代数が増えて格納データが増加した場合、ロードモジュール・ライブラリの格納ファイルに収まらなければ、ロードモジュール・ライブラリの格納ファイルを拡張し格納していた。
【００１３】
したがって、複数世代を格納する場合には初期ファイル・サイズより拡張され、複数のエクステントからなるファイルとなった。この状態で、ユーザが不要な世代を削除し、その領域を他のファイルの領域として割り当てたいと考えた場合、現状ではロードモジュール・ライブラリ内の一部媒体領域を返却する仕組みがなく、フラグメンテーションとなり、他のファイルとしての媒体の使用ができなかった。
【００１４】
すなわち、現状の世代付きロードモジュール・ライブラリ管理機構では削除した世代の媒体容量をファイル・システムの管理している空き領域に返却することができず、次のような問題が発生する。
（１）前記したように世代付きロードモジュール・ライブラリ内にフラグメンテーションが多く発生する。
（２）フラグメンテーションの解放操作が複雑となる。
【００１５】
例えば、「任意の業務プログラムを５世代管理しつつ、業務サービスを実施していたが、その最新版での業務サービスが安定したため、かつ、他の目的でファイルを使用したく、不要世代を削除して別のファイルに媒体容量を回したい。」という要求を実現するためには、別のロードモジュール・ライブラリのファイルを用意し、必要な世代のみを再度作成するか、複写し、作成後に旧ロードモジュール・ライブラリを削除するような複雑な操作が必要となる。
（３）縮退すべきファイルがＯＳの格納されているシステム・ライブラリの場合には、ＯＳ運用を一時的に停止する必要が生ずる。同様に業務用アプリケーション・プログラムの場合も、その業務を一時的に止める必要がある。
【００１６】
本発明は上記した従来技術の問題点を考慮してなされたものであって、本発明の第１の目的は、差分管理を行うことにより生ずる世代付きロードモジュール・ライブラリ内のフラグメンテーションを統括し、ファイル・サイズの縮退を実現できるロードモジュール・ライブラリ管理機構を提供することである。
本発明の第２の目的は、上記縮退処理をアトミック・アクション（処理要求が完結するまで他の処理に影響を与えず、また、「要求が完結したか」、「まったく実施していないか」、のいずれかの状態しかもたない処理）とし、縮退処理中に発生するシステム異常から処理ファイルを保護し、別の媒体領域（作業用ファイル）を使用せずに安全にファイル・サイズの縮退を実現することができるロードモジュール・ライブラリ管理機構を提供することである。
【００１７】
本発明の第３の目的は、ロードモジュール・ライブラリ内の任意の版数のプログラムが実行されている状態においても、ファイル・サイズの縮退を可能とし、システム運用／業務運用を縮退メンテナンスのために阻害しないロードモジュール・ライブラリ管理機構を提供することである。
【００１８】
【課題を解決するための手段】
図１は本発明の原理図である。同図において、１は世代管理機構（現用サーバ）、２は世代付きロードモジュール・ライブラリを格納した媒体、３は管理情報のエッセンス情報を格納する共用メモリ、４は補助的世代管理機構（待機サーバ）であり、世代管理機構１は、ロードモジュール・ライブラリの実行状態と解放エクステントを管理するための管理情報１ａと、世代運用を実施することにより生ずるフラグメンテーションを特定のエクステントに統括する手段１ｂと、解放されたエクステントを空き領域として返却する手段１ｃと、上記統括処理のアトミック・アクションを保証する手段１ｄを備えている。
【００１９】
上記課題を解決するため、本発明の請求項１の発明は、図１に示すように、世代付きロードモジュール・ライブラリの世代間を差分管理するロードモジュール・ライブラリ管理機構において、世代運用を実施することにより生ずるフラグメンテーションをファイル内の特定のエクステントに統括する手段と、上記統括処理のアトミック・アクションを保証する手段と、解放されたエクステントを空き領域として返却する手段と、ロードモジュール・ライブラリの実行状態と解放可能なエクステントを一元的に管理する手段と、補助的管理機構を具備する世代管理機構を設け、
上記世代管理機構により、解放可能なエクステントの使用者がいなくなった時点でエクステントを解放することにより、運用中のロードモジュール・ライブラリのエクステントを返却可能とし、世代付きロードモジュール・ライブラリのファイル・サイズの縮退を行い、上記世代管理機構を含むシステムがダウンしたとき、上記補助的管理機構は、世代管理機構から通知される、ロードモジュール・ライブラリの実行状態と解放可能なエクステントを管理するための管理情報を再構築するに必要なエッセンス情報を利用して処理を継続することにより、運用中のロードモジュール・ライブラリの動作を保証しつつ、運用中のロードモジュール・ライブラリのエクステントを返却可能としたものである。
【００２２】
本発明の請求項２の発明は、請求項１の発明において、世代管理機構と補助的管理機構をそれぞれクライアント・サーバ・モデルの現用サーバと待機サーバとし、また、現用サーバと待機サーバがアクセス可能な共用メモリを設け、ロードモジュール・ライブラリの実行状態と解放可能なエクステントを管理するための管理情報を再構築するに必要なエッセンス情報を上記共用メモリに格納し、上記世代管理機構を含むシステムがダウンしたとき、上記共用メモリに格納されたエッセンス情報を利用して上記補助的管理機構が処理を継続するようにしたものである。
【００２３】
【作用】
図１において、ユーザ空間からプログラム実行部に実行要求が行われると、プログラム実行部は世代管理機構１に世代の獲得と世代の実行による排他の獲得を依頼する。
世代管理機構１は媒体２のロードモジュール・ライブラリにアクセスし、世代情報の獲得、および排他のための管理情報１ａを作成する。また、上記管理情報１ａのエッセンスをまとめ、共用メモリ３に書き込む。ついで、世代管理機構１はプログラム実行部に情報を返却し、プログラム実行部はプログラムをローディングする。
【００２４】
ユーザ空間から世代管理機構１に世代の削除および削除後のファイルの縮退の要求が行われると、世代管理機構１は媒体２のロードモジュール・ライブラリを読み込み、アトミック・アクションを保証しながらフラグメンテーションの統括処理を行う。そして、上記管理情報１ａを参照して、解放可能なエクステントの使用者がいなくなった時点で解放エクステントを空き領域として返却し、媒体２上のファイルの縮退が行われる。
【００２５】
また、上記処理において、現用サーバを含むシステムに異常が発生すると、現用サーバ１から待機サーバ４に切り換えられ、待機サーバの世代管理機構４は共用メモリ３に格納されたエッセンス情報から上記管理情報を復元し、処理を継続する。
本発明の請求項１の発明においては、上記のように、世代運用を実施することにより生ずるフラグメンテーションをファイル内の特定のエクステントに統括する手段１ａと、上記統括処理のアトミック・アクションを保証する手段１ｄと、解放されたエクステントを空き領域として返却する手段１ｃとを具備する世代管理機構１を設けているので、差分管理しているロードモジュール・ライブラリ内のフラグメンテーションの解放／ファイル・サイズの縮退を図ることができ、媒体の使用容量を削減することができる。
【００２６】
また、世代管理機構１に、ロードモジュール・ライブラリの実行状態と解放可能なエクステントを一元的に管理する手段１ｂを設け、解放可能なエクステントの使用者がいなくなった時点でエクステントを解放しているので、プログラムの運用を停止することが業務上不可能なロードモジュール・ライブラリ１であっても運用状態のままで縮退処理が可能となる。
【００２７】
さらに、補助的管理機構４を設け、世代管理機構１を含むシステムがダウンしたとき、上記補助的管理機構４が、世代管理機構１から通知されるエッセンス情報３ａを利用して処理を継続するようにしたので、管理情報が失われることなく処理を継続することができ、業務の連続運転（ソフト活性保守）に支障を与えることがなく、ファイル・サイズの縮退を図ることができる。
【００２８】
本発明の請求項２の発明においては、請求項１の発明において、世代管理機構１と補助的管理機構４をそれぞれクライアント・サーバ・モデルの現用サーバと待機サーバとし、また、現用サーバと待機サーバがアクセス可能な共用メモリ３を設け、エッセンス情報３ａを上記共用メモリ３に格納し、上記世代管理機構１を含むシステムがダウンしたとき、上記共用メモリ３に格納されたエッセンス情報３ａを利用して上記補助的管理機構４が処理を継続するようにしたので、管理情報が失われることなく処理を継続することができ、請求項３の発明と同様、業務の連続運転（ソフト活性保守）に支障を与えることがなく、ファイル・サイズの縮退を図ることができる。
【００２９】
【実施例】
次に、本発明の実施例について説明する。
（１）フラグメンテーションの統括機構およびエクステントの返却機構
(a) フラグメンテーションの統括
前記したように、世代付きロードモジュール・ライブラリは複数エクステントからなるファイルをブロック単位に分割管理することにより差分管理を実現し、各世代を管理するための領域を構築しており、差分単位の管理によるフラグメンテーションはファイル内に分散する。すなわち、図２に示すように、ファイル上のフラグメンテーション１，２，３，４は第１のエクステント、第２のエクステント、第３のエクステントにそれぞれ分散することとなる。そして、この状態では第１〜第３のどのエクステントも使用中のため返却することができない。
【００３０】
図３は本発明におけるフラグメンテーションの統括の概念を示す図であり、本発明においては、図２の分散したフラグメンテーションを図３に示すように一箇所に統括し解放する。これにより、第３のエクステントを返却することが可能となる。
(b) 世代付きロードモジュール・ライブラリの構造と媒体上での格納状態
図４は、本実施例における世代付きロードモジュール・ライブラリの構造と媒体上での格納状態を示す図である。
【００３１】
世代付きロードモジュール・ライブラリは同図に示すように、基本情報と、各世代についての世代情報と世代格納領域から構成され（同図では第１〜第３世代について示されている）、上記基本情報、世代情報、世代領域には次のものが格納されている。
▲１▼  基本情報
・世代管の関連を管理する情報
・ファイル内の領域の管理情報
−ファイルを4096ＫＢの単位のブロックに分割した時のブロックの使用状態の情報
−ファイル内の全ブロック数
−使用中のブロック数
−未使用のブロック数
▲２▼  ｎ世代情報
・ｎ世代の全ブロック数
・ｎ世代とｎ−１世代で共用しているブロック数
・ｎ世代のみで使用しているブロック数
・ｎ世代を構成しているブロックの媒体上ファイルの相対位置
▲３▼  ｎ世代領域
・ｎ世代の構成情報から、仮想的な連続領域を作成し、その中にロードモジュール・ライブラリを格納（前記図１９〜図２１参照）。
【００３２】
上記▲１▼〜▲３▼の情報はブロック単位にまとめられ、媒体上のファイルに図５に示すように格納される。なお、図５において各区画の左肩に記された数字０〜２７がブロック番号を示し、同図では、ブロック８，１３，１７，２５〜２７が空きブロックであり、その他のブロックに基本情報（新と旧）、各世代情報等が格納されている。
【００３３】
ここで、基本情報は後述するようにロバスト化構造（堅牢性）を実現するため媒体上のファイルの先頭２ブロックに２重化（新と旧情報）して格納される。
(c) ファイルの縮退処理
図５において、第３世代を削除すると、図６に示すように、ブロック１０，１８，２１〜２４が空きブロックとして返却され、また、基本情報が更新される。そして、更新された基本情報はロバスト化のためブロック１に格納され、ブロック０に元の基本情報が残る。
【００３４】
上記更新により、基本情報の〔ファイル内の領域の管理情報〕には下記の情報が格納され、また、第２世代情報には下記の情報が格納される。
＜基本情報＞
・ファイル内の領域の管理情報
−ファイルを4096ＫＢの単位のブロックに分割した時のブロックの使用状態の情報→ビットマップで使用状態を格納
−ファイル内の全ブロック数→図６の場合には２８ブロック
−使用中のブロック数→図６の場合には１６ブロック
−未使用のブロック数→図６の場合には１２ブロック
＜第２世代情報＞
・２世代の全ブロック数→８ブロック
・２世代と１世代で共用しているブロック数→０ブロック
・２世代のみで使用しているブロック数→８ブロック
・２世代を構成しているブロックの媒体上ファイルの相対位置、→図７参照
上記図６の状態から、本実施例のフラグメンテーション統括機構は次のような手順で縮退処理を行う。
▲１▼  縮退機構は、上記基本情報から使用中のブロック数を求める。この例の場合、使用中のブロック数は１６ブロックである。
▲２▼  上記▲１▼で調べたブロック以降のブロック番号に格納されている世代を調べる。この例の場合には第２世代が存在する。
▲３▼  上記▲２▼で調べた世代情報および世代領域を次の▲４▼〜▲７▼に示すように移動する。
▲４▼  まず、第２世代の世代情報の格納ブロックを割り当てる。この例の場合、ブロック８が割り当てられる。
▲５▼  第２世代のブロック番号１６以降のブロックを次のように移動する。
・ブロック１６をブロック１０に複写する。
・ブロック１９をブロック１３に複写する。
▲６▼  移動したブロックから、第２世代の世代情報を作成し、▲４▼で割り当てられたブロック８の領域に格納する。
【００３５】
すなわち、ブロック８には次の第２世代の世代情報が書き込まれる。
・第ｎ世代（この例の場合は第２世代）の全ブロック数→８ブロック
・ｎ世代とｎ−１世代（この例では第２世代と第１世代）で代用しているブロック数→０ブロック
・ｎ世代のみで使用しているブロック数→８ブロック
・ｎ世代を構成しているブロックの媒体上のファイルの相対位置→図８参照
▲７▼  最後に、基本情報を更新し、ブロック０に書き込む。すなわち、ファイルを4096ＫＢ単位でブロックに分割したときのブロックの使用状態の情報をブロック０に書き込む。
【００３６】
以上の処理の結果、基本情報、各世代の情報等は媒体上のファイルに図９に示すように格納され、ブロック１６以下が空きブロックとなり返却可能となる。
（２）アトミック・アクション実現のための機構
ファイル内のフラグメンテーションの統括処理中にシステム異常が発生すると、統括以前の状態が復元できなくなる。そこで、本実施例においては、次のようにしてアトミック・アクション（処理要求が完結するまで他の処理に影響を与えず、また、「要求が完結したか」、「まったく実施していないか」のいずれかの状態しか持たない処理）を実現し、システム異常に備えている。
▲１▼  基本情報はブロック０とブロック１に２重化し、図１０に示すようにそれを交互に使用することによりファイル内の情報の更新を実施する。
▲２▼  基本情報以外のデータは全て追加書きとし、「上書き」を行わない。これにより、旧レベルのデータを残し、フラグメンテーションの処理を実施中にシステムに異常が発生しても、旧レベルのデータを復旧することができる。
▲３▼  ファイル・システムにおいて、アトミック性を保証する情報の書き込み量を１ブロックとする。これにより、最後に基本情報の書き込みを完了することにより一連のフラグメンテーションの統括処理を完了したものとする。
▲４▼  基本情報の書き込みの正当性を保証する論理スタンプを実施する。そして、万が一のため、上記▲３▼の処理の補強と、新／旧情報の識別に使用する。
【００３７】
すなわち、図１０に示すように、ブロックの最初と最後に同一の「スタンプ」、例えば「123456」を記録し、最初と最後の「スタンプ」の同一性を確認することにより、基本情報の書き込みが完了したことを確認する。
以上の処理を行うことにより、システム異常が発生しても、旧基本情報（ブロック１：旧基本情報が格納されている）によりフラグメンテーションの統括以前の情報を復元することができる。
（３）共用メモリを使用したエクステントの返却機構
上記した（１）（２）の機構によりプログラム実行を行っていないロードモジュール・ライブラリのファイル・サイズの縮退が可能となるが、これらの技術だけでは、次の(a),(b) の理由により運用中のロードモジュール・ライブラリのファイル・サイズの縮退を行うことはできず、本実施例においては、次のように対処している。
(a) ロードモジュール・ライブラリの任意の世代のプログラムを実行中に、他のユーザ要件からロードモジュール・ライブラリのファイル・サイズの縮退処理が発生し、そのため、実行中のプログラムの格納領域がエクステントの解放領域となり、プログラムの実行完了までそのエクステントの解放ができなくなる。
【００３８】
図１１〜図１３は上記のような場合の一例を示す図であり、前記した図１９〜図２１と同様、１１〜１３は第１世代ないし第３世代のロードモジュール・ライブラリ、１１ａ〜１３ａは各世代を構成しているブロックの媒体上ファイルの相対位置を示す情報、１４は媒体上のロードモジュール・ライブラリのファイルである。
【００３９】
図１１に示すように第１〜第３世代のロードモジュール・ライブラリ１１〜１３があり、ユーザＡが第３世代のロードモジュール・ライブラリ１３のプログラムＣ’を実行しているとする。
ここで、図１２に示すように、ユーザＢが不要となった「第１世代」を削除し、フラグメンテーションの統括を行いファイル１４のブロック０へブロック６の内容を複写したとする（ブロック６は空きエクステントとなる）。
【００４０】
ついで、ユーザＣのファイル獲得要求に対して、図１２で返却されたエクステントが割り当てられ、図１３に示すように、ユーザＣがここにデータ（同図では「1234」が示されている）の書き込みを実施すると、ユーザＡの処理が継続され、プログラムＣ’の処理のため媒体から読み込んだ際、不当なデータ（ユーザＣが更新したテキスト情報）となっており、実行エラーとなる。
【００４１】
上記のような問題を解決するためには下記の２つの方法が考えられる。
▲１▼  フラグメンテーションの統括処理を実施した後に、プログラムの実行機構に新たな世代情報（世代の構成情報）を通知し、旧世代構成情報と入れ換え運用する。
▲２▼  エクステントの解放を使用者がいなくなるまで遅延する。
【００４２】
上記▲１▼の方式は現在の技術では世代の構成情報の切り換えタイミングが難しく実現しがたい。そこで、上記▲２▼の機構の実現が必要となる。
上記▲２▼の機構を実現するため、解放のタイミングを図るためにはシステム内で一元してロードモジュール・ライブラリの実行状態（世代の使用状態）と解放エクステントを管理し、解放エクステントの使用者がいなくなった時点で解放する仕組みが必要となる。
【００４３】
そこで、システム内でロードモジュール・ライブラリの実行状態を一元管理するためのサーバ（クライアント・サーバ・モデルにおけるサーバ）を採用し、サーバ空間内にプログラムの実行状態、解放エクステントの情報を持つようにする。
図１４は上記した仕組みを実現するための世代管理部（サーバ）とプログラムの実行の流れを説明する図であり、２０はプログラム実行部（クライアント）、３０は世代管理部（サーバ）である。
【００４４】
同図において、プログラム実行部２０はプログラムのローディング、アドレスの解決、フェッチのための処理部であり、プロセッサ単位に配置され、プロセッサ配下の複数のユーザ空間Ａ，Ｂ，…，からのプログラムの実行要求を管理する。
例えば、ユーザ空間ＡからライブラリＡ、世代１のプログラムＸの実行要求があると（同図▲１▼）、各プロセッサ上のプログラム実行部（クライアント）２０から世代管理部（サーバ）３０に世代の実行排他の獲得要求を出す（同図▲２▼）。
【００４５】
世代管理部（サーバ）３０は要求ライブラリ、世代が実行可能か否か判別し（同図▲３▼）、実行可能の場合には空間識別ｉｄ、ライブラリ、世代、実行／更新の情報を登録して処理を許可し、世代情報を返却する（同図▲４▼）。
プログラム実行部（クライアント）２０は世代情報の世代の構成情報を使用し、ユーザ空間Ａにローディング処理を実施する（同図▲５▼）。ついで、アドレス解決を実施し、処理をフェッチし（同図▲６▼）、プログラムＸが実行される。
【００４６】
上記した世代の実行排他の獲得要求を出す際、各プロセッサ上のプログラム実行部を識別するため、空間に付属するｉｄが使用され、世代管理部３０は図１５に示す制御表により上記ｉｄなどの情報を管理している。
図１５の制御表は、ライブラリＡに対して、プログラム実行部Ｘ，Ｙがそれぞれ使用しており、プログラム実行部Ｘは第１世代と第２世代を「実行目的」で使用中であり、世代管理部は、それぞれ通信用ｉｄとして上記α，βをプログラム実行部Ｘに通知している状態を示しており、プログラム実行部はプログラムの実行が完了した時点で世代管理部への処理の完了を通知する。
【００４７】
本実施例においては、エクステントを管理するため上記制御表に新たに図１６に示すようにエクステントの管理情報を加える。
図１６の解放エクステント情報は、同図に示すように解放可能となったエクステントと、その使用者名および通知用ｉｄを管理しており、プログラム実行部（クライアント）からプログラム実行完了の通知（ｉｄ）が到着した場合に、世代管理部（サーバ）はファイル・システムのファイル・サイズの縮退関数を使用してエクステントの解放を行う。
【００４８】
ところで、上記した仕組みを実現することにより、「運用中のロードモジュール・ライブラリのファイル・サイズの縮退」は可能となるが、これだけではソフトウェアの活性保守を実現することはできない。
すなわち、次の(b) に示す条件でのサブシステム（サーバ）の異常に対して処理ができなくなるためである。
(b) ロードモジュール・ライブラリのファイル・サイズの縮退処理から、プログラムの実行完了通知がなされるまでの間、世代管理部（サーバ）もしくはサーバを含むプロセッサが異常を起こした場合に、世代管理部内の管理情報が失われ、エクステントの解放が行えなくなる可能性がある。
【００４９】
そこで、本実施例においては、図１７に示すように、下記の機構を設け上記問題を防止している。
▲１▼  異常発生後に、フォールト・トレランス機構（耐故障性機構）を使用し、現用サーバを待機サーバに切り換える機構。
▲２▼  切り換えたサーバ（新現用サーバ）上に世代の管理情報を復元する機構。
▲３▼  上記▲２▼と同様にエクステント情報を復元する機構。
【００５０】
図１７において、２０はプログラム実行部（クライアント）、３１は現用サーバ（世代管理部）、３２は待機サーバ（世代管理部）、４０は共用メモリである。
同図において、クライアント（プログラム実行部）２０が処理要求を出すと（同図の▲１▼）、現用サーバの世代管理部３１は要求を実行する。
【００５１】
また、現用サーバ３１と待機サーバ３２間の共用メモリ４０による情報の「遅延引き継ぎ方式」により、現用サーバ３１の世代管理部内で管理している制御表のエッセンス情報（制御表を再構築するに必要な最低限の情報）が共用メモリ４０に採取され（同図の▲２▼）、現用サーバ３１に異常が発生すると（同図の▲３▼）、待機サーバ３２の世代管理部が制御表を復元し（同図の▲５▼）、クライアントの要求を再実行する。
（４）システムの構成例
本発明においては、上記（１）（２）（３）で説明した機構により、運用中のロードモジュール・ライブラリの動作を保証しつつ、世代付きロードモジュール・ライブラリ内のフラグメンテーションを統括し、ファイル・サイズの縮退の実現を図っており、次に上記機構を用いたシステムの構成例について説明する。
【００５２】
図１８は上記機構を用いたシステムの構成例を示す図である。
同図において、(u) はＣＰＵ、メモリ等から構成される処理装置、(S) は磁気ディスク装置などの外部記憶装置であり、外部記憶装置(S) にはロードモジュール・ライブラリ(t) が格納されている。(q) は共用メモリであり、後述するように異常時、サーバの引き継ぎに使用されるエッセンス情報(r) が格納される。
【００５３】
処理装置(u) は、同図に示すように、ユーザプロセスが処理されるためのユーザ空間(a) と(d) と、プログラム実行部(e) と、世代の管理、フラグメンテーションの統括等の処理を行う世代管理部(f) とを具備する。また、処理装置(u) は記憶装置〔共用メモリ(q) 、外部記憶装置(S) 〕へのアクセスのためにサーバとして共用メモリアクセス部(m) と、ファイルシステム部(n) を備え、さらに、ファイルシステム部(n) はファイル・サイズ縮退装置(o) とファイル・アクセス装置(p) とを備えている。
【００５４】
そして、ユーザ空間(a) からの実行要求により、プログラム実行部(e) はユーザ空間の仮想記憶領域(b) 内にプログラム(c) のローディング（バインド）／アドレスの再配置／フェッチ処理を実施する〔同図の(1) 〕。プログラム実行部(e) はプログラムの実行要求をユーザ空間(a) から受信すると、ローディングのための世代情報の獲得及び世代の排他の獲得を世代管理部(f) に依頼する〔同図の(2) 〕。また、ユーザ空間(d) から縮退付きの世代削除要求が世代管理部(f) に依頼される。
【００５５】
世代管理部(f) は世代の管理装置(g) 、共用メモリへの情報格納装置(h) 、フラグメンテーション統括装置(i) 、解放エクステント管理装置(k) 、世代の削除装置(v) を含み、実行／削除の要求に対応する。また、世代管理部(f) はサーバの異常時に対応するため、共用メモリ(q) に格納されたエッセンス情報(r) から制御表を復元するための制御表復元装置(l) を備えている。
【００５６】
図１８のシステムにおいては、次のような手順で縮退処理が行われる。なお、以下の説明はプログラムの実行中のファイルの縮退を想定しており、最初にプログラムの実行のための処理、次にその状態での縮退処理の流れについて説明する。また、以下の説明における(1) 〜(15)は図１８に付された番号(1) 〜(15)に対応している。
〔プログラムの流れ〕
(1) ユーザ空間(a) からプログラム実行部(e) へ「実行要求」が出される。
(2) プログラム実行部(e) は世代管理部(f) の世代の管理装置(g) に対して、世代情報の獲得と世代の実行による排他の獲得を依頼する。
(3) 世代の管理装置(g) はファイルアクセス装置(p) を使用し、外部記憶装置(s) に格納されたロードモジュール・ライブラリ(t) にアクセスし、
(4) 世代の管理装置(g) は世代情報の獲得、および、排他のための制御表の作成を行う。
(5),(6) 世代の管理装置(g) は上記(4) で作成した制御表のエッセンスをまとめ、共用メモリへの情報格納装置(h) を使用して共用メモリ(q) 内にエッセンス情報(r) を書き込む。
(7) 世代の管理装置(g) は上記(5),(6) の処理の終了後、プログラム実行部(e) に情報を返却する。
(8) プログラム実行部(e) はユーザ空間(a) の仮想記憶領域(b) 内にプログラム(c) をローディングする。
〔縮退付きの世代削除要求〕
(10)ユーザ空間(d) から世代管理部(f) の世代の削除装置(v) に世代の削除および削除後のファイル縮退の要求を出す。
(11)世代の削除装置(v) は世代の管理装置(g) に世代の排他の確認を行う。
(12)世代の削除を実施できる場合には、世代の削除装置(v) はファイルアクセス装置(p) を使用してロードモジュール・ライブラリ(t) を読み込み、世代の削除を実施する。
(13)世代の削除装置(v) は世代の削除後、フラグメンテーション統括装置(i) にフラグメンテーションをファイルの後方に統括することを依頼する。
(14)フラグメンテーション統括装置(i) はフラグメンテーションの統括後、そのエクステントを解放するように解放エクステント管理装置(k) に依頼する。
(15)解放エクステント装置(k) は登録された情報を共用メモリへの書き込み装置(h) を使用して共用メモリ(q) に登録する。
【００５７】
なお、ファイル・サイズの縮退機能は世代の削除機能のオプションとしてユーザが指定するようにしたり、あるいは、世代の削除時に無条件動作させることができる。オプションとしてユーザに指定してもらう場合には、例えば、次のように世代の削除コマンドに[-c]オプションを追加し、[-c]が指定されたとき、縮退が実施されるようにすることができる。
【００５８】
$verrm -c /usr/lmLib+1
なお、上記コマンドにおいて、[$] はプロンプト、[verrm  /usr/lmLib+1] はロードモジュール・ライブラリ[usr/lmLib] のバージョン１を削除することを意味し、[-c]オプションを指定したとき、世代の削除後に縮退が実施される。
【００５９】
【発明の効果】
以上説明したように本発明においては次の効果を得ることができ、世代管理（差分管理）を実現する上で生じる媒体の使用容量の増大を抑止することができる。
(1) 差分管理を実現することにより生ずるロードモジュール・ライブラリ内のフラグメンテーションを統括し、ファイル・サイズの縮退を図ることが可能となる。
(2) 別の媒体（作業ファイル）を用いることなく安全にファイル・サイズの縮退を実施することができる。
(3) 業務の連続運転（ソフト活性保守）に支障を与えることなくファイル・サイズの縮退を図ることができる。
(4) 世代管理機構を含むシステムがダウンしても、管理情報が失われることなく処理を継続することができ、業務の連続運転（ソフト活性保守）に支障を与えることがない。
【図面の簡単な説明】
【図１】本発明の原理図である。
【図２】差分管理によるフラグメンテーションの分散を説明する図である。
【図３】本発明のフラグメンテーションの統括の概念を説明する図である。
【図４】ロードモジュール・ライブラリの構造と格納状態を示す図である。
【図５】基本情報と各世代の情報の媒体上における格納状態を示す図である。
【図６】図５において第３世代を削除した状態を示す図である。
【図７】２世代を構成するブロックの媒体上の相対位置を示す図である。
【図８】２世代を構成するブロックの媒体上の相対位置を示す図である。
【図９】図６においてフラグメンテーションを統括した状態を示す図である。
【図１０】アトミック・アクションを実現する機構を説明する図である。
【図１１】運用中におけるファイル・サイズの縮退を説明する図である。
【図１２】運用中におけるファイル・サイズの縮退を説明する図である。
【図１３】運用中におけるファイル・サイズの縮退を説明する図である。
【図１４】世代管理部（サーバ）とプログラム実行の流れを説明する図である。
【図１５】世代管理部で管理している情報（制御表）の構造を示す図である。
【図１６】エクステントの管理情報を加えた制御表の構造を示す図である。
【図１７】世代管理部（サーバ）の異常に対処する機構を説明する図である。
【図１８】本発明の実施例のシステム構成例を示す図である。
【図１９】世代付きロードモジュール・ライブラリの差分管理を説明する図である。
【図２０】世代付きロードモジュール・ライブラリの差分管理を説明する図である。
【図２１】世代付きロードモジュール・ライブラリの差分管理を説明する図である。
【図２２】エクステントの追加によるファイル・サイズの拡張を説明する図である。
【符号の説明】
１              世代管理機構（現用サーバ）
２              媒体
３              共用メモリ
４              補助的世代管理機構（待機サーバ）
１１〜１３      第１世代ないし第３世代のロードモジュール・ライブラリ
１１ａ〜１３ａ  ブロックの媒体上ファイルの相対位置を示す情報
１４            ロードモジュール・ライブラリのファイル
２０            プログラム実行部（クライアント）
３０            世代管理部（サーバ）
３１            現用サーバ（世代管理部）
３２            待機サーバ（世代管理部）
４０            共用メモリ
(a) ，(d)       ユーザ空間
(b)             仮想記憶領域
(c)             プログラム
(e)             プログラム実行部
(f)             世代管理部
(g)             世代の管理装置
(h)             共用メモリへの情報格納装置
(i)             フラグメンテーション統括装置
(k)             解放エクステント管理装置
(l)             制御表復元装置
(m)             共用メモリアクセス部
(n)             ファイルシステム部
(o)             ファイル・サイズ縮退装置
(p)             ファイル・アクセス装置
(q)             共用メモリ
(r)             エッセンス情報
(S)             外部記憶装置
(t)             ロードモジュール・ライブラリ
(u)             処理装置
(v)             世代の削除装置
【図１】
0003664510.tif 000002
【図２】
0003664510.tif 000003
【図３】
0003664510.tif 000004
【図４】
0003664510.tif 000005
【図５】
0003664510.tif 000006
【図６】
0003664510.tif 000007
【図７】
0003664510.tif 000008
【図８】
0003664510.tif 000009
【図９】
0003664510.tif 000010
【図１０】
0003664510.tif 000011
【図１１】
0003664510.tif 000012
【図１２】
0003664510.tif 000013
【図１３】
0003664510.tif 000014
【図１４】
0003664510.tif 000015
【図１５】
0003664510.tif 000016
【図１６】
0003664510.tif 000017
【図１７】
0003664510.tif 000018
【図１８】
0003664510.tif 000019
【図１９】
0003664510.tif 000020
【図２０】
0003664510.tif 000021
【図２１】
0003664510.tif 000022
【図２２】
0003664510.tif 000023