(57)【特許請求の範囲】
【請求項１】
セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置であって、
副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行部と、
前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定部と、
前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行部と、
を備えることを特徴とする仮想記憶管理装置。
【請求項２】
前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、前記マッピングを変更してから前記動的リンクを実行することを通知する通知部を、
さらに備えることを特徴とする請求項１記載の仮想記憶管理装置。
【請求項３】
セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置を制御する仮想記憶管理方法であって、
副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行ステップと、
前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定ステップと、
前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行ステップと、
を含むことを特徴とする仮想記憶管理方法。
【請求項４】
請求項３に記載の各ステップをコンピュータに実行させるための仮想記憶管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想記憶管理装置、仮想記憶管理方法および仮想記憶管理プログラムに関する。
【背景技術】
【０００２】
従来、セグメンテーション方式の仮想記憶管理システムでは、主ロードモジュール（以下、「主ＬＭ」という。）の仮想記憶空間内にある空きセグメントに、副ロードモジュール（以下、「副ＬＭ」という。）を割り当てることで、動的リンク制御を行っている（例えば、下記特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１−９８０４３号公報
【０００４】
近年、２４時間３６５日稼動のシステムが増えてきており、システムの稼働／停止をなるべく行わないことがユーザニーズの傾向となっている。しかしながら、上述した従来の動的リンク制御方法では、主ＬＭの仮想記憶空間内における空きセグメントが不足すると、副ＬＭを割り当てることができなくなる。この場合、主ＬＭや副ＬＭの変更作業等が完了するまでシステムを停止させなければならず、その間、業務が停滞してしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、上述した課題を解決するためになされたものであり、システムを停止させずに、動的リンク制御を円滑に行うことができる仮想記憶管理装置、仮想記憶管理方法および仮想記憶管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の仮想記憶管理装置は、セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行部と、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定部と、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行部と、を備える。
【０００７】
本発明の仮想記憶管理方法は、セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置を制御する仮想記憶管理方法であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行ステップと、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定ステップと、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行ステップと、を含む。
【０００８】
本発明の仮想記憶管理プログラムは、上記仮想記憶管理方法に含まれる各ステップをコンピュータに実行させる。
【発明の効果】
【０００９】
本発明によれば、システムを停止させずに、動的リンク制御を円滑に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態における仮想記憶管理装置の構成を例示するブロック図である。
【図２】実施形態における仮想記憶管理装置の機能構成を例示するブロック図である。
【図３】主ＬＭのロード要求を受信した場合の動作を説明するためのフローチャートである。
【図４】副ＬＭの動的リンク要求を受信した場合の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本発明に係る仮想記憶管理装置、仮想記憶管理方法および仮想記憶管理プログラムの好適な実施形態について説明する。本発明に係る仮想記憶管理装置は、セグメンテーション方式の仮想記憶管理を行うコンピュータ装置である。
【００１２】
まず、図１を参照して、実施形態における仮想記憶管理装置の構成について説明する。仮想記憶管理装置１は、物理的には、例えば、ＣＰＵ（Central Processing Unit）やメモリを含むコンピュータ５と、二次記憶装置６、７とを含んで構成される。メモリには、例えば、ＣＰＵで処理されるプログラムやデータを記憶するＲＯＭ（Read Only Memory）や、主として制御処理のための各種作業領域として使用されるＲＡＭ（Random Access Memory）等が含まれる。二次記憶装置６は、主ＬＭを格納し、二次記憶装置７は、副ＬＭを格納する。主ＬＭは、副ＬＭに動的リンクを要求するプログラムであり、副ＬＭは、主ＬＭから動的リンクが要求されるプログラムである。これらの要素は、互いにバスを介して接続されている。ＣＰＵが、ＲＯＭに記憶されたプログラムを実行し、ＲＡＭに展開されたデータを処理することで、後述する仮想記憶管理装置１における各種機能を実現することができる。
【００１３】
コンピュータ５は、システム全体の仮想記憶空間５１と、主ＬＭによるプロセスごとの仮想記憶空間５２とを形成する。各仮想記憶空間５１、５２は、システム領域５５と、プロセス群領域５６と、プロセス領域５７とにそれぞれ区分される。システム領域５５は、各仮想記憶空間５１、５２に共通して割り当てられるモジュール（例えばカーネルモジュール）のセグメントを格納する領域である。プロセス群領域５６は、複数の仮想記憶空間５２に共通して割り当てられる主ＬＭやその主ＬＭに呼び出される副ＬＭのセグメントを格納する領域である。プロセス領域５７は、単一の仮想記憶空間５２に割り当てられる主ＬＭやその主ＬＭに呼び出される副ＬＭのセグメントを格納する領域である。
【００１４】
図２を参照して、実施形態における仮想記憶管理装置の機能構成について説明する。仮想記憶管理装置１は、例えば、主ＬＭ実行部２と副ＬＭ実行部３とを有する。以下に、各部の機能について説明する。
【００１５】
主ＬＭ実行部２は、主ＬＭのロード要求を受信した場合に、主ＬＭをローディングし、仮想記憶空間５２のうち、プロセス群領域５６またはプロセス領域５７のいずれかの領域内に、主ＬＭを割り当てて実行する。主ＬＭのロード要求は、例えば、オペレータの操作指示に従って発行される。
【００１６】
主ＬＭ実行部２は、マップ生成部２１と、仮想記憶空間割当部２２と、セグメント読込部２３とを含む。
【００１７】
マップ生成部２１は、システムの仮想記憶空間マップに従って、主ＬＭのプロセスごとに仮想記憶空間マップを生成する。
【００１８】
仮想記憶空間割当部２２は、使用するセグメントに関する情報を主ＬＭから取得し、マップ生成部２１により生成された仮想記憶空間マップに従って、主ＬＭが使用するセグメントを仮想記憶空間５２に割り当てる。
【００１９】
セグメント読込部２３は、二次記憶装置６から主ＬＭのセグメントを読み込む。
【００２０】
副ＬＭ実行部３は、主ＬＭから動的リンク要求を受信した場合に、使用するセグメントに関する情報を副ＬＭから取得し、主ＬＭが割り当てられているプロセス群領域５６またはプロセス領域５７と同一の領域（以下、「主ＬＭと同一の領域」という。）内に、副ＬＭを割り当てて動的リンクを実行する。
【００２１】
副ＬＭ実行部３は、判定部３１と、動的リンク実行部３２と、アボート部３３と、通知部３４とを含む。さらに、動的リンク実行部３２は、マップ再生成部３２１と、仮想記憶空間割当部３２２と、セグメント読込部３２３とを含む。
【００２２】
判定部３１は、使用するセグメントに関する情報を副ＬＭから取得し、主ＬＭと同一の領域内に、副ＬＭを割り当て可能な空きセグメントが存在するか否かを判定する。
【００２３】
判定部３１は、主ＬＭと同一の領域内に副ＬＭを割り当て可能な空きセグメントが存在しない場合に、さらに、仮想記憶空間５２内の領域であって主ＬＭと同一の領域以外の領域（以下、「主ＬＭと異なる領域」という。）内に、副ＬＭを割り当て可能な空きセグメントが存在するか否かを判定する。
【００２４】
マップ再生成部３２１は、主ＬＭと異なる領域内に副ＬＭを割り当て可能な空きセグメントが存在する場合に、仮想記憶空間マップを再生成する。具体的に、マップ再生成部３２１は、空きセグメントが存在する主ＬＭと異なる領域を縮小し、主ＬＭと同一の領域を拡大させるように、それぞれの領域に対応する仮想記憶空間のマッピングを変更することで、仮想記憶空間マップを再生成する。マッピングを変更する際には、例えば、図１に示すように、仮想空間５１、５２の各領域５５、５６、５７間の境界を移動させるようにして変更することができる。
【００２５】
仮想記憶空間割当部３２２は、主ＬＭと同一の領域内に、副ＬＭが使用するセグメントを割り当てる。
【００２６】
セグメント読込部３２３は、二次記憶装置７から副ＬＭのセグメントを読み込む。
【００２７】
アボート部３３は、全ての仮想記憶空間５２上に副ＬＭを割り当て可能な空きセグメントが存在しない場合に、プログラムをアボートする。
【００２８】
通知部３４は、仮想記憶空間マップが再生成された場合に、マッピングを変更して動的リンクを実行する旨をオペレータに通知する。オペレータへの通知は、例えば、メッセージの送信や、警告音による報知等で行うことができる。
【００２９】
次に、実施形態における仮想記憶管理装置の動作について説明する。図３を参照して、主ＬＭのロード要求を受信した場合の動作について説明する。
【００３０】
最初に、主ＬＭのロード要求を受信した場合に、マップ生成部２１は、システムの仮想記憶空間マップに従って、主ＬＭのプロセスごとの仮想記憶空間マップを生成する（ステップＳ１０１）。
【００３１】
続いて、仮想記憶空間割当部２２は、使用するセグメントに関する情報を主ＬＭから取得し、上記ステップＳ１０１で生成した仮想記憶空間マップに従って、主ＬＭが使用するセグメントを仮想記憶空間５２に割り当てる（ステップＳ１０２）。
【００３２】
続いて、セグメント読込部２３は、二次記憶装置６から主ＬＭのセグメントを読み込む（ステップＳ１０３）。そして、本動作を終了する。
【００３３】
図４を参照して、副ＬＭの動的リンク要求を受信した場合の動作について説明する。
【００３４】
最初に、動的リンク要求を主ＬＭから受信した場合に、判定部３１は、使用するセグメントに関する情報を副ＬＭから取得し（ステップＳ２０１）、主ＬＭと同一の領域内に、副ＬＭを割り当て可能な空きセグメントが存在するか否かを判定する（ステップＳ２０２）。
【００３５】
この判定がＹＥＳである場合（ステップＳ２０２；ＹＥＳ）に、仮想記憶空間割当部３２２は、主ＬＭと同一の領域内に、副ＬＭが使用するセグメントを割り当てる（ステップＳ２０６）。
【００３６】
続いて、セグメント読込部３２３は、二次記憶装置７から副ＬＭのセグメントを読み込む（ステップＳ２０７）。そして、本動作を終了する。
【００３７】
一方、上記ステップＳ２０２の判定において、主ＬＭと同一の領域内に、副ＬＭを割り当て可能な空きセグメントが存在しないと判定した場合（ステップＳ２０２；ＮＯ）に、判定部３１は、主ＬＭと異なる領域内に、副ＬＭを割り当て可能な空きセグメントが存在するか否かを判定する（ステップＳ２０３）。
【００３８】
この判定がＹＥＳである場合（ステップＳ２０３；ＹＥＳ）に、マップ再生成部３２１は、空きセグメントを有する主ＬＭと異なる領域を縮小し、主ＬＭと同一の領域を拡大させるように、それぞれの領域に対応する仮想記憶空間のマッピングを変更することで、仮想記憶空間マップを再生成する（ステップＳ２０４）。
【００３９】
続いて、通知部３４は、マッピングを変更して動的リンクを実行する旨をオペレータに通知する（ステップＳ２０５）。
【００４０】
続いて、仮想記憶空間割当部３２２は、主ＬＭと同一の領域内に、副ＬＭが使用するセグメントを割り当てる（ステップＳ２０６）。
【００４１】
続いて、セグメント読込部３２３は、二次記憶装置７から副ＬＭのセグメントを読み込む（ステップＳ２０７）。そして、本動作を終了する。
【００４２】
一方、上記ステップＳ２０３の判定において、主ＬＭと異なる領域内に副ＬＭを割り当て可能な空きセグメントが存在しないと判定された場合（ステップＳ２０３；ＮＯ）に、アボート部３３は、プログラムをアボートする（ステップＳ２０８）。そして、本動作を終了する。
【００４３】
上述したように、実施形態における仮想記憶管理装置１によれば、主ＬＭが動的リンクを要求した場合に、主ＬＭと同一の領域に副ＬＭを割り当て可能な空きセグメントが存在するか否かを判定することができ、主ＬＭと同一の領域に副ＬＭを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する主ＬＭと異なる領域を縮小し、主ＬＭと同一の領域を拡大させるように仮想記憶空間のマッピングを変更してから動的リンクを実行することができる。
【００４４】
これにより、動的リンクを実行するときに、主ＬＭと同一の領域内に動的リンクに必要な空きセグメントが存在しない場合であっても、仮想記憶空間上に動的リンクに必要な空きセグメントが存在すれば、動的リンクを実行することができる。それゆえに、システムを停止させずに、動的リンク制御を円滑に行うことが可能となる。
【００４５】
また、上述した実施形態における仮想記憶管理装置１によれば、主ＬＭと同一の領域に副ＬＭを割り当て可能な空きセグメントが存在しない場合に、マッピングを変更してから動的リンクを実行することをオペレータに通知することができる。
【００４６】
これにより、主ＬＭに対応する仮想記憶空間内に空きセグメントを生成することができなくなる前に、対策を講じることが可能となる。
【００４７】
[変形例]
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【００４８】
例えば、上述した実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【００４９】
（付記１）  セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行部と、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定部と、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行部と、を備えることを特徴とする仮想記憶管理装置。
【００５０】
（付記２）  前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、前記マッピングを変更してから前記動的リンクを実行することを通知する通知部を、さらに備えることを特徴とする付記１記載の仮想記憶管理装置。
【００５１】
（付記３）  セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置を制御する仮想記憶管理方法であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行ステップと、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定ステップと、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行ステップと、を含むことを特徴とする仮想記憶管理方法。
【００５２】
（付記４）  付記３に記載の各ステップをコンピュータに実行させるための仮想記憶管理プログラム。
【符号の説明】
【００５３】
１…仮想記憶管理装置、２…主ＬＭ実行部、３…副ＬＭ実行部、５…コンピュータ、６、７…二次記憶装置、２１…マップ生成部、２２…仮想記憶空間割当部、２３…セグメント読込部、３１…判定部、３２…動的リンク実行部、３３…アボート部、３４…通知部、５１、５２…仮想記憶空間、５５…システム領域、５６…プロセス群領域、５７…プロセス領域、３２１…マップ再生成部、３２２…仮想記憶空間割当部、３２３…セグメント読込部。
【図２】
0005561147.tif 000002
【図３】
0005561147.tif 000003
【図４】
0005561147.tif 000004
【図１】
0005561147.tif 000005