説明

仮想記憶管理装置、仮想記憶管理方法および仮想記憶管理プログラム

【課題】システムを停止させずに、動的リンク制御を円滑に行う。
【解決手段】セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置1であって、副LMに動的リンクを要求する主LMを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主LM実行部2と、主LMが動的リンクを要求した場合に、一つの領域に副LMを割り当て可能な空きセグメントが存在するか否かを判定する判定部31と、上記一つの領域に副LMを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、上記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから動的リンクを実行する動的リンク実行部32と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想記憶管理装置、仮想記憶管理方法および仮想記憶管理プログラムに関する。
【背景技術】
【0002】
従来、セグメンテーション方式の仮想記憶管理システムでは、主ロードモジュール(以下、「主LM」という。)の仮想記憶空間内にある空きセグメントに、副ロードモジュール(以下、「副LM」という。)を割り当てることで、動的リンク制御を行っている(例えば、下記特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平1−98043号公報
【0004】
近年、24時間365日稼動のシステムが増えてきており、システムの稼働/停止をなるべく行わないことがユーザニーズの傾向となっている。しかしながら、上述した従来の動的リンク制御方法では、主LMの仮想記憶空間内における空きセグメントが不足すると、副LMを割り当てることができなくなる。この場合、主LMや副LMの変更作業等が完了するまでシステムを停止させなければならず、その間、業務が停滞してしまう。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、上述した課題を解決するためになされたものであり、システムを停止させずに、動的リンク制御を円滑に行うことができる仮想記憶管理装置、仮想記憶管理方法および仮想記憶管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の仮想記憶管理装置は、セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行部と、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定部と、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行部と、を備える。
【0007】
本発明の仮想記憶管理方法は、セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置を制御する仮想記憶管理方法であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行ステップと、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定ステップと、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行ステップと、を含む。
【0008】
本発明の仮想記憶管理プログラムは、上記仮想記憶管理方法に含まれる各ステップをコンピュータに実行させる。
【発明の効果】
【0009】
本発明によれば、システムを停止させずに、動的リンク制御を円滑に行うことができる。
【図面の簡単な説明】
【0010】
【図1】実施形態における仮想記憶管理装置の構成を例示するブロック図である。
【図2】実施形態における仮想記憶管理装置の機能構成を例示するブロック図である。
【図3】主LMのロード要求を受信した場合の動作を説明するためのフローチャートである。
【図4】副LMの動的リンク要求を受信した場合の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して、本発明に係る仮想記憶管理装置、仮想記憶管理方法および仮想記憶管理プログラムの好適な実施形態について説明する。本発明に係る仮想記憶管理装置は、セグメンテーション方式の仮想記憶管理を行うコンピュータ装置である。
【0012】
まず、図1を参照して、実施形態における仮想記憶管理装置の構成について説明する。仮想記憶管理装置1は、物理的には、例えば、CPU(Central Processing Unit)やメモリを含むコンピュータ5と、二次記憶装置6、7とを含んで構成される。メモリには、例えば、CPUで処理されるプログラムやデータを記憶するROM(Read Only Memory)や、主として制御処理のための各種作業領域として使用されるRAM(Random Access Memory)等が含まれる。二次記憶装置6は、主LMを格納し、二次記憶装置7は、副LMを格納する。主LMは、副LMに動的リンクを要求するプログラムであり、副LMは、主LMから動的リンクが要求されるプログラムである。これらの要素は、互いにバスを介して接続されている。CPUが、ROMに記憶されたプログラムを実行し、RAMに展開されたデータを処理することで、後述する仮想記憶管理装置1における各種機能を実現することができる。
【0013】
コンピュータ5は、システム全体の仮想記憶空間51と、主LMによるプロセスごとの仮想記憶空間52とを形成する。各仮想記憶空間51、52は、システム領域55と、プロセス群領域56と、プロセス領域57とにそれぞれ区分される。システム領域55は、各仮想記憶空間51、52に共通して割り当てられるモジュール(例えばカーネルモジュール)のセグメントを格納する領域である。プロセス群領域56は、複数の仮想記憶空間52に共通して割り当てられる主LMやその主LMに呼び出される副LMのセグメントを格納する領域である。プロセス領域57は、単一の仮想記憶空間52に割り当てられる主LMやその主LMに呼び出される副LMのセグメントを格納する領域である。
【0014】
図2を参照して、実施形態における仮想記憶管理装置の機能構成について説明する。仮想記憶管理装置1は、例えば、主LM実行部2と副LM実行部3とを有する。以下に、各部の機能について説明する。
【0015】
主LM実行部2は、主LMのロード要求を受信した場合に、主LMをローディングし、仮想記憶空間52のうち、プロセス群領域56またはプロセス領域57のいずれかの領域内に、主LMを割り当てて実行する。主LMのロード要求は、例えば、オペレータの操作指示に従って発行される。
【0016】
主LM実行部2は、マップ生成部21と、仮想記憶空間割当部22と、セグメント読込部23とを含む。
【0017】
マップ生成部21は、システムの仮想記憶空間マップに従って、主LMのプロセスごとに仮想記憶空間マップを生成する。
【0018】
仮想記憶空間割当部22は、使用するセグメントに関する情報を主LMから取得し、マップ生成部21により生成された仮想記憶空間マップに従って、主LMが使用するセグメントを仮想記憶空間52に割り当てる。
【0019】
セグメント読込部23は、二次記憶装置6から主LMのセグメントを読み込む。
【0020】
副LM実行部3は、主LMから動的リンク要求を受信した場合に、使用するセグメントに関する情報を副LMから取得し、主LMが割り当てられているプロセス群領域56またはプロセス領域57と同一の領域(以下、「主LMと同一の領域」という。)内に、副LMを割り当てて動的リンクを実行する。
【0021】
副LM実行部3は、判定部31と、動的リンク実行部32と、アボート部33と、通知部34とを含む。さらに、動的リンク実行部32は、マップ再生成部321と、仮想記憶空間割当部322と、セグメント読込部323とを含む。
【0022】
判定部31は、使用するセグメントに関する情報を副LMから取得し、主LMと同一の領域内に、副LMを割り当て可能な空きセグメントが存在するか否かを判定する。
【0023】
判定部31は、主LMと同一の領域内に副LMを割り当て可能な空きセグメントが存在しない場合に、さらに、仮想記憶空間52内の領域であって主LMと同一の領域以外の領域(以下、「主LMと異なる領域」という。)内に、副LMを割り当て可能な空きセグメントが存在するか否かを判定する。
【0024】
マップ再生成部321は、主LMと異なる領域内に副LMを割り当て可能な空きセグメントが存在する場合に、仮想記憶空間マップを再生成する。具体的に、マップ再生成部321は、空きセグメントが存在する主LMと異なる領域を縮小し、主LMと同一の領域を拡大させるように、それぞれの領域に対応する仮想記憶空間のマッピングを変更することで、仮想記憶空間マップを再生成する。マッピングを変更する際には、例えば、図1に示すように、仮想空間51、52の各領域55、56、57間の境界を移動させるようにして変更することができる。
【0025】
仮想記憶空間割当部322は、主LMと同一の領域内に、副LMが使用するセグメントを割り当てる。
【0026】
セグメント読込部323は、二次記憶装置7から副LMのセグメントを読み込む。
【0027】
アボート部33は、全ての仮想記憶空間52上に副LMを割り当て可能な空きセグメントが存在しない場合に、プログラムをアボートする。
【0028】
通知部34は、仮想記憶空間マップが再生成された場合に、マッピングを変更して動的リンクを実行する旨をオペレータに通知する。オペレータへの通知は、例えば、メッセージの送信や、警告音による報知等で行うことができる。
【0029】
次に、実施形態における仮想記憶管理装置の動作について説明する。図3を参照して、主LMのロード要求を受信した場合の動作について説明する。
【0030】
最初に、主LMのロード要求を受信した場合に、マップ生成部21は、システムの仮想記憶空間マップに従って、主LMのプロセスごとの仮想記憶空間マップを生成する(ステップS101)。
【0031】
続いて、仮想記憶空間割当部22は、使用するセグメントに関する情報を主LMから取得し、上記ステップS101で生成した仮想記憶空間マップに従って、主LMが使用するセグメントを仮想記憶空間52に割り当てる(ステップS102)。
【0032】
続いて、セグメント読込部23は、二次記憶装置6から主LMのセグメントを読み込む(ステップS103)。そして、本動作を終了する。
【0033】
図4を参照して、副LMの動的リンク要求を受信した場合の動作について説明する。
【0034】
最初に、動的リンク要求を主LMから受信した場合に、判定部31は、使用するセグメントに関する情報を副LMから取得し(ステップS201)、主LMと同一の領域内に、副LMを割り当て可能な空きセグメントが存在するか否かを判定する(ステップS202)。
【0035】
この判定がYESである場合(ステップS202;YES)に、仮想記憶空間割当部322は、主LMと同一の領域内に、副LMが使用するセグメントを割り当てる(ステップS206)。
【0036】
続いて、セグメント読込部323は、二次記憶装置7から副LMのセグメントを読み込む(ステップS207)。そして、本動作を終了する。
【0037】
一方、上記ステップS202の判定において、主LMと同一の領域内に、副LMを割り当て可能な空きセグメントが存在しないと判定した場合(ステップS202;NO)に、判定部31は、主LMと異なる領域内に、副LMを割り当て可能な空きセグメントが存在するか否かを判定する(ステップS203)。
【0038】
この判定がYESである場合(ステップS203;YES)に、マップ再生成部321は、空きセグメントを有する主LMと異なる領域を縮小し、主LMと同一の領域を拡大させるように、それぞれの領域に対応する仮想記憶空間のマッピングを変更することで、仮想記憶空間マップを再生成する(ステップS204)。
【0039】
続いて、通知部34は、マッピングを変更して動的リンクを実行する旨をオペレータに通知する(ステップS205)。
【0040】
続いて、仮想記憶空間割当部322は、主LMと同一の領域内に、副LMが使用するセグメントを割り当てる(ステップS206)。
【0041】
続いて、セグメント読込部323は、二次記憶装置7から副LMのセグメントを読み込む(ステップS207)。そして、本動作を終了する。
【0042】
一方、上記ステップS203の判定において、主LMと異なる領域内に副LMを割り当て可能な空きセグメントが存在しないと判定された場合(ステップS203;NO)に、アボート部33は、プログラムをアボートする(ステップS208)。そして、本動作を終了する。
【0043】
上述したように、実施形態における仮想記憶管理装置1によれば、主LMが動的リンクを要求した場合に、主LMと同一の領域に副LMを割り当て可能な空きセグメントが存在するか否かを判定することができ、主LMと同一の領域に副LMを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する主LMと異なる領域を縮小し、主LMと同一の領域を拡大させるように仮想記憶空間のマッピングを変更してから動的リンクを実行することができる。
【0044】
これにより、動的リンクを実行するときに、主LMと同一の領域内に動的リンクに必要な空きセグメントが存在しない場合であっても、仮想記憶空間上に動的リンクに必要な空きセグメントが存在すれば、動的リンクを実行することができる。それゆえに、システムを停止させずに、動的リンク制御を円滑に行うことが可能となる。
【0045】
また、上述した実施形態における仮想記憶管理装置1によれば、主LMと同一の領域に副LMを割り当て可能な空きセグメントが存在しない場合に、マッピングを変更してから動的リンクを実行することをオペレータに通知することができる。
【0046】
これにより、主LMに対応する仮想記憶空間内に空きセグメントを生成することができなくなる前に、対策を講じることが可能となる。
【0047】
[変形例]
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【0048】
例えば、上述した実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【0049】
(付記1) セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行部と、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定部と、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行部と、を備えることを特徴とする仮想記憶管理装置。
【0050】
(付記2) 前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、前記マッピングを変更してから前記動的リンクを実行することを通知する通知部を、さらに備えることを特徴とする付記1記載の仮想記憶管理装置。
【0051】
(付記3) セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置を制御する仮想記憶管理方法であって、副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行ステップと、前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定ステップと、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行ステップと、を含むことを特徴とする仮想記憶管理方法。
【0052】
(付記4) 付記3に記載の各ステップをコンピュータに実行させるための仮想記憶管理プログラム。
【符号の説明】
【0053】
1…仮想記憶管理装置、2…主LM実行部、3…副LM実行部、5…コンピュータ、6、7…二次記憶装置、21…マップ生成部、22…仮想記憶空間割当部、23…セグメント読込部、31…判定部、32…動的リンク実行部、33…アボート部、34…通知部、51、52…仮想記憶空間、55…システム領域、56…プロセス群領域、57…プロセス領域、321…マップ再生成部、322…仮想記憶空間割当部、323…セグメント読込部。

【特許請求の範囲】
【請求項1】
セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置であって、
副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行部と、
前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定部と、
前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行部と、
を備えることを特徴とする仮想記憶管理装置。
【請求項2】
前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、前記マッピングを変更してから前記動的リンクを実行することを通知する通知部を、
さらに備えることを特徴とする請求項1記載の仮想記憶管理装置。
【請求項3】
セグメンテーション方式の仮想記憶管理を行う仮想記憶管理装置を制御する仮想記憶管理方法であって、
副ロードモジュールに動的リンクを要求する主ロードモジュールを、複数の領域に区分された仮想記憶空間のうちの一つの領域の空きセグメントに割り当てて実行する主ロードモジュール実行ステップと、
前記主ロードモジュールが前記動的リンクを要求した場合に、前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在するか否かを判定する判定ステップと、
前記一つの領域に前記副ロードモジュールを割り当て可能な空きセグメントが存在しない場合に、空きセグメントを有する他の領域を縮小し、前記一つの領域を拡大させるように仮想記憶空間のマッピングを変更してから前記動的リンクを実行する動的リンク実行ステップと、
を含むことを特徴とする仮想記憶管理方法。
【請求項4】
請求項3に記載の各ステップをコンピュータに実行させるための仮想記憶管理プログラム。

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図1】
image rotate