本発明の実施の形態を詳細に説明するのに先立って、その概要を説明する。
本発明は、実計算機のメモリ領域に対する仮想計算機の権限として、管理権と利用権という2種類の権限を創設する。
利用権はメモリ領域に対してアクセスすることができる権利であり、或るメモリ領域の利用権を持つ仮想計算機は、そのメモリ領域に対してアクセスすることが許される。但し、当該メモリ領域の管理権を他の仮想計算機が持っている場合、当該他の仮想計算機が当該メモリ領域に対してアクセスした時点で、利用権を手放さなければならない。これに対して、管理権は利用権よりも強い権利であり、管理権を持つ仮想計算機は、何時でも利用権を獲得してメモリ領域に対してアクセスすることができる。管理権を持つ仮想計算機が利用権を獲得するために特別な手続きは不要であり、メモリ領域を単にアクセスするだけで良い。
本発明は、メモリ領域に対する権限である管理権と利用権とをそれぞれ独立に移譲することによって、メモリ領域の再割り当てを実現する。具体的には、或る仮想計算機Aに割り当てられているメモリ領域Xを、別の仮想計算機Bに割り当てる場合、メモリ領域Xの管理権および利用権を一度に移譲するのではなく、まず管理権だけを移譲し、利用権は仮想計算機Bが実際にメモリ領域Xをアクセスした時点で移譲する。利用権の移譲に際しては、仮想計算機Aがメモリ領域Xにデータを書き込んでいればページアウト/スワップ処理が必要となって時間がかかるが、管理権だけの移譲に際してはそのような処理は不要である。このため、管理権の移譲は高速に行える。そして、管理権を持つ仮想計算機は、何時でも利用権を獲得してメモリ領域に対してアクセスすることができるので、実質的にメモリ領域の割り当てを受けた状態と同等である。これによって、メモリ再構成処理に要する時間を短縮することができる。
仮想計算機Bがメモリ領域Xを最初にアクセスするまでの間、メモリ領域Xの利用権は仮想計算機Aが保有しているため、仮想計算機Aはなおも継続してメモリ領域Xをアクセスすることが許される。ここで、メモリ領域Xの管理権を得た仮想計算機Bがメモリ領域Xを一度もアクセスすることなくメモリ領域Xの管理権を別の仮想計算機Cに移譲した場合、メモリ領域Xの利用権をどの仮想計算機に設定すべきかについて、以下の2通りの方式が考えられる。
第1の方式は、メモリ領域Xを現在使用している仮想計算機Aに以後も利用権を残して利用を継続させる方式である。この場合、管理権を放棄した仮想計算機Bからメモリ領域Xへのアクセスが生じるのを防ぐために、仮想計算機Bの管理下からメモリ領域Xが解放される。この方式は第1の実施の形態で採用している。
第2の方式は、仮想計算機Bがメモリ領域Xの管理権を得たのはそれを利用するためであり、たまたまメモリ領域Xを一度もアクセスしなかったのは時間的な関係によるものと考え、仮想計算機Cがメモリ領域Xをアクセスするまでの間、仮想計算機Bに利用の機会を残しておく方式である。この場合、仮想計算機Aの管理下からメモリ領域Xが解放されると共にその利用権が仮想計算機Bに移譲される。この方式については第2の実施の形態で詳述する。
ところで、第1および第2の方式の何れの方式を採用するにしても、管理権を持つ仮想計算機Cからメモリ領域Xへのアクセスが行われるのを待って、利用権を管理権を持つ仮想計算機Cに移譲する構成では、管理権を持つ仮想計算機Cがメモリ領域Xをアクセスした際にメモリ領域の解放処理が行われるためにオーバーヘッドが大きくなる。そこで、利用権を持つ仮想計算機AやBのメモリ領域Xに対するアクセスの統計値(例えば、管理権を放棄してからのメモリアクセス時間など)を採取し、統計値が所定の条件を満たした場合に、管理権を持つ仮想計算機Cからのメモリ領域Xへのアクセスを待たずに、仮想計算機AやBからメモリ領域Xを解放させると共にその利用権を剥奪しておく方法が考えられる。この方法については第3の実施の形態で詳述する。
上述したように、メモリ領域Xに対して管理権を放棄しても利用権を保有している仮想計算機AまたはBは、メモリ領域Xに対してアクセスを続けることができるが、利用権も放棄した場合には、もはやメモリ領域Xに対してアクセスすることはできない。従って、メモリ領域Xの管理権および利用権を放棄した時点で、仮想計算機AまたはBにおけるメモリ領域Xに関するメモリ情報を更新するのが基本である。しかし、メモリ領域Xを放棄した仮想計算機AまたはBは、近い将来、その利用権も放棄しなければならないため、それに備えて、一部のメモリ情報(例えばメモリ総容量)を、管理権を放棄した時点で更新しておいても良い。また、読書可能であったメモリ領域Xを読込専用領域として設定するといったようなメモリ利用形態の変更を、管理権の放棄時に行うようにしても良い。これらについては第4の実施の形態で説明する。
メモリ構成の変更要求は、オペレータ等から各仮想計算機に個別に与えるようにしても良いし、VMMなどの仮想計算機制御部を通じて各仮想計算機に与えるようにしても良い。前者の方法は第1の実施の形態で、後者の方法は第5の実施の形態で、それぞれ説明する。
次に本発明の実施の形態について図面を参考にして詳細に説明する。
『第1の実施の形態』
図5を参照すると、本発明の第1の実施の形態は、VMを構築し、複数のOSの動作を制御するVMM1100と、構築されたVM上で各々動作するOS1200-i(i=1〜n)とから構成される。
<VMM1100>
VMM1100は、実メモリ空間とマシンアドレス空間との対応関係を制御する実メモリ管理部1110と、VMのメモリ再構成を制御する実メモリ構成制御部1120とを含む。
<実メモリ管理部1110>
実メモリ管理部1110は、メモリ領域に対するメモリ再構成処理後にメモリ領域を割当られ優先権を持つOS(管理OS)を判別するための情報を管理する管理OS情報管理部1111と、メモリ再構成前に利用しており解放処理完了前で、メモリ再構成要求受付後にまだメモリ領域を利用できるOS(利用OS)を判別するための情報を管理する利用OS情報管理部1112とを含む。
今後、管理OSはメモリ領域に対して優先権をもつため「管理権を持つ」と言うことにする。管理権とは本来の保有者であるべきことを表し、必要に応じて利用しているOSへ解放を要求できる立場にあることを示す。
また、利用OSはメモリ領域に対して利用することが可能なため「利用権を持つ」と言うことにする。利用権とは、メモリを実際に利用していることを表し、アクセスしたらデータを読込、保存できることを示す。
さらに、実メモリ管理部1110は、実メモリ空間とマシンアドレス空間の対応関係(図示せず)を保有し、メモリアクセス時にアドレス変換を行う。
本発明においては、実メモリ管理部1110がメモリ管理の最小単位を決定する要素となる。実メモリ管理部1110は、ページ単位、一定ページを1ブロックとしたブロック単位、モジュール単位などの単位を最小単位としてメモリ管理を行う。
これら、メモリ空間の対応関係、管理OS情報、利用OS情報は、同時に同じ機構で記憶してもよい。
例えば、後述する実計算機システムの実施例を示す図19のように、メモリ領域の対応関係、管理OS情報、利用OS情報をテーブル10により、一括して管理することができる。
メモリ空間の対応関係は、メモリの領域を示す識別子で表現できる。例えば、アドレス値で表現することもできるし、特許文献2のようにモジュール番号で表現することもできる。
管理OS情報、利用OS情報は、OSを特定できる識別子で表現できる。例えば、マシン名、NetBIOS名、ホスト名、UUID(Universally Unique IDentifier)、GUID(Globally Unique IDentifier)、IPアドレスやMACアドレス、VMMが管理しているOSのIDやOS名などが挙げられる。
このとき、未使用や未設定の表現法としては、情報に空情報(例えば、ヌル(null))や、OS管理情報として利用しないことを前提に特定の識別子(例えば、OSのIDとして0など)を利用することができる。
メモリ空間の対応関係、利用OS情報、管理OS情報を管理する別の例としては、メモリ管理構造体などにパラメータとして付随することができる。
今後、前者のテーブル管理の例を主体にして説明を続ける。
<実メモリ構成制御部1120>
実メモリ構成制御部1120は、メモリ削減要求時に解放メモリ領域における管理権を放棄し一時接続状態を生成するメモリ解放宣言部1121と、真のメモリ解放として実メモリとの接続関係を削除するメモリ解放制御部1122と、メモリ増加要求時に管理権を保有していないメモリ領域を先行してOSにメモリ割当を行うメモリ拡張制御部1123と、メモリ領域の利用時に他の利用状況がないかを判断し、メモリ割当ての許可を判定するメモリアクセス監視部1124とを含む。
<メモリ解放宣言部1121>
メモリ解放宣言部1121は、メモリ領域の管理権放棄を制御する。
具体的には、メモリ解放宣言部1121は、メモリ解放領域探索部1231-i(i=1〜n)からメモリ削減により解放させる領域が渡されたなら、管理OS情報管理部1111を介して管理OS情報を未使用状態へ変更させる。
解放させるメモリ領域を渡す方法、すなわち、解放領域を宣言する方法としては、メッセージパッシング、システムコール(VMMとの間ではハイパーコールなどと呼ぶ)、遠隔関数呼び出し(RPC)などが挙げられる。
今後、その他の情報伝達方法としても同様の表記を用いることとする。
<メモリ解放制御部1122>
メモリ解放制御部1122は、メモリの利用権放棄を制御する。
具体的には、メモリ解放制御部1122は、メモリアクセス監視部1124からメモリ領域のメモリ解放が要求されたときに、メモリ解放部1232-i(i=1〜n)へ当該メモリ領域のメモリ解放処理を要求する。
メモリ解放制御部1122は、メモリ解放部1232-i(i=1〜n)から解放したメモリ領域を渡されたなら、利用OS情報管理部1112を介して利用OS情報を未使用状態へ変更させる。
<メモリ拡張制御部1123>
メモリ拡張制御部1123は、メモリ領域の管理権確保を制御する。
具体的には、メモリ拡張制御部1123は、メモリ拡張部1233-i(i=1〜n)により、メモリ拡張する領域の追加を要求されたなら、管理OS情報管理部1111を参照して、管理OS情報が未使用状態であるメモリ領域を探索し、適切な領域を拡張メモリ領域として決定し、当該拡張メモリ領域の管理OS情報を拡張OSの識別子に変更し、当該拡張メモリ領域を応答する。
拡張メモリ領域の選択基準として、例えば、連続未使用領域の容量を用いる方法がある。例えば、連続未使用選択領域容量が大きい領域を優先して選択する方法、連続未使用領域容量が要求メモリ容量とほぼ等しい領域を優先して選択する方法、連続未使用選択領域容量が小さい領域を優先して選択する方法などある。
連続未使用選択領域容量が大きい領域を優先して選択する方法は、割当てる際の割当て領域の数を減らすことが可能となる。
連続未使用領域容量が要求メモリ容量とほぼ等しい領域を優先して選択する方法は、割当てる際の割当て領域の数を減らす一方、より大きな連続未使用領域を残すことで、さらに後に起こるメモリ領域変更に同様の領域を割当てられる可能性を残すことができる。
連続未使用選択領域容量が小さい領域を優先して選択する方法は、連続未使用領域をできるだけ残すようにすることで、限られた範囲内でのメモリ利用を行うと同時に、後に起こるメモリ領域変更や新規OSの割当てにおいて一度に割当てられる可能性を残すことができる。
拡張メモリ領域の選択基準の別の例として、拡張OSの使用メモリ領域情報を用いる方法がある。例えば、拡張OSの使用しているメモリ領域に近い領域、すなわち、拡張OSが使用中のメモリ領域のすぐ側に続く高位アドレス領域を選択する方法である。
これは、単一OSにおけるメモリ領域の連続性を保つことが可能になる。
拡張メモリ領域の選択基準の別の例として、物理メモリモジュール構成情報を用いる方法がある。例えば、できるだけ複数のメモリモジュールから領域を選択する方法や、できるだけ同じメモリモジュールに割当てる方法がある。
できるだけ複数のメモリモジュールから領域を選択する方法は、複数のメモリモジュールと平行にアクセス可能にするため、メモリアクセス速度を向上させるような技術を用いることが可能になったり、RAID5技術のようにパリティ技術を用いることで、対故障性を向上させることが可能になったりする。
できるだけ同じメモリモジュールに割当てる方法は、あるOSが割当てられるメモリをできるだけ最小にすることができ、そのメモリモジュールが壊れたときに、動作不良を起こすOSを最小限に食い止めることを可能にできる。
また、拡張メモリ領域の選択基準の別の例として、利用OS情報を用いる方法がある。利用OS情報は、利用OS情報管理部1112を介して得ることができる。例えば、利用OSがいない領域、すなわち、管理OS情報だけでなく利用OS情報においても未使用状態であるメモリ領域を選択する方法がある。
利用OS情報においても未使用状態であるメモリ領域を選択する方法は、利用OSがメモリ領域を解放するタイミングを作るきっかけを減らすことになり、結果として、利用OSがメモリ領域を確保し続け有効利用することが可能になる。
また、前記選択基準、もしくは、前記選択方法を少なくとも2つ以上併用し、組み合わせることによって実現される選択基準、もしくは、選択方法を採用することもできる。
メモリ拡張制御部1123は、また、適切な領域を選択する際に、未使用領域が要求する拡張メモリ領域に対して不足する場合、以下のような処置をとることができる。
未使用領域が不足する際の処置の例として、メモリ拡張制御部1123は要求を受け入れることができないこととして、要求拒否として応答する。
未使用領域が不足する際の処置の例として、メモリ拡張制御部1123は要求をベストエフォート的に処理することとして、確保できた領域分だけ割当て可能だと応答する。
<メモリアクセス監視部1124>
メモリアクセス監視部1124は、メモリアクセス権の監視を行い、メモリアクセスの可否、および、メモリアクセスを可能にするためのメモリ構成変更指示、および、利用権確保を制御する。
具体的には、メモリアクセス監視部1124は、メモリアクセス制御部1220-i(i=1〜n)から実メモリ対応付けが必要なメモリアクセスが発生し、アクセスメモリ領域を渡されたなら、利用OS情報管理部1112を介して、当該アクセスメモリ領域の利用OS情報とメモリアクセスしてきたOS情報とを比較し、利用可能であるかどうか、すなわち、利用権を保有しているかを識別子が等しいかで判定する。
メモリ領域が利用可能であれば、メモリアクセス監視部1124は、当該メモリアクセス領域の対応付けを行い、メモリアクセス制御部1220-i(i=1〜n)へ応答する。
メモリ領域が利用可能でないならば、メモリアクセス監視部1124は、管理OS情報管理部1111を介して、当該アクセスメモリ領域の管理OS情報とメモリアクセスしてきたOS情報とを比較し、管理権を保有しているかどうか、すなわち、識別子が等しいかどうかを判定する。
メモリ領域の管理権を保有しているのならば、メモリアクセス監視部1124は、メモリ解放制御部1122へ当該メモリアクセス領域のメモリ解放を要求し、メモリ解放を応答された後、利用OS情報管理部1112を介して、当該アクセスメモリ領域の利用OS情報をアクセスOSの識別子に変更し、当該メモリアクセス領域の対応付けを行い、メモリアクセス制御部1220-i(i=1〜n)へ応答する。
メモリ領域の管理権を保有していないのであれば、メモリアクセス制御部1220-i(i=1〜n)からのアクセス要求はアクセス権限がないOSからのアクセス要求であるため、メモリアクセス監視部1124は、メモリアクセス制御部1220-i(i=1〜n)へメモリアクセスエラーとして応答する。
<OS1200-i>
各OS1200-i(i=1〜n)は、メモリ領域やその属性を制御するメモリ管理部1210-i(i=1〜n)と、実メモリとの対応付けを必要とするメモリアクセスを検知するメモリアクセス制御手段1220-i(i=1〜n)と、メモリ削減対象のときに解放すべき候補を探索するメモリ解放領域探索手段1231-i(i=1〜n)と、メモリ解放を行うメモリ解放手段1232-i(i=1〜n)と、メモリ拡張を行うメモリ拡張手段1233-i(i=1〜n)とから構成されている。
<メモリ管理部1210-i>
メモリ管理部1210-i(i=1〜n)は、各OS内のメモリに関する情報を管理する。
メモリに関する情報としては、特性値や統計値などのメモリ全体の特性、統計を表現するメモリ内容情報と、ページの状態やそれらの情報を管理するための情報であるメモリ制御情報とがある。
メモリ内容情報の例としては、総メモリ容量、未使用容量、バッファ容量、キャッシュ容量、スワップキャッシュ容量、プログラムとして利用中である容量、キャッシュ上に保存されており未使用状態である情報、拡張メモリ領域にあるメモリ容量、拡張メモリ領域にある未使用メモリ容量、通常メモリ領域にあるメモリ容量、通常メモリ領域にある未使用メモリ容量、情報の更新があるメモリ容量、スワップデバイスに書き出し中のメモリ容量、ページテーブルからマップされているメモリ容量、スラブアロケータとして利用中のメモリ容量、ページテーブルとして利用中のメモリ容量、プログラムが割当てられているメモリ容量などが挙げられる。
メモリ制御情報の例としては、ページの状態を表すためのフラグ、ページの参照カウント、未使用ページのリスト、使用中ページのリスト、過去使用しており再利用可能なページのリスト、ページ領域の特性などが挙げられる。
ここで、ページの状態を表すためのフラグとは、例えば、ロックされているかどうか、データ転送中にエラーが発生したか、ページが参照されたか、読込完了したか、更新されたか、LRUリストにつながっているか、スラブで利用されているか、リザーブされているか、スワップキャッシュとして利用されているかなどの情報を表すために使用される。
また、ページ領域の特性とは、通常使用の領域か、DMA転送などのために利用する領域か拡張メモリ領域であるかなどを表現している。
メモリ内容情報とメモリ制御情報を併せて、メモリ情報と呼ぶ。
<メモリアクセス制御部1220-i>
メモリアクセス制御部1220-i(i=1〜n)は、OSのメモリアクセスを制御する。
本発明において、メモリアクセス制御部1220-i(i=1〜n)は、少なくとも、実メモリとの対応付けが必要なアクセスを検知する機能を持つ。
例えば、プログラム記憶域やそのデータ入出力のためのキャッシュ確保のためや、メモリ領域への初回の入出力など、マシンアドレス空間を通して実メモリ空間への変換を必要とするメモリアクセスを検知することができる。
メモリアクセス制御部1220-i(i=1〜n)は、実メモリとの対応付けが必要になったときに、メモリアクセス監視部1124へメモリの利用権があるかを問い合わせる。
<メモリ構成変更要求制御部1230-i>
メモリ構成変更要求制御部1230-i(i=1〜n)は、メモリ構成変更の要求を入力された場合、メモリ構成変更がメモリを削減する要求の場合はメモリ解放領域探索部1241-i(i=1〜n)へ、メモリ構成変更がメモリを増加させる要求の場合は、メモリ拡張部1243-i(i=1〜n)へ、各要求を発行する。
メモリ構成変更要求を入力する元は、例えば、オペレータであったり、資源配分を制御する資源管理システムであったり、OS内部に取り込ませ、OS内の資源使用状況により構成変更を指示する資源監視エージェントプログラムであったりする。
今後、説明の便宜上、オペレータからの入力を前提に説明を続けることにするが、要求入力元はオペレータとは限らない場合もあることは明白である。
また、オペレータなどがOSからコマンドを入力する際、メモリ削減用のコマンドとメモリ増加用のコマンドやシステムコールを明示的に分けることもできるが、これはコマンド解釈部やシステムコール管理プログラムなどにより、コマンドやシステムコールが判定され、識別されていると捉えることができるので、メモリ構成変更要求制御部1230-i(i=1〜n)相当の機能であると捉えることができる。
ここで、メモリ構成変更要求の表現としては、マシンアドレス空間の範囲を指定する方法がある。
例えば、「1〜2ギガバイト(GB)の領域を削減する」などである。
メモリ構成変更要求の別の表現としては、メモリの増減量で指定する方法がある。
例えば、「1GBの容量を削減する」などである。
<メモリ解放領域探索部1241-i>
メモリ解放領域探索部1241-i(i=1〜n)は、メモリ削減要求時に、解放に適するメモリ領域を決定する。
具体的には、メモリ解放領域探索部1241-i(i=1〜n)は、メモリ構成変更要求制御部1230-i(i=1〜n)からメモリ解放領域の探索を要求された場合、メモリ管理部1210-i(i=1〜n)のメモリ制御情報を参照して、メモリ解放に適した領域を選択する。
解放メモリ領域の選定方法として、例えば、メモリ領域のアドレス位置を利用することができる。例えば、高位アドレスを優先して解放メモリ領域を選択することができる。また、前記マシンアドレス空間の範囲を指定された場合は、この方法で探索する必要がある。
別の解放メモリ領域の選定方法として、メモリの使用状態を利用することができる。例えば、未使用ページを優先して選択することができる。また、別の例として、キャッシュ領域として利用しているページを優先して選択することができる。
また、もう1つの解放メモリ領域の選定方法として、メモリアクセス情報を利用することができる。例えば、使用された時刻が最も過去であるページを優先することができる。また、アプリケーションの動作が決まっており、将来のページアクセスパターンが予測できる環境では、アクセス開始までの時刻が最も長いページを優先することができる。
メモリ解放領域探索部1241-i(i=1〜n)は、解放メモリ領域を決定したなら、メモリ解放宣言部1121に当該解放メモリ領域の解放宣言を伝え、管理権を放棄する。
ただし、OS内部としては当該メモリ領域を解放していないため、OSの管理からは外れていないことに注意してもらいたい。
<メモリ解放部1242-i(i=1〜n)>
メモリ解放部1242-i(i=1〜n)は、OSからメモリ領域に関するメモリ情報を削除し、メモリの解放を行う。
具体的には、メモリ解放制御部1122から解放メモリ領域が渡され、解放命令を受取ったなら、メモリ管理部1210-i(i=1〜n)から当該解放メモリ領域に関するメモリ情報を削除する。
ここで、メモリ情報を削除するとは、メモリ内容情報から当該解放メモリ領域に対する情報分を差分して変更することと、メモリ制御情報から当該解放メモリ領域に対応する情報を削除することをいう。
本処理にて、OS内部の情報からメモリに関する情報が無くなるために、OSの管理からは外れることになる。
<メモリ拡張部1243-i>
メモリ拡張部1243-i(i=1〜n)は、メモリの増加処理を行う。
具体的には、メモリ拡張部1243-i(i=1〜n)は、メモリ構成変更要求制御部1230-i(i=1〜n)からメモリ領域の拡張を要求された場合、メモリ拡張制御部1123へ拡張するメモリ領域の取得を要求する。拡張するメモリ領域が返答されたなら、当該拡張メモリ領域に対するメモリ情報をメモリ管理部1210-i(i=1〜n)へ追加する。
ここで、メモリ領域に対するメモリ情報を追加するとは、メモリ内容情報から当該拡張メモリ領域に対する情報分を増分して変更することと、メモリ制御情報へ当該拡張メモリ領域に対応する情報を生成し、追加させることをいう。
<第1の実施の形態の動作>
次に、本実施の形態の動作について、図5の構成図、および、図6乃至図9のフローチャート図を参照して説明する。
<メモリ構成変更要求応答処理>
まず、図5の構成図、および、図6のフローチャートを参照して、メモリ構成変更要求応答処理の詳細な動作を説明する。
メモリ構成変更要求制御部1230-i(i=1〜n)が、オペレータからメモリ構成変更要求を受信したら、メモリ構成変更要求応答処理が開始する。
メモリ構成変更要求制御部1230-i(i=1〜n)は、オペレータからメモリ構成変更要求を受信した場合、当該メモリ構成変更要求がメモリ削減要求かメモリ増加要求かを判定する(ステップS101)。
メモリ構成変更要求制御部1230-i(i=1〜n)は、メモリ構成変更要求がメモリ削減要求の場合、当該メモリ削減要求をメモリ解放領域探索部1241-i(i=1〜n)へ発行する。メモリ解放領域探索部1241-i(i=1〜n)はメモリ管理部1210-i(i=1〜n)を参照して、削減要求に適した容量分の解放に適するメモリ領域を選択する(ステップS102)。
メモリ解放領域探索部1241-i(i=1〜n)は、選択した解放対象のメモリ領域の管理権放棄をメモリ解放宣言部1121へ要求する(ステップS103)。
メモリ解放宣言部1121は、利用OS選択処理に入り、当該解放メモリ領域の利用OSを決定する。これは、後で詳細に記載する(ステップS104)。
メモリ解放宣言部1121は、管理OS情報管理部1111を介して、当該解放メモリ領域の管理権を未使用状態に変更する(ステップS105)。
メモリ解放宣言部1121は管理権放棄の結果をメモリ解放領域探索部1241-i(i=1〜n)へ応答し、メモリ解放領域探索部1241-i(i=1〜n)は削減要求に対して結果をメモリ構成変更要求制御部1230-i(i=1〜n)へ応答し、メモリ構成変更要求制御部1230-i(i=1〜n)はオペレータへ削減要求の結果を応答する(ステップS106)。
メモリ構成変更要求制御部1230-i(i=1〜n)は、メモリ構成変更要求がメモリ増加要求の場合、当該メモリ増加要求をメモリ拡張部1243-i(i=1〜n)へ発行する。メモリ拡張部1243-i(i=1〜n)は増加要求を満たす容量のメモリ領域確保をメモリ拡張制御部1123へ要求する(ステップS107)。
メモリ拡張制御部1123は、管理OS情報管理部1111を介して管理OS情報を参照し、必要であれば、利用OS情報管理部1112を介して利用OS情報を参照し、確保要求に適したメモリ領域を選択する(ステップS108)。
メモリ拡張制御部1123は、選択した追加メモリ領域に対して、管理OS情報管理部1111を介して管理OSを要求元OSとして登録する(ステップS109)。
メモリ拡張制御部1123は、当該追加メモリ領域を確保したことをメモリ拡張部1243-i(i=1〜n)へ応答する。メモリ拡張部1243-i(i=1〜n)は、当該追加メモリ領域に対するメモリ情報をメモリ管理部1210-i(i=1〜n)に登録し、メモリの拡張を行う(ステップS110)。
メモリ拡張部1243-i(i=1〜n)は、メモリ構成変更要求制御部1230-i(i=1〜n)へメモリ拡張の結果を応答し、メモリ構成変更要求制御部1230-i(i=1〜n)はオペレータへ増加要求の結果を応答する(ステップS111)。
これら一連の処理により、メモリ構成変更要求応答処理が行われる。
<利用OS選択処理>
図5の構成図、および、図7のフローチャートを参照して、ステップS104の利用OS選択処理の詳細な動作を説明する。
メモリ解放宣言部1121は、前記解放メモリ領域に対して、利用OS情報管理部1111を介して、利用OS情報を参照して、利用OSが異なるメモリ領域へ領域分割する(ステップS201)。
メモリ解放宣言部1121は、前記分割されたメモリ領域に対して、ステップS203から始まる利用OS情報判定が終了していない分割されたメモリ領域がないかをチェックする(ステップS202)。
ステップS202にて未判定メモリ領域が存在した場合、当該メモリ領域に対して、メモリ解放宣言手段1121は解放要求元のOSの識別子と利用OS情報を比較し、解放要求元が利用OSであるかどうかを判定する(ステップS203)。
ステップS203において、解放要求元が利用OSと判定した場合は、既に利用OSとして接続し、利用を継続している状態であるため、当該メモリ領域の利用OS選択は完了する。
ステップS203において、解放要求元が利用OSでないと判定した場合は、メモリ解放宣言手段1121は、今後、解放を要求しているOSから当該メモリ領域へのメモリアクセスを発生させないために、メモリ解放制御部1122へ前記解放を要求しているOSに対して当該メモリ領域の解放を要求する(ステップS204)。
ステップS204においては、メモリ解放制御部1122を起点にメモリ解放処理がなされる。ここで、解放要求元は当該メモリ領域を一度も利用していないため、メモリ解放処理においてページアウト/スワップ処理は行われない。
ステップS204において、メモリ解放の応答が返答されれば、利用OS情報判定は完了する。
ステップS202において、利用OS情報判定が前記分割した全メモリ領域に対して完了したなら、利用OS選択処理が完了する。
これら一連の処理により、利用OS選択処理が行われる。
<メモリ解放処理>
図5の構成図、および、図8のフローチャートを参照して、メモリ解放処理の詳細な動作を説明する。
メモリ解放制御部1122は、メモリ解放を要求された場合、要求されているメモリ解放領域を要求されているOSのメモリ解放部1242-i(i=1〜n)へ、OSのメモリ管理から解放するように要求する(ステップS301)。
メモリ解放部1242-i(i=1〜n)は、メモリ解放を要求された場合、要求されているメモリ解放領域のメモリ情報をメモリ管理部1210-i(i=1〜n)から取得する(ステップS302)。
メモリ解放部1242-i(i=1〜n)は前記取得したメモリ情報においてメモリ領域の利用状況を参照し、該当メモリ領域が使用中かどうかを判定する(ステップS303)。
ステップS303においてメモリ解放領域が使用中であると判定した場合、メモリ解放部1242-i(i=1〜n)はページアウト/スワップ処理を行いメモリ上のデータの退避を行う(ステップS304)。
ステップS303においてメモリ解放領域が未使用であると判定した場合、もしくは、S504にてページアウト/スワップ処理が終了した場合、メモリ解放部1242-i(i=1〜n)は、当該メモリ解放領域に対するメモリ情報をメモリ管理部1210-i(i=1〜n)から削除する(ステップS305)。
メモリ解放部1242-i(i=1〜n)は、メモリ解放処理の完了を返答し、メモリ解放制御部1122は、メモリ解放要求に対して結果を返答する(ステップS306)。
これら一連の処理により、メモリ解放処理が実行される。
<実メモリ領域の融通処理>
図5の構成図、および、図9のフローチャートを参照して、メモリアクセスによる実メモリ領域を融通する処理の詳細な動作を説明する。
実メモリ領域を融通する処理は、実メモリ空間へのアクセスが生じるときに行う。
メモリアクセス制御手段1220-i(i=1〜n)は、実メモリとの対応付けが必要になったことを検知する。
これを契機に図9のフローチャートであるメモリアクセス判定処理が開始される。
メモリアクセス制御手段1220-i(i=1〜n)は、メモリアクセス監視部1124へメモリ領域の利用権があるかを問い合わせる(ステップS401)。
メモリアクセス監視部1124は、利用OS情報管理部1112を介して利用OS情報を参照し、メモリアクセスを要求しているOSが当該アクセスメモリ領域の利用OSであるかどうかを判定する(ステップS402)。
ステップS402において、利用OSであると判定された場合、メモリ利用権を既に保有しているため、成功結果作成(ステップS408)へと移る。
ステップS402において、利用OSでないと判定された場合、続いて、未使用領域でないか判定する(ステップS403)。
ステップS403において、未使用領域であると判定された場合、当該OSにメモリ利用権を登録(ステップS407)し、成功結果作成(ステップS408)へと移る。
ステップS403において、未使用領域でないと判定された場合、メモリアクセス監視部1124は、管理OS情報管理部1111を介して管理OS情報を参照し、メモリアクセスを要求しているOSが当該アクセスメモリ領域の管理OSであるかどうかを判定する(ステップS404)。
ステップS404において、管理OSでないと判定された場合、メモリの利用権、および、管理権がないOSからのアクセスなので、メモリアクセス監視部1124は、メモリアクセスのエラー結果を作成する(ステップS409)。
ステップS404において、管理OSであると判定された場合、つまりメモリアクセスを要求しているOSが利用権を保有せず管理権を保有するメモリ領域へアクセスを要求してきた場合、これがメモリ融通のためのタイミングであるため、メモリアクセス監視部1124は、メモリ解放制御部1122へ当該アクセスメモリ領域の利用OSに対するメモリ解放を要求する(ステップS405)。
メモリ解放制御部1122は、メモリ解放要求に従い、前述したメモリ解放処理を行う(ステップS406)。
メモリ解放制御部1122は、利用OS情報管理部1112を介して、利用OS情報を未使用状態に更新し、メモリ解放が終了したことをメモリアクセス監視部1124へ応答する。これにより、メモリアクセス監視部1124は、メモリ領域にアクセスが可能な状態、すなわち、データ退避等が終了し、利用してもデータの不整合を起こさない状態(以後、アクセス可能状態)に変更されたことを知ることができ、利用OS情報管理部1112を介して、利用OS情報にメモリアクセスを要求しているOSを登録する(ステップS407)。
メモリアクセス監視部1124は、ステップS406までの処理により、メモリアクセスを要求しているOSがメモリ利用権を保有した状態に移行するため、成功結果を作成する(ステップS408)。
メモリアクセス監視部1124は、ステップS408もしくは、ステップS409のメモリ領域の利用権結果をメモリアクセス制御手段1220-i(i=1〜n)へ応答する(ステップS410)。
これら一連の処理により、メモリアクセス判定処理が実行される。
メモリアクセス制御手段1220-i(i=1〜n)は、この結果を参照して、メモリアクセス処理を継続し、成功結果ならメモリアクセスを実現する。
<動作シーケンス>
次に、図5の構成図、図6乃至図9のフローチャート図、図10のシーケンス図、および、図11のメモリ情報の概念図を参照して、本実施の形態の動作シーケンスを説明する。
ここで、構成変更条件は、図2のときと同様であり、実メモリ管理部でのメモリ領域の管理単位としては、256MB単位として説明する。
オペレータは、メモリを削減するOS(OS1)へ1GBのメモリ削減要求を発行する(図10の2001)。
これにより、図6のフローチャートに示される処理が開始される。
メモリ構成変更要求制御部1230-1は、メモリ削減要求であるので、メモリ解放領域探索部1241-1へメモリ削減要求を発行する(図6のS101で削除選択)。
メモリ解放領域探索部1241-1は、メモリ管理部1210-1を介して適切な解放メモリ領域を探索する(図6のS102)。
ここでは、1GB〜2GBのメモリ領域が解放領域として選択されたものとする。
メモリ解放領域探索部1241-1は、決定した解放メモリ領域を基に、メモリ解放宣言部1121に当該解放メモリ領域の解放宣言を伝え、管理権を放棄するように要求する(図6のS103、図10の2002)。
メモリ解放宣言部1121は、メモリ解放領域探索部1241-1からの解放メモリ宣言要求に基づき、実メモリ管理部1110のメモリ空間対応表、および、管理OS情報管理部1111を介して、当該解放メモリ領域の管理OS情報を未使用状態へ変更する(図6のS104〜S105,図10の2003)。
メモリ解放宣言部1121は、管理OS情報変更後、すなわち、解放対象OSに対する管理権剥奪後、メモリ解放領域探索部1241-1へ結果を返答する(図6のS106,図10のS2004)
メモリ解放領域探索部1241-1は、メモリ構成変更要求制御部1230-1へメモリ削減要求により、管理権を失ったことをオペレータに報告する(図10のS2005)。
これにより、VMMからは、当該メモリ領域(1GB〜2GB)がOS1から解放する意思があると認識し、未使用領域候補として扱うことができ、OS1からは現在も利用している領域として扱うことになる。
オペレータは、メモリを増加するOS(OS2)へ1GBのメモリ増加要求を発行する(図10の2006)。
これにより、再び、図6のフローチャートに示す処理が開始される。
メモリ構成変更要求制御部1230-1は、メモリ増加要求であるので、メモリ拡張部1243-1へメモリ増加要求を発行する(図6のS101で増加選択)。
メモリ拡張部1243-1は、メモリ拡張制御部1123へ必要な1GB分の拡張メモリ領域の確保を要求する(図6のS107,図10の2007)。
メモリ拡張制御部1123は、メモリ拡張部1243-1から拡張メモリ領域の確保を要求されたので、管理OS情報管理部1111と必要に応じて、利用OS情報管理1123を介して、未使用領域から1GB分の領域を選択し、管理OS情報管理部1111を介して管理OS情報を拡張要求OSであるOS2として登録し、さらに、実メモリ管理部1110のメモリ空間対応表へ、実メモリ空間とマシンアドレス空間の対応付けを登録することで、拡張メモリ領域として確保する(図6のS108〜S109,図10の2008)。
メモリ拡張制御部1123は、確保した拡張メモリ領域をメモリ拡張部1243-1へ応答する(図10の2009)。
メモリ拡張部1243-1は、メモリ管理部1210-1へ拡張メモリ領域に関するメモリ情報を追加する(図6のS110)。
メモリ拡張部1243-1は、メモリ構成変更要求制御部1230-1へメモリ増加要求により、管理権を得たことをオペレータに報告する(図6のS111,図10のS2010)。
これにより、OS2からは新たな1GBのメモリ領域が管理下に入り、当該メモリ領域が拡張されたように扱わせることができる。
ここまでで、図11(a)の初期状態から図11(b)の状態へ移行したことになる。
すなわち、1GB〜2GBのメモリ領域は、管理OSとしてOS2が登録され、OS2からは利用可能に見えるが、利用OSとしてOS1が登録されており、OS1からは解放前であるためまだ利用可能領域として扱い、実際にOS1がメモリ領域を利用している。
OS2は、OS上でプログラムが動作していく過程において、拡張された領域へのアクセスが発生する。
ここでは、最初に1.5GB〜1.5256GBのメモリ領域へアクセスされたとする。
これを契機に、メモリアクセス制御部1220-2は、実メモリ空間の取得を検知し、メモリアクセス監視部1124へメモリアクセスを問合せる(図9のS401,図10の2011)。
メモリアクセス監視部1124は、利用OS情報管理部1112を参照して、当該アクセスメモリ領域がメモリアクセスするOS2の利用領域かどうかを判定する。
メモリ領域が利用領域ならメモリアクセスを許可するが、今の場合、利用OS情報がOS1であるため、利用権がないと判断する(図9のS402でNoを選択)。
また、利用OS情報がOS1であるため、未使用状態でないと判断する(図9のS403でNoを選択)。
メモリアクセス監視部1124は、次に、管理OS情報管理部1111を参照して、当該アクセスメモリ領域がOS2の管理領域かどうかを判定する(図9のS404)。
メモリ領域が管理領域でないのであれば、管理権も利用権も持たないためメモリアクセスエラーとして返答するが(図9のS409へ)、今回は、図10の2007〜図10の2009のシーケンスにより該当メモリアクセス領域の管理権はOS2と設定されているため、管理領域として判断される(図9のS404でYesを選択)。
メモリアクセス監視部1124は、管理権を持つOS、すなわち、メモリ変更要求によりメモリ再構成後にメモリ領域を割当られるOSからのアクセスであるため、利用OSからメモリ領域を解放し、アクセス可能にする処理に移る。
メモリアクセス監視部1124は、メモリ解放制御部1122へ当該アクセスメモリ領域のメモリ解放を要求し、メモリ解放させる(図9のS405〜S406)。
メモリ解放制御部1122は、利用OSであるOS1のメモリ解放部1242-1へ当該アクセスメモリ領域のメモリ解放を要求する(図8のS301,図10の2012)。
メモリ解放部1242-1は、メモリ管理部1210-1を介して要求された解放するメモリ領域のメモリ情報を参照し、使用状態にないかを判断し、使用状態であれば、ページアウト/スワップアウト処理によるデータ退避を行うことで未使用状態に変更する(図8のS302〜304,図10の2013)。
メモリ解放部1242-1は、当該解放メモリ領域が未使用状態になったなら、メモリ管理部1210-1からメモリ情報を削除する(図8のS305)。
これにより、OS1からは、該当メモリ領域が管理下から外れたことになる。
続いて、メモリ解放部1242-1は、当該解放メモリ領域のメモリ解放が完了したことをメモリ解放制御部1122へ応答する(図8のS306,図10の2014)。
メモリ解放制御部1122は、メモリ解放部1242-1からメモリ解放完了の応答を受取ったなら、利用OS情報管理部1112を参照して、利用OS情報を未使用状態に変更する(図8のS407,図10の2015)。
これにより、VMMからも当該解放メモリ領域の利用からOS1が外れることになる。
メモリ解放制御部1122は、メモリ解放部1242-1へ利用OS情報から削除したこと、すなわちメモリの切り離しが完了したことを通知する(図9のS407,図10の2016)。
メモリ解放部1242-1は、メモリ構成変更要求制御部1230-1へ当該解放メモリ領域の解放が完了したことを伝える。
メモリ構成変更要求制御部1230-1は、必要に応じて、当該解放メモリ領域の解放、すなわち、最初のメモリ削減要求の一部が完了したことを表示する(図10の2017)。
メモリ解放制御部1122は、メモリ解放が終了したことをメモリアクセス監視部1124へ応答する(図9のS407)。
メモリアクセス監視部1124は、要求したアクセスメモリ領域の解放が完了し、当該アクセスメモリ領域が使用可能状態になったため、アクセスしたOS2へメモリアクセスを許可するために、利用OS情報管理部1112を参照して、当該アクセスメモリ領域の利用OS情報にアクセスしたOS2を登録する(図9のS407)。
これにより、OS2へメモリ利用権限が融通されたことになる。
メモリアクセス監視部1124は、メモリアクセスを許可し、メモリアクセス制御部1220-2へ返答する(図9のS408,S410,図10の2018)。
これにより、OS2からは、自分がメモリアクセスした際に融通されていることを知らずに、すなわち、通常割当てられたメモリと同様にメモリアクセスを実行することができる。
メモリアクセス制御部1220-2は、メモリ構成変更要求制御部1230-2へ当該アクセスメモリ領域の割当が完了したことを伝える。
メモリ構成変更要求制御部1230-2は、必要に応じて、当該アクセスメモリ領域の割当、すなわち、最初のメモリ増加要求の一部が完了したことを表示する(図10の2019)。
これにより、1.5GB〜1.75GBのメモリ領域は融通される。
そのため、利用者(利用OS)がOS1からOS2へと変更され、図11(b)の状態から図11(c)の状態になる。
図10の2011〜2019と同様の処理が繰り返され、メモリ融通が進み、最終的に、メモリ再構成処理が行われる。
最終的に、図11(d)に示されるように、1GB〜2GBの領域はOS2へ利用権が移行される。
メモリ構成変更要求制御部1230-1、および、1230-2は、それぞれ、最後のメモリ解放通知2100、メモリ割当通知2102が完了したら、削減要求、増加要求によるメモリ構成変更が完了したことになり、完了をオペレータへ表示する(図10の2101、および、2103)。ここで、最後のメモリ解放通知か否か、最後のメモリ割当通知か否かの判断は、メモリ構成変更要求制御部において、メモリ構成変更要求を出した時点で、どこの領域が解放予定か、割当予定かを自身が要求したメモリ構成変更要求を覚えておき、実際にアクセスが生じて解放されたメモリ領域、割り当てられたメモリ領域の結果と照らし合わせて、全ての領域において解放/割当が完了したかどうかを検知することで可能である。
次に、本実施の形態の効果について説明する。
本実施の形態は、メモリ領域に対して、メモリ再構成後にメモリ領域を割当てられメモリの管理権をもつべきであるOSとなる管理OSと、メモリ再構成前にメモリ領域を使用しており、メモリ領域の解放前であるためにメモリ領域をアクセスする権利を持つ利用OSとの情報を保持し、メモリ構成変更要求に対して、要求受信時に管理権を変更させ、メモリアクセスを契機に利用権を変更させる2段階構造に分け、利用権変更時にはメモリ解放を保証することにより、メモリ再構成に対して、要求への見かけ上の対応を早めると同時に、実際のメモリ融通を遅延させて効果的なタイミングで行え、予約領域を必要としないため、全メモリ領域を有効活用することができる。
これにより、以下のような効果も得られる。
追加の効果の1つは、メモリ再構成後にメモリが増加されるOSからは、メモリ領域の拡張によるメモリ情報の更新を早められることにより、メモリ容量などによるプログラム起動規制などをいち早く対応可能にすることができる。
追加の効果のもう1つは、メモリアクセスを契機にアクセスするメモリ領域に対して、ページアプト/スワップアウトのデータ退避処理を行うため、負荷が大きく時間を要するデータ退避処理を分散させることができ、OS上で動作している通常プログラムの影響を和らげることができる。
また別の追加の効果は、メモリの利用効率を上げることができる。
メモリ効率向上の理由の1つとしては、メモリの融通に関する処理は、メモリ解放してからメモリ拡張させるという2段階を必要とし、その間の時間、該当メモリ領域は使用不可能状態になるが、メモリ領域の融通に関する単位がメモリ再構成要求に依存しなく、メモリアクセスする際のメモリ容量に分割されるため、使用不可能状態になるメモリ領域の相対的な累計時間を短くすることができるためである。
メモリ効率向上の理由のもう1つとしては、メモリを減少させるOSからは、メモリ融通先のOSが利用するまでの間、該当メモリ領域を利用することが可能であり、再構成変更後のメモリ容量より大きな容量を使用できるほか、解放すべきメモリ領域に確保されているキャッシュやデータの再利用ができるためである。
『第2の実施の形態』
次に、本発明の第2の発明を実施するための最良の形態について説明する。
本実施の形態では、利用OS決定の別の例として、メモリ領域を権利が強いOSが使用継続を優先するために、その時点での管理OSを優先する方式になる。
本実施の形態では、第1の実施の形態と比べて、利用OS選択処理だけが異なるので、この処理だけを説明する。
これは、図7のフローチャートが変形する、すなわち、図6のステップS104の処理だけが異なることに相当する。
図5、および、図12のフローチャートを参照して、ステップS104の利用OS選択処理において、管理OSを優先する方式の詳細な動作を説明する。
メモリ解放宣言手段1121は、前記解放メモリ領域に対して、利用OS情報管理部1111を介して、利用OS情報を参照して、利用OSが異なるメモリ領域へ領域分割する(ステップS501)。
メモリ解放宣言手段1121は、前記分割されたメモリ領域に対して、ステップS503から始まる利用OS情報判定が終了していない分割されたメモリ領域がないかをチェックする(ステップS502)。
ステップS502にて未判定メモリ領域が存在した場合、当該メモリ領域に対して、メモリ解放宣言手段1121は解放宣言したOSの識別子と利用OS情報を比較し、解放要求元が利用OSであるかどうかを判定する(ステップS503)。
ステップS503において、解放要求元が利用OSと判定した場合は、既に利用OSとして接続し、利用を継続している状態であるため、当該メモリ領域の利用OS選択は完了する。
ステップS503において、解放要求元が利用OSでないと判定した場合は、管理権を保有していたOSからの解放宣言であるので、メモリ領域の権利が、利用していたOSより強いと判断し、当該メモリ領域の利用権を解放宣言したOSに移行する処理に入る。
メモリ解放宣言部1121は、メモリ解放制御部1122へ利用OSに対して当該メモリ領域の解放を要求する(ステップS504)。
ステップS504においては、図8のフローチャートに従って、メモリ解放制御部1122を起点にメモリ解放処理がなされる。
メモリ解放宣言手段1121は、利用OS情報管理部1112を介して利用OS情報を解放宣言したOS、すなわち、管理OSに更新し、利用OS情報判定を完了する(ステップS504)。
ステップS502において、利用OS情報判定が前記分割した全メモリ領域に対して完了したなら、利用OS選択処理が完了する。
これら一連の処理により、メモリ領域を、権利が強いOSが使用継続を優先する利用OS選択処理が行われる。
本発明の第1の実施の形態と本発明の第2の実施の形態の違いを図13、および、図14の管理OS情報、利用OS情報の情報管理遷移図を参照し、具体例を挙げて説明する。
具体例としては、OS1が2GBを利用する。その後、高位1GBを融通させてOS2を起動させる。さらにその後にOS2のうちの高位512MBを融通させてOS3を起動させる場合を考える。
また、OS2を起動させるタイミングはOS1が全領域をアクセスした後、OS3を起動させるタイミングは、OS2が低位、および、高位256MBを利用した後とする。
図13は、第1の実施の形態の管理OS情報、利用OS情報の情報管理遷移図を示す。
管理OS情報、利用OS情報の情報管理表の初期状態は、図13(a)に示すように全部未使用状態である。
まず、2GBの容量がOS1に割当てられる。すなわち、管理OS情報としてOS1が登録され、管理OS情報、利用OS情報の情報管理表は図13(b)のように更新される。
OS1は、割当てられた各領域にアクセスを開始し、実際の利用権を獲得する。すなわち、利用OS情報をOS1へと変更していき、管理OS情報、利用OS情報の情報管理表は図13(c)のように更新される。
ここで、OS2が高位1GB、すなわち、1024MB〜2048MBを融通させて利用しようとする。
OS1は、高位1GBを解放宣言し、管理権を放棄する。すなわち、管理OS情報を未使用状態に変更し、管理OS情報、利用OS情報の情報管理表は図13(d)へと更新される。
OS2は、未使用領域から1GBを確保する。すなわち、1GB〜2GBの領域を確保し、管理OSとして登録される。
この間、利用OS選択機構が動作するが、ここでは、すべてOS1が利用OSであり、OS1が解放宣言しているため、メモリ解放処理は一切動作せず、その結果、管理OS情報、利用OS情報の情報管理表は図13(e)へと更新される。
OS2は、メモリアクセスを始め、低位256MB(1024MB〜1280MB)と高位256MB(1792MB〜2048MB)をアクセスし、メモリ融通を経て、利用権を融通し、利用権を得る。すなわち、各領域に対する利用OS情報は、OS1からOS2へと変更され、管理OS情報、利用OS情報の情報管理表は図13(f)となる。
ここで、OS3がOS2の高位512MB、すなわち、1536MB〜2048MBを融通させて利用しようとする。
OS2は、高位512MBを解放宣言し、管理権を放棄する。すなわち、管理OS情報を未使用状態に変更する。
このとき、1536MB〜1792MBと、1792MB〜2048MBで利用OSが異なることになるので、各領域に対して利用OS選択機構が動作する。
1536MB〜1792MBのメモリ領域は、OS1が利用権を持ち利用しているため、OS2から今後、アクセスが生じないようにするために、OS2から1536MB〜1792MBのメモリ領域を解放するメモリ解放処理がなされる。
1792MB〜2048MBのメモリ領域は、OS2が利用権を持ち利用しており、メモリ融通の際にOS1の管理下からは外れているために、メモリ解放処理を必要としない。
すなわち、図7のフローチャートにて、1536MB〜1792MBのOS2に対するメモリ解放処理がなされる。
図7のフローチャートの結果、管理OS情報、利用OS情報の情報管理表は図13(g)へと更新される。
OS3は、未使用領域から512MBを確保する。すなわち、1536MB〜2048MBの領域を確保し、管理OSとして登録され、管理OS情報、利用OS情報の情報管理表は図13(h)へと更新される。
次に、第2の実施の形態における動作を、図14の管理OS情報、利用OS情報の情報管理遷移を参照して説明する。
図14f)までは図13f)までと動作に変わりがないので、説明を省略することとする。
ここで、OS2は、高位512MBを解放宣言し、管理権を放棄する。すなわち、管理OS情報を未使用状態に変更することになる。
このとき、1536MB〜1792MBと、1792MB〜2048MBで利用OSが異なることになるので、各領域に対して利用OS選択機構が動作する。
1536MB〜1792MBのメモリ領域は、OS1が利用権を持ち利用していたが、管理権を持つOS2が管理権を外れることから、今後、直前に管理権を持っているOS2がアクセス可能になるように、利用権をOS2へ移行することになる。
そのため、OS1に対して1536MB〜1792MBのメモリ領域を解放させた後、利用OS情報をOS2として登録する。
1792MB〜2048MBのメモリ領域は、OS2が利用権を持ち利用しており、メモリ融通の際にOS1の管理下からは外れているために、メモリ解放処理を必要としない。
すなわち、図12のフローチャートにて、1536MB〜1792MBのOS1に対するメモリ解放処理がなされる。
図12のフローチャートの結果、管理OS情報、利用OS情報の情報管理表は図14(g)へと更新される。
OS3は、未使用領域から512MBを確保する。すなわち、1536MB〜2048MBの領域を確保し、管理OSとして登録され、管理OS情報、利用OS情報の情報管理表は図14(h)へと更新される。
このように、第1の実施の形態と第2の実施の形態は、利用OSとして設定するOSの選択方式が異なる。
本実施の形態の効果は、直前の設定されたメモリ構成を保てることにある。
第1の実施の形態では、既にメモリを利用しているOSを利用OSとして継続させることでデータの再利用性を向上させることができることに対し、本実施の形態では、直前のOS(アプリケーション)に適した利用構成の設定を維持することで、今後のメモリ配分効果を高めることにある。
すなわち、たまたまメモリアクセスが生じなかったために利用OSにできなかった領域は、その後の処理を考えた場合に直前の管理構成を持続させた方がメモリの利用効率が向上し、アプリケーションの動作を向上させることが考えられる。
また、第1の実施の形態で挙げた効果を併せ持つ。
『第3の実施の形態』
次に、本発明の第3の実施の形態について説明する。
本発明の第3の実施の形態は、第1、および、第2の実施の形態に比べて、メモリアクセス判定処理だけが異なるので、この処理だけを説明する。
図5の構成図、および、図15のフローチャートを参照して、第3の発明のメモリアクセス判定処理の詳細な動作について説明する。
第1、および、第2の実施の形態と同様、実メモリ領域を融通する処理は、実メモリ空間へのアクセスが生じるときに行う。
メモリアクセス制御手段1220-i(i=1〜n)は、実メモリとの対応付けが必要になったことを検知する。
これを契機に図15のフローチャートであるメモリアクセス判定処理が開始される。
メモリアクセス制御手段1220-i(i=1〜n)は、メモリアクセス監視部1124へメモリ領域の利用権があるかを問い合わせる(ステップS601)。
メモリアクセス監視部1124は、利用OS情報管理部1112を介して利用OS情報を参照し、当該アクセスメモリ領域が利用OSであるかどうかを判定する(ステップS602)。
ステップS602において、利用OSでないと判定された場合、続いて、未使用領域でないか判定する(ステップS603)。
ステップS603において、未使用領域であると判定された場合、メモリ利用権を登録(ステップS607)し、成功結果作成(ステップS608)へと移る。
ステップS603において、未使用領域でないと判定された場合、メモリアクセス監視部1124は、管理OS情報管理部1111を介して管理OS情報を参照し、当該アクセスメモリ領域が管理OSであるかどうかを判定する(ステップS604)。
ステップS604において、管理OSでないと判定された場合、メモリの利用権、および、管理権がないOSからのアクセスなので、メモリアクセス監視部1124は、メモリアクセスのエラー結果を作成する(ステップS609)。
ステップS604において管理OSであると判定された場合、メモリ融通のためのタイミングであるため、メモリアクセス監視部1124は、メモリ解放制御部1122へ当該アクセスメモリ領域の利用OSに対するメモリ解放を要求する(ステップS605)。
メモリ解放制御部1122は、メモリ解放要求に従い、前述したメモリ解放処理を行う(ステップS606)。
メモリ解放制御部1122は、利用OS情報管理部1112を介して、利用OS情報を未使用状態に更新し、メモリ解放が終了したことをメモリアクセス監視部1124へ応答する。これにより、メモリアクセス監視部1124は、メモリ状態がアクセス可能状態に変更されたことを知ることができ、利用OS情報管理部1112を介して、利用OS情報にメモリアクセスを要求しているOSを登録する(ステップS607)。
メモリアクセス監視部1124は、ステップS606までの処理により、メモリアクセスを要求しているOSがメモリ利用権を保有した状態に移行するため、成功結果を作成する(ステップS608)。
ここまでの処理は図9に示した第1の実施の形態における処理と同じである。
ステップS602において、利用OSであると判定された場合、メモリアクセス監視部1124は、メモリアクセスを要求したOSが管理OSかどうかを判定する(ステップS617)。管理OSであれば、ステップS608へ処理を進める。
メモリアクセスを要求したOSが利用OSであるが管理OSでなければ(ステップS617でNo)、メモリアクセス監視部1124は、メモリアクセスを要求したOSからの当該メモリ領域に愛するメモリアクセスの統計値を計算する(ステップS611)。
メモリアクセスの統計値としては、例えば、メモリアクセス回数、メモリ管理権を放棄してからのメモリアクセス回数、一定時間あたりのメモリアクセス回数、メモリアクセスデータ量、総メモリアクセスデータ量、メモリ管理権を放棄してからの総メモリアクセスデータ量、メモリ管理権を放棄してからの平均メモリアクセスデータ量、一定時間あたりの総メモリアクセスデータ量、一定時間あたりの平均メモリアクセスデータ量、管理権を放棄してからのメモリアクセス時間が挙げられる。
メモリアクセス監視部1124は、前記計算した統計値を基にメモリ領域を解放すべきかどうかを判定する(ステップS612)。例えば、一定時間あたりのメモリアクセス回数が少なくなっている場合、そのメモリ領域に対する利用はないと考えられる。その場合、利用OS側がメモリ領域の利用権を持ち続けるよりは、これからそのメモリ領域を必要とするであろう管理OS側にメモリ領域の利用権を直ぐに渡せる状態にした方が、ページアウト処理等の処理時間を省くことができて有効である。逆に、メモリアクセスが頻繁に起こっているようであれば、データ利用効率が良いので解放するのは好ましくない。また、管理権を放棄してからのメモリアクセス時間では、利用OS側に一定時間の猶予を与えているのと同じ状態になる。このような状況を考慮して、予めどのような条件が成立した場合に、メモリ領域を解放すべきかが事前に設定されている。
具体的な判定方法としては、例えば、統計値に一定値との比較演算(以上、以下、越える、超えない、等しい、等しくないなど)により求める方法、統計値を一定の評価関数に当てはめた後に一定値との比較演算により求める方法、また、前記比較する数値も一定値でなく、状況に合わせて変化する値として扱う方法が挙げられる。
もし解放すべき領域ではないと判定した場合、メモリ利用権を既に保有し、解放条件にも当てはまらないため、利用してよい領域になるため、成功結果作成(ステップS608)へと移る。
もし解放すべき領域であると判定した場合、メモリ融通のためのタイミングが到来したものと判断して、メモリアクセス監視部1124は、メモリ解放制御部1122へ当該アクセスメモリ領域の利用OSに対するメモリ解放を要求する(ステップS613)。
メモリ解放制御部1122は、メモリ解放要求に従い、前述したメモリ解放処理を行う(ステップS614)。
メモリ解放制御部1122は、利用OS情報管理部1112を介して、利用OS情報を未使用状態に更新し、メモリ解放が終了したことをメモリアクセス監視部1124へ応答する(ステップS615)。
メモリアクセス領域は前記メモリ解放処理において、ページアウト/スワップアウトされた領域へのアクセスに変更されるため、メモリアクセス監視部1124はメモリ再アクセス要求を起させる結果を生成する(ステップS616)。
メモリアクセス監視部1124は、ステップS608、S609もしくは、ステップS616のメモリ領域の利用権結果をメモリアクセス制御手段1220-i(i=1〜n)へ応答する(ステップS610)。
これら一連の処理により、メモリアクセス判定処理が実行される。
メモリアクセス制御手段1220-i(i=1〜n)は、この結果を参照して、メモリアクセス処理を継続し、メモリアクセスを実現する。
次に、第3の実施の形態の効果について説明する。
本実施の形態は、第1、または、第2の実施の形態の効果を有すると共に、追加の効果として、管理OSにおけるアクセス速度を向上させることができる。
その理由は、利用OSのメモリアクセスの統計結果に基づきメモリ解放処理が行われ、未使用領域へ移行するためである。すなわち、管理OSがメモリアクセスを要求するときに、既にメモリ解放処理が終了しており、既に未使用領域となっている場合が生じ、すぐに利用権を確保できてメモリアクセスに移ることができるためである。
これにより、管理OS側から見ると、利用権を保有していない領域へのメモリアクセス速度は平均して向上することができる。
『第4の実施の形態』
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。
本発明の第4の実施の形態は、第1乃至第3の発明を実施するための最良の形態に比べて、メモリ構成変更要求応答処理だけが異なるので、この処理だけを説明する。
図5の構成図、および、図16のフローチャートを参照して、メモリ構成変更要求応答処理の詳細な動作を説明する。
メモリ構成変更要求制御部1230-i(i=1〜n)が、オペレータからメモリ構成変更要求を受信したら、メモリ構成変更要求応答処理が開始する。
メモリ構成変更要求制御部1230-i(i=1〜n)は、オペレータからメモリ構成変更要求を受信した場合、当該メモリ構成変更要求がメモリ削減要求かメモリ増加要求かを判定する(ステップS701)。
メモリ構成変更要求制御部1230-i(i=1〜n)は、メモリ構成変更要求がメモリ削減要求の場合、当該メモリ削減要求をメモリ解放領域探索部1241-i(i=1〜n)へ発行する。メモリ解放領域探索部1241-i(i=1〜n)はメモリ管理部1210-i(i=1〜n)を参照して、削減要求に適した容量分の解放に適するメモリ領域を選択する(ステップS702)。
メモリ解放領域探索部1241-i(i=1〜n)は、メモリ解放領域に対して、メモリ管理部1210-i(i=1〜n)を通じて、メモリ情報を変更する(ステップS703)。
ここで、メモリ情報の変更として、メモリ内容情報を変更することができる。このとき、メモリ解放処理におけるメモリ情報からの削除(図8のフローチャートのステップS305)時には、該当メモリ内容情報を変更しない。例えば、メモリ総容量情報を変更することができる。本ステップにて、メモリ総容量情報を変更するため、メモリ解放処理時にはメモリ総容量の変更は行なう必要がなくなる。
また、メモリ情報の別の変更として、メモリ制御情報を変更することができる。例えば、メモリのページ利用形態を一時退避領域などに設定することができる。
メモリ解放領域探索部1241-i(i=1〜n)は、選択した解放メモリ領域の管理権放棄をメモリ解放宣言部1121へ要求する(ステップS704)。
メモリ解放宣言部1121は、利用OS選択処理に入り、当該解放メモリ領域の利用OSを決定する。これは、後で詳細に記載する(ステップS705)。
メモリ解放宣言部1121は、管理OS情報管理部1111を介して、当該解放メモリ領域の管理権を未使用状態に変更する(ステップS706)。
メモリ解放宣言部1121は管理権放棄の結果をメモリ解放領域探索部1241-i(i=1〜n)へ応答し、メモリ解放領域探索部1241-i(i=1〜n)は削減要求に対して結果をメモリ構成変更要求制御部1230-i(i=1〜n)へ応答し、メモリ構成変更要求制御部1230-i(i=1〜n)はオペレータへ削減要求の結果を応答する(ステップS707)。
メモリ構成変更要求制御部1230-i(i=1〜n)は、メモリ構成変更要求がメモリ増加要求の場合、当該メモリ増加要求をメモリ拡張部1243-i(i=1〜n)へ発行する。メモリ拡張部1243-i(i=1〜n)はメモリ拡張制御部1123へ増加要求を満たす容量のメモリ領域確保をメモリ拡張制御部1123へ要求する(ステップS708)。
メモリ拡張制御部1123は、管理OS情報管理部1111を介して管理OS情報を参照し、必要であれば、利用OS情報管理部1112を介して利用OS情報を参照し、確保要求に適したメモリ領域を選択する(ステップS709)。
メモリ拡張制御部1123は、選択した追加メモリ領域に対して、管理OS情報管理部1111を介して管理OSを要求元OSとして登録する(ステップS709)。
メモリ拡張制御部1123は、当該追加メモリ領域を確保したことをメモリ拡張部1243-i(i=1〜n)へ応答する。メモリ拡張部1243-i(i=1〜n)は、当該追加メモリ領域に対するメモリ情報をメモリ管理部1210-i(i=1〜n)に登録し、メモリの拡張を行う(ステップS711)。
メモリ拡張部1243-i(i=1〜n)は、メモリ構成変更要求制御部1230-i(i=1〜n)へメモリ拡張の結果を応答し、メモリ構成変更要求制御部1230-i(i=1〜n)はオペレータへ増加要求の結果を応答する(ステップS712)。
これら一連の処理により、メモリ構成変更要求応答処理が行われる。
次に、第4の実施の形態の効果について説明する。
本実施の形態は、第1乃至第3の実施の形態の効果を有すると共に、追加の効果として、メモリを削減するOSのメモリ利用形態を変更することにより、メモリを削減するOSでのプログラムへの影響、および、ページアウト/スワップ処理の量を削減する効果が現れる。
例えば、メモリ内容情報の変更の例として、メモリ総容量を変更することが挙げられる。これにより、実際に解放処理した以後の仮想計算機環境を想定でき、必要以上のプログラム起動などを抑えることができる。
別の例として、メモリ制御情報を変更する場合では、メモリ領域を一時退避領域に設定することが挙げられる。これにより、利用OS内メモリアクセスにおいて、メモリアクセスがページイン/スワップイン処理に変更され、管理権を持つメモリ領域内へのページコピーと一時退避メモリ領域の解放処理になる。その結果、管理OSからメモリアクセスが発生しているメモリ領域のページアウト/スワップ処理を低減することができる。
また、別の例として、メモリ領域を読込専用領域として設定し、データの更新を抑えることにより、管理OSがメモリアクセスした際のページアウト/スワップアウトする処理量を抑えることができ、管理権放棄後に解放処理の負荷を高めるような動作を抑えることができる。
『第5の実施の形態』
次に、本発明の第5の実施の形態について図面を参照して詳細に説明する。
本発明の第5の実施の形態は、第1乃至第4の実施の形態に比べて、メモリ再構成における要求受付部だけが異なる。
図17は、第5の実施の形態の構成を表すブロック図である。第1乃至第4の実施の形態に比べて、メモリ再構成要求解析部1130だけが加わる点で相違する。したがって、メモリ再構成要求解析部1130に関してだけ説明し、それ以外の構成および動作は、第1乃至第4の実施の形態と等しいため説明を省略する。
メモリ再構成要求解析部1130は、メモリ再構成要求を受け付け、システムのメモリ再構成を開始させる。
具体的には、まず、メモリ再構成要求解析部1130は、メモリ再構成要求を受け付ける。
メモリ再構成要求を入力する元は、例えば、オペレータであったり、資源配分を制御する資源管理システムであったり、システム管理用のOSからのAPIだったりする。
今後、説明の便宜上、オペレータからの入力を前提に説明を続けることにするが、要求入力元はオペレータとは限らないことは当然であるので注意されたい。
メモリ再構成要求解析部1130は、メモリ再構成要求を受け付けたなら、各OSへ発行するメモリ構成変更要求を生成する。
ここで、メモリ再構成要求の表現としては、全体、もしくは、特定の実アドレス空間の範囲を指定する方法がある。
例えば、「0〜1GBの領域はOS1、1〜2GBの領域はOS2に割当てる」や「0〜1GBの領域はOS1に割当てる」などである。
これらは、実メモリ管理部1110、または、管理OS情報管理部1111を介して管理OS情報を参照して現在のメモリ構成を把握し、メモリ再構成要求と比較することにより差異を求め、さらに、アドレス変換などを計算することで、それぞれのOSに対するメモリ構成変更要求を生成することができる。
メモリ再構成要求の別の表現としては、メモリの増減量や、マシンアドレス空間の範囲で指定する方法がある。
例えば、「OS1は1GBの容量を削減し、OS2は1GBの容量を増加させる」や「OS1は高位1GBを削減し、OS2は1GBの容量を増加させる」「OS1はOS内の1GB〜2GBの容量を削減し、OS2は1GBの容量を増加させる」などである。
これらは、OS毎に命令を分割し、それぞれのOSに対するメモリ構成変更要求を生成することができる。
さらに、これらの要求は、複数のより小さな要求を表すメモリ構成変更要求に分割して生成することができる。
例えば、「OS1は1GBの容量を削減する」という要求は、「OS1は256MBの容量を削減する」という要求4つに分割し、生成することもできる。
メモリ再構成要求解析部1130は、生成したメモリ構成変更要求を、要求するOS1200-i(i=1〜n)に対応するメモリ構成変更要求制御部1230-i(i=1〜n)に発行する。
これにより、個々のOSのメモリ変更を促し、メモリ再構成要求に対する構成変更処理の一連を行うことができる。
生成したメモリ構成変更要求を発行する方法には、同時に複数のメモリ構成変更要求を発行する方法、1つずつ順序だてて生成したメモリ構成変更要求を発行する方法がある。
さらに、生成したメモリ構成変更要求を発行する方法には、メモリを削減するか、増加させるかの情報を利用して、発行させる順序を決定することができる。
例えば、削減する要求を先に発行し、増加させる要求を削減する要求の処理終了後に発行させるといったこととができる。また、別の例として、一部の削減する要求を先に発行し削減させた後、できた未使用領域の容量に対応する増加要求を発行する。これを1サイクルとして、サイクルを繰り返すことで全部の要求を発行する。といったことができる。さらに、別の例としては、前記の1サイクルで行う例において、あるサイクルの増加要求を発行するときに、別のサイクルの削減要求を発行するという、サイクル間の発行タイミングを重ねるといったことができる。
さらに、生成したメモリ構成変更要求を発行する方法には、発行するOSの情報を利用して、発行させる順序を決定することができる。
例えば、特定のOSに対する要求は同時に発行しないといったことができる。
メモリ再構成要求解析部1130は、メモリ構成変更要求制御部1230-i(i=1〜n)を通してメモリ構成変更要求の処理結果が報告された場合、必要に応じて、オペレータに結果を伝えることができる。
メモリ再構成要求解析部1130は、すべての生成したメモリ構成変更要求に対して結果が返答された場合、オペレータへ最終結果を報告する。
次に、本実施の形態の動作について詳細に説明する。
図17の構成図、および、図18のフローチャート図を参照して、メモリ再構成要求を受信したときの処理について説明する。
メモリ再構成要求解析部1130が、メモリ再構成要求を受信することで、メモリ再構成処理が開始される。
メモリ再構成要求解析部1130は、個々のOSへメモリ構成変更を要求できる量に、メモリ再構成要求からメモリ構成変更要求を生成する(ステップS801)。
メモリ再構成要求解析部1130は、生成したメモリ構成変更要求のうち、メモリ構成変更要求制御部1230-i(i=1〜n)に発行していない要求があるかどうかをチェックする(ステップS802)。
チェックの方法は、例えば、要求にチェックフラグをつけておいて管理する方法がある。また別の例として、リスト構造として記憶しておき、発行済み箇所を覚えておくことで、発行済み箇所からのリストの前後によりチェックする方法がある。また、別の例として、発行済みリストと発行前リストを作成し、管理する方法がある。
メモリ再構成要求解析部1130は、未発行のメモリ構成変更要求が存在した場合、未発行のメモリ構成変更要求のうち、前述のさまざまな基準で選択されるメモリ構成変更要求を、メモリ構成変更要求を要求するOS1200-i(i=1〜n)に対応するメモリ構成変更要求制御部1230-i(i=1〜n)に発行し、結果を得る(ステップS803)。
ステップS803において、結果を途中結果としてオペレータに報告してもよい。
メモリ再構成要求解析部1130は、未発行のメモリ構成変更要求が存在しない場合、最終結果をまとめて、オペレータへ報告する(ステップS803)。
これにより、メモリ再構成要求を受信したときの処理が完了する。
次に、第5の実施の形態の効果について説明する。
第1乃至第4の実施の形態は、OSに直接要求が届いている。しかし、実メモリ管理、さらに、仮想計算機環境管理においては、仮想計算機環境の制御用プログラムであるVMMが一元制御しているのが一般的である。すなわち、制御するオペレータは通常、VMMに関連付けられるべきで、VMMに制御情報を発行する。第5の実施の形態は、上記のような状況に対応するためのものである。例えば、特許文献1の実施例で説明されている構成テーブルによるシステム変更要求などに対応する方式になる。
本実施の形態の構成の利点としては、VMMのオペレータしかメモリの構成を変更する要求を発行できない点である。すなわち、仮想計算機環境全体を管理するVMMとしてのオペレータと個々のOSを管理するOSとしてのオペレータ(管理者)を明確に分けることができる点である。
次に、上述した第1乃至第5の実施の形態に係る仮想計算機システムを実現する実計算機システムの実施例について説明する。
図19は実計算機システムの第1の実施例のブロック図であり、メモリ装置1、および、メモリ制御装置2と、演算装置3と、入出力装置4、および、補助記憶装置5とそれらを接続するバス6とから構成される。
前述した各実施の形態におけるVMM1000と各OS1200-i(i=1〜n)は、補助記憶装置5に保存され、実行時に入出力装置4、および、メモリ制御装置2を通してメモリ装置1に展開され、演算装置3により動作する。すなわち、通常のコンピュータプログラムとして動作する。メモリ空間対応関係テーブル/管理OS情報テーブル/利用OS情報テーブル10は、管理OS情報、利用OS情報、および、メモリ対応表を管理している。これは前述の通り、3つの表を一まとめとして管理している場合の一例を表している。実メモリアドレスは、実メモリ空間でのアドレス値を示す。管理OS、利用OSは、実メモリ空間において、それぞれ、管理権、利用権を持っているOSのIDを示す。これらのメモリ空間に対して、実メモリ管理部で、管理OS、利用OSへ対応付けし割り当てたマシンアドレスが、それぞれ、管理OSアドレス、利用OSアドレスである。nullは、管理OSや利用OSが存在しないことや、アドレス対応関係が無いことを示している。
まず、VMM1100が先行して展開され動作する。次に、VMM1100上に、管理用のOS(ここでは、OS1000-1とする)を起動する。このときに、VMM1100、及び、実メモリ管理部1110、実メモリ構成制御部1120、および、それらに含まれる各機能を用いて、管理用OS1000-1の管理OS情報を変更し、メモリ領域を割当てる。
管理用OS1000-1がメモリアクセスする度に、利用OS情報を参考にしながら、VMM1100、及び、実メモリ管理部1110、実メモリ構成制御部1120はメモリ領域のアクセスチェックにより、実割当てを行う。
また、その後、ゲストOSと呼ばれる、実際に利用環境として用いるOS1000-i(i=2〜n)が起動要求、停止要求が繰り返され、複数のVMが構築される。このときに、VMM1100、及び、実メモリ管理部1110、実メモリ構成制御部1120の各処理部が連動し、実メモリ領域の管理をし、各OS1000-i(i=2〜n)に対して管理OS情報、利用OS情報によるメモリアクセスを制御する。
これにより、各仮想計算機環境に対して効率よく、かつ、整合性の取れたメモリ割当て、メモリ再構成が実現できる。
また、別の例として、VMMはホストOSと呼ばれるプログラムが起動した後、ホストOS上、もしくは、同列に起動し、各VMが起動することもある。
次に図20は、実計算機システムの第2の実施例のブロック図である。この実施例では、VMM1100はコ・プロセッサ7により実行される。VMM1100のプログラム本体は、ROMやFLASH RAMなどのコ・プロセッサ用の記憶装置8に記憶されている。すなわち、VMM1000がファームウェアとして提供される。
計算機システム起動後、ファームウェアが起動し、バス制御などを開始し、論理区画を作成する。論理区画により分割された環境1つがVMに相当する。このときに、論理区画は設定として記憶している場合もあれば、コマンド入力により作成することもある。論理区画ごとにOSの起動、終了が制御可能になり、複数のOSが起動できる。
コ・プロセッサ7上のVMM1100を通して、メモリ領域を論理区画へ割り当て、再構成、解放するときに、第1乃至第5の実施の形態を通し、各論理区画に対して効率よく、かつ、整合性の取れたメモリ割当て、メモリ再構成が実現できる。
次に図21は、実計算機システムの第3の実施例のブロック図である。この実施例では、VMM1100はメモリ装置1、および、メモリ制御装置2に展開され実行される。VMM1100の多くの機能はメモリ装置1に展開され、実メモリ管理部1110、実メモリ構成制御部1120がメモリ制御装置2に展開される。これは、Memory Management Unit(MMU)と呼ばれるメモリ制御用プロセッサに、本発明のメモリ区画制御機能を実現することに相当する。VMM1100はMMUによるサポートを利用しながら動作する。それ以外の動作は、第1の実施例と同じである。