JP4862770B2 - 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム - Google Patents

仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム Download PDF

Info

Publication number
JP4862770B2
JP4862770B2 JP2007189336A JP2007189336A JP4862770B2 JP 4862770 B2 JP4862770 B2 JP 4862770B2 JP 2007189336 A JP2007189336 A JP 2007189336A JP 2007189336 A JP2007189336 A JP 2007189336A JP 4862770 B2 JP4862770 B2 JP 4862770B2
Authority
JP
Japan
Prior art keywords
memory
virtual machine
management
area
memory area
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.)
Expired - Fee Related
Application number
JP2007189336A
Other languages
English (en)
Other versions
JP2009026117A (ja
Inventor
智士 内田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2007189336A priority Critical patent/JP4862770B2/ja
Publication of JP2009026117A publication Critical patent/JP2009026117A/ja
Application granted granted Critical
Publication of JP4862770B2 publication Critical patent/JP4862770B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、1台の計算機上で複数のOSを同時に動作させる仮想計算機システムにおけるメモリ管理方式に関し、特に、仮想計算機に割り当てるメモリを動的に変更可能なメモリ管理方式に関する。
1台の計算機上で複数のオペレーティングシステム(OS)を動作させる仮想計算機技術が知られている。
仮想計算機技術は、CPU、メモリ、ストレージ、ネットワークなど様々な計算機資源の利用を時間や資源の区切りで分割し、分割された資源利用区画を元に、複数の仮想的な計算機環境(VM)を構築し、複数のOSを動作させる。
仮想計算機に対して利用期間の割当などを制御し、それぞれの仮想的な計算機資源への要求と実際の物理資源への処理との対応付けなどを行って、全体の仮想計算機環境を制御している処理部を仮想計算機モニタ(VMM)やハイパバイザ(Hypervisor)などと呼ぶ。
VMは、一般に、VMMにより実現された仮想計算機空間のことを指す。
実際に仮想的な計算機環境を実現するために制御しているのはVMMである。
VMMのうち、個々の仮想的なハードウェアアーキテクチャをエミュレーションする部分をVMと呼ぶこともある。
またVMは、機能がOSと密接に関わりを持つ場合もある。
例えば、後述において、本件の主題となるメモリ再構成処理において、メモリを増減させるという処理は、VM単体のメモリエミュレーションの管理部分を修正するという機能とOSのHot Add、Hot RemoveなどのOSメモリ管理における増減機能を組み合わせる方法と、Xenでのballoon機能などのようにOSと結びつけてOSと一体化した機能として実現される方法などが存在する。
本件では、これらを踏まえ、OSとVMに含まれる機能を明確に分類せず、特に明記しない場合は、OSの機能として記載することにする。
ただし、前述のように必要に応じてVMとして機能を提供することが可能である。
メモリ管理における仮想計算機技術による仮想化の例を図1に示す。
VMMは、実装された物理メモリ全体を把握し、管理する。
この物理メモリのアドレス空間を実メモリ空間と呼ぶこととする。
VMMは、実メモリ空間を分割し、各OSへ割当てる。
OSに割当てられたメモリ空間は、OSからしてみると一連の実メモリ空間を認識しているときと同様に動作する。
すなわち、OSは、メモリ空間が0番地から割当てられているように認識する。
VMMにより分割され、OSから見える物理アドレス空間をマシンアドレス空間と呼ぶこととする。
さらに、OSはプログラム(AP)ごとにアドレス空間を変換して提供している。これをプロセス空間と呼ぶこととする。
すなわち、VMMが実メモリ空間とマシンメモリ空間の変換テーブルを管理し、複数のマシンメモリ空間を作成できるため、複数のOSのメモリ空間が実現できる。
仮想計算機技術と同様の技術は、物理的な装置単位に計算資源を予め区画分割する物理パーティション、物理パーティションの概念を論理的な計算資源に適用した論理パーティション技術としても知られている。
パーティション技術により、分けられた計算機環境を論理区画と呼び、論理区画を作成するための制御部をハイパバイザと呼ぶ。
これらの技術も仮想的な計算機環境を複数作成する技術であり、仮想計算機技術として同一視することができる。
以後、VMと区画、VMMとハイパバイザをそれぞれ同一視し、主に、VMとVMMとして説明する。
ただし、従来技術の紹介においては、引用参考文献で利用している例・用語を用いて説明する。
前記仮想計算機環境では、時間や区画に対して配分や割当を変更するだけで仮想計算機環境を変更できるという利点を活かして、計算機資源を有効活用することが行われる。
すなわち、OS上で動作しているアプリケーションの要求に合わせて動的に仮想計算機資源の配分や区画を変更し、仮想計算機環境を動的に再構成するということが行われる。
本発明は、この仮想計算機環境の動的な再構成において、メモリ資源の再構成処理に関する。
仮想計算機環境において、メモリ資源の動的な再構成は、通常、次の手順で行われる。
割当てられているメモリ容量を削減するOSにおいて、データの一貫性を保つために、削減するメモリ領域における使用中メモリ領域を外部記憶装置へスワップアウト/ページアウトにより退避させて、削減するメモリ領域全体を未使用状態に移行させる。
メモリの未使用状態への移行後、メモリ領域をOS内部の管理から除外するというメモリ解放処理が行われ、正式にVMM上の管理からメモリ領域の使用状態が未使用状態へ変更される。
割当てられているメモリ容量を削減するOSにおけるメモリ解放後、割当てられているメモリ容量を増加させるOSにおいて、VMMから未使用状態のメモリ領域を必要な容量だけ確保し、確保したメモリ領域をOS内部の管理に追加させるというメモリ拡張処理が行われる。
また、仮想計算機として割当てるためのメモリ空間に連続性を必要とするメモリ管理手法では、メモリ容量を増加させる前に、増加させるOSのメモリの使用領域と追加領域を連続させるために、メモリの移動処理が行われる。
メモリの移動処理は、メモリアドレスの連続性を必要とするメモリ管理手法に特化して付随するものであり、メモリ再構成の補助的要素となるので、本件では省略することとする。
メモリ再構成の1手段が、特許文献1に記載されている。
特許文献1では、VMと記載されているため、OSでなくVMと記載して説明する。
特許文献1によると、動的メモリ再構成処理におけるメモリ内の各VM領域の移り変わりは、図2に示されるようになる。
ここでは、VM1にアドレス0から2GB、VM2に2GBから1GBのメモリ領域が割当てられているときに、VM1を1GBに削減し、VM2を2GBに増加させる場合を例に説明する。
特許文献1によると、メモリ構成の変更要求は、VMMに設定され、VMMから各VMへ対応した変更要求を発行する。
図2の例では、VMMが全体の構成変更要求イベントを受取ると、まずVM1において2GBから1GBへ削減する要求が発行される。
VM1は、前記削減要求に従い、自分が管理しているメモリ領域をアドレス値の高いメモリ(高位アドレス)空間から、削除要求で要求されているメモリ容量分だけ、管理から排除、すなわち、未接続状態に変更する。
このとき、当該メモリ領域が使用中である場合、スワップアウト/ページアウトによりメモリ内容を外部記憶装置などへ退避させる必要がある。
前記の動作により、当該メモリ領域はVMから使用されない未使用状態になり、図2(a)の初期状態から図2(b)の状態と変更される。
次に、VMMは、VM2の高位アドレス側に未使用領域が存在しないため、VM2のメモリ領域を1GBからの未使用領域に移動した後、VM2に2GBから1GB分のメモリ領域の増加を要求する。ここで、メモリ移動を要したのは、例えば、実メモリ空間とマシンアドレス空間の対応付けが1つのレジスタの加減算でのみで計算されるような、メモリ空間の連続性が必要となるメモリ管理機構を用いているためである。
VM2は、前記増加要求に従い、自分が管理しているメモリ領域の高位アドレスに1GBのメモリ空間を接続状態に変更し拡張する。
最後に、VMMは、それぞれのVMをCPUにディスパッチすることで、メモリ構成変更が終了し、図2(c)の状態となる。
このとき、スワップアウト/ページアウトのような外部記憶への退避処理は、通常プログラムと比べて、一般的に、高負荷、かつ、時間を要する処理である。
そのため、メモリ領域解放処理はこの退避処理に依存して遅延し、その結果、メモリ再構成処理に時間を要するという問題がある。
この問題を解決する一手段が、特許文献2に開示されている。
図3に特許文献2の構成図を示す。
特許文献2は、論理パーティショニング技術であり、上記のVMの機能に相当する機能(アドレス管理機能)はOSの機能として提供されている。
特許文献2の説明は、OSと記載して説明する。
特許文献2によると、資源一時切り離し制御部114により、あるOSからメモリ領域の切り離しが宣言されると、メモリ領域を直接ユーザが使用できない一時使用可能領域に変更する。一時使用可能領域とは、予約された特殊な領域であり、通常、OSにメモリ割当てができない。これに対して、OSにメモリ割当が可能で、活用できる通常の領域をユーザ使用可能領域という。一時使用可能領域を、データを完全に解放するまで使用中状態であり、新規割り当て不可であるが、割当て領域数に数えない領域として用いている。また、資源切り離し制御部115により、OS内部のメモリ管理情報から削除されたときに真にメモリ領域の解放を行いハイパバイザから情報が未使用状態に変更される。資源接続制御部116により、切り離し宣言され、実際に切り離し中であるメモリ領域を含め、空きメモリ領域を別のOSへ割り当てることが可能になる。
一時使用可能領域を設け、ユーザ使用可能領域と分けて管理し、ユーザ使用可能領域において領域解放時に一時使用可能領域の未使用領域と切り替えて割当を制御できる機構を導入することにより、スワップアウト/ページアウトなど切り離しに要する時間を無視して、別のOSへメモリ資源を割り当てることを可能とし、メモリ再構成の速度を向上させることが可能となる。
また、スワップアウト/ページアウトなどの処理は、切り離しているOSのシステムからは参照可能状態にあるため、負荷を下げながら他に負荷影響を与えないように実行することが可能になる。
図4に特許文献2の計算機資源動的割り当て変更処理の流れをシーケンス図で示す。
特許文献2によると、メモリ構成の変更要求は、コマンドという形で、各OSへ発行される。
論理区画1上でのメモリ削減要求のコマンドが投入されると(201)、論理区画1からハイパバイザへメモリ領域の切り離し開始通知が通知される(202)。
ハイパバイザは、当該メモリ領域を一時使用可能領域として扱うように管理情報を変更する(203)。
このとき、当該メモリ領域分が一時使用可能領域になった分だけ、一時使用可能領域からユーザ使用可能領域に未使用領域が移されることになる。
ハイパバイザは、論理区画1へメモリ領域の切り離しを受け付けたことを応答し(204)、論理区画1は、コマンド受付結果をオペレータに表示する(205)。
次に、論理区画2にて、メモリ増加要求のコマンドが投入されると(206)、論理区画2からハイパバイザへメモリ領域の接続要求が通知される(207)。
ハイパバイザは、ユーザ使用可能領域の未接続状態にある領域から必要分を確保し、管理情報を接続状態、すなわち、増加させるOSの利用状態へ変更する(208)。
ハイパバイザは、論理区画2へメモリ領域の接続が完了したことを応答し(209)、論理区画2は、コマンド完了結果をオペレータに表示する(210)。
論理区画2のメモリ増加の間、平行して、論理区画1はページアウト処理を実行することできる。また、このとき、ページアウト処理の速度を規制することで、負荷の上昇も抑えることが可能になる。
論理区画1でページアウト処理により解放メモリ領域のデータ退避が完了したとき、論理区画1はメモリ領域の切り離し要求をハイパバイザへ通知する(211)。
ハイパバイザは、管理情報の当該メモリ領域を使用状態から未使用状態へ変更し、管理情報を初期化し(212)、切り離しが完了したことを論理区画1へ通知する(213)。
論理区画1は、メモリ削減要求のコマンドが完了したことをオペレータへ表示する。
以上の流れにより、解放中のメモリ領域を使用領域と切り離して制御することができ、メモリ再構成時の速度を向上させることができる。
特開平6-110715号公報 特開2005-148875号公報
特許文献2に示されるメモリ動的変更方法には以下の問題がある。
動的なメモリ再構成処理の処理時間短縮が図れるものの、メモリ変更量に相当する一時使用可能領域を必要とするため、メモリ領域の常時活用がユーザ使用可能領域分に制限されてしまうことがある。
一時使用可能領域分は、活用したい要求があっても使用することができない。そのため、メモリ再構成要求が頻繁に起きない場合、発生するメモリ再構成要求のために、ほとんどの時間、一時使用可能領域分を未使用状態として待機させておくことになり有効的に活用されない。
また、1回のメモリ変更量に相当する一時使用可能領域がないと特許文献2の手法は有効に機能しない。
例えば、一時使用可能領域が512MB分確保してあり、他の領域はユーザ使用可能領域として利用している状態で1GBのメモリ容量変更を使用とした場合、メモリ未使用領域容量が足りないため、増加側の論理区画はコマンド失敗になる。
増加要求が成功するためには、削減側の論理区画で512MB分の解放完了を待つ必要があるが、メモリの解放は削減側のOSの負荷に応じて自由に作業速度を決定できるため、いつ終わるか明示的でない。
また、一度に512MB分のメモリ解放処理を実行したとしても、メモリ領域解放処理はこの退避処理に依存して遅延し、その結果、メモリ再構成処理に時間を要するという問題を復元させる。
このように、一時使用可能領域の容量設定がメモリ変更時の動作に大きな影響を持つようになる。
[発明の目的]
本発明の目的は、仮想計算機に対するメモリの動的割付処理において、メモリ領域を有効活用しつつ、メモリ再構成処理に要する時間を短縮することにある。
本発明の仮想計算機システムにおけるメモリ管理方式は、実計算機上に複数の仮想計算機を実現し、各仮想計算機のメモリに実計算機のメモリの一部を割り当てる仮想計算機システムにおけるメモリ管理方式において、前記複数の仮想計算機を制御する仮想計算機制御部に実メモリ管理部と実メモリ構成制御部とを備え、前記実メモリ管理部は、実計算機の所定サイズのメモリ領域毎に、そのメモリ領域の管理権を持つ仮想計算機とそのメモリ領域の利用権を持つ仮想計算機とを管理するものであり、前記実メモリ構成制御部は、メモリ領域の管理権を持つ仮想計算機から当該メモリ領域の管理権を剥奪するメモリ解放宣言手段と、仮想計算機に対してメモリ領域の管理権を付与した時点で当該メモリ領域の増加処理の完了を仮想計算機に通知するメモリ拡張制御手段と、メモリ領域の利用権を持つ仮想計算機からメモリ領域を解放させると共に利用権を剥奪するメモリ解放制御手段と、メモリ領域へのアクセスを利用権を持つ仮想計算機に制限する手段であって、利用権を持たないが管理権を持つ仮想計算機からのメモリ領域に対するメモリアクセス時、そのメモリ領域の利用権を持つ他の仮想計算機が存在していれば、前記メモリ解放制御手段によって当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、要求元の仮想計算機に利用権を付与するメモリアクセス監視手段とを有する。
本発明の仮想計算機システムにおけるメモリ管理方法は、実計算機上に複数の仮想計算機を実現し、各仮想計算機のメモリに実計算機のメモリの一部を割り当てる仮想計算機システムであって、実計算機の所定サイズのメモリ領域毎に、そのメモリ領域の管理権を持つ仮想計算機とそのメモリ領域の利用権を持つ仮想計算機とを管理する実メモリ管理部を有する仮想計算機システムにおけるメモリ管理方法であって、a)メモリ領域の管理権を持つ仮想計算機からメモリ領域の管理権を剥奪するステップと、b)仮想計算機から管理権を剥奪したメモリ領域の管理権を別の仮想計算機に付与し、メモリ領域の増加処理の完了を当該別の仮想計算機に通知するステップと、c)利用権を持たないが管理権を持つ仮想計算機からのメモリ領域に対するメモリアクセス時、当該メモリ領域の利用権を持つ他の仮想計算機が存在していれば、当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、要求元の仮想計算機に利用権を付与してメモリアクセスを許可するステップとを含む。
本発明のプログラムは、実計算機上に複数の仮想計算機を実現し、各仮想計算機のメモリに実計算機のメモリの一部を割り当てる仮想計算機システムであって、実計算機の所定サイズのメモリ領域毎に、そのメモリ領域の管理権を持つ仮想計算機とそのメモリ領域の利用権を持つ仮想計算機とを管理する実メモリ管理部を備えた仮想計算機システムにおける前記複数の仮想計算機を制御する仮想計算機制御部を構成するコンピュータを、メモリ領域の管理権を持つ仮想計算機から当該メモリ領域の管理権を剥奪するメモリ解放宣言手段と、仮想計算機に対してメモリ領域の管理権を付与した時点で当該メモリ領域の増加処理の完了を仮想計算機に通知するメモリ拡張制御手段と、メモリ領域の利用権を持つ仮想計算機からメモリ領域を解放させると共に利用権を剥奪するメモリ解放制御手段と、メモリ領域へのアクセスを利用権を持つ仮想計算機に制限する手段であって、利用権を持たないが管理権を持つ仮想計算機からのメモリ領域に対するメモリアクセス時、そのメモリ領域の利用権を持つ他の仮想計算機が存在していれば、前記メモリ解放制御手段によって当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、要求元の仮想計算機に利用権を付与するメモリアクセス監視手段として機能させる。
本発明によれば、メモリ再構成処理に要する時間を短縮することができる。その理由は、或る仮想計算機に割り当てられているメモリ領域を別の仮想計算機に割り当てる場合、当該メモリ領域の管理権を移譲するだけでメモリ再構成処理が見かけ上完了し、メモリ解放処理を必要とするメモリ領域の利用権の移譲は、管理権の移譲を受けた仮想計算機が当該メモリ領域をアクセスした際に行われるためである。
さらに、特許文献2におけるような予約された予備領域を必要としないため、全メモリ領域を有効に活用することができる。
さらに、メモリ解放処理に伴うページアウト/スワップアウト処理などのデータ退避処理は、再構成するメモリ全体の容量と関係なく、ページなどの単位で実施されるため、メモリ再構成のための処理における負荷分散が行える。そのため、通常の業部プロセスへの高負荷処理による影響も削減することができる。
本発明の実施の形態を詳細に説明するのに先立って、その概要を説明する。
本発明は、実計算機のメモリ領域に対する仮想計算機の権限として、管理権と利用権という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の実施例と同じである。
本発明は、仮想計算機技術を用いたサーバ統合やシンクライアント・サーバに、より効率的にメモリを活用するために適用できる。また、仮想計算機技術によるセキュリティを向上させる組込み端末に、より効率的にメモリを活用するために適用できる。また、開発環境と事務環境などを混在させたり、セキュリティ目的として導入したりする仮想計算機技術製品に、より効率的にメモリを活用するために適用できる。
仮想計算機環境におけるメモリ区画分割と仮想化空間への対応付けを示す概念図である。 VMの動的メモリ構成変更の過程を示すメモリ情報の概念図である。 特許文献1のメモリ再構成手法の構成を示すブロック図である。 特許文献1のメモリ再構成手法の動作過程を示すシーケンス図である。 本発明の第1の実施の形態の構成を示すブロック図である。 本発明の第1の実施形態におけるメモリ構成変更処理の動作を示すフローチャートである。 本発明の第1の実施の形態における利用OSの選択処理の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOSのメモリ解放処理の動作を示すフローチャートである。 本発明の第1の実施の形態におけるOSのメモリアクセス判定の動作を示すフローチャートである。 本発明の第1の実施の形態におけるメモリ再構成の動作過程を示すシーケンス図である。 本発明の第1の実施の形態におけるメモリ再構成の過程を示すメモリ情報の概念図である。 本発明の第2の実施の形態における利用OSの選択処理の動作を示すフローチャートである。 本発明の第1の実施の形態における管理OS、利用OSの変化の過程を示す管理テーブルの概念図である。 本発明の第2の実施の形態における管理OS、利用OSの変化の過程を示す管理テーブルの概念図である。 本発明の第3の実施の形態におけるOSのメモリアクセス判定の動作を示すフローチャートである。 本発明の第4の実施の形態におけるメモリ構成変更処理の動作を示すフローチャートである。 本発明の第5の実施の形態の構成を示すブロック図である。 本発明の第5の実施の形態におけるVMMからのメモリ再構成要求を処理する動作を示すフローチャートである。 本発明の仮想計算機システムを実現する実計算機システムの第1の実施例のブロック図である。 本発明の仮想計算機システムを実現する実計算機システムの第2の実施例のブロック図である。 本発明の仮想計算機システムを実現する実計算機システムの第3の実施例のブロック図である。
符号の説明
1100…仮想計算機モニタ(VMM、hypervisor)
1110…実メモリ管理部
1111…管理OS判定部
1112…利用OS判定部
1120…実メモリ構成制御部
1121…メモリ解放宣言部
1122…メモリ解放制御部
1123…メモリ拡張制御部
1124…メモリアクセス監視部
1130…メモリ再構成要求解析部
1200−i(i=1〜n)…オペレーティングシステム(OS)、または、仮想計算機(VM)
1210−i(i=1〜n)…OS(VM)内のメモリ管理部
1220−i(i=1〜n)…OS(VM)内のメモリアクセス制御部
1230−i(i=1〜n)…OS(VM)内のメモリ構成変更要求制御部
1241−i(i=1〜n)…OS(VM)内のメモリ解放領域探索部
1242−i(i=1〜n)…OS(VM)内のメモリ解放部
1243−i(i=1〜n)…OS(VM)内のメモリ拡張部
1…主記憶装置
2…主記憶制御装置
3…演算装置
4…入出力制御装置
5…補助記憶装置
6…バス
7…コ・プロセッサ
8…VMM記憶装置
9…仮想計算機対応メモリ管理機能付主記憶制御装置
10…管理OS情報テーブル、および、利用OS情報テーブル

Claims (33)

  1. 実計算機上に複数の仮想計算機を実現し、各仮想計算機のメモリに実計算機のメモリの一部を割り当てる仮想計算機システムにおけるメモリ管理方式において、
    前記複数の仮想計算機を制御する仮想計算機制御部に実メモリ管理部と実メモリ構成制御部とを備え、
    前記実メモリ管理部は、実計算機の所定サイズのメモリ領域毎に、そのメモリ領域の管理権を持つ仮想計算機とそのメモリ領域の利用権を持つ仮想計算機とを管理するものであり、
    前記実メモリ構成制御部は、メモリ領域の管理権を持つ仮想計算機から当該メモリ領域の管理権を剥奪するメモリ解放宣言手段と、仮想計算機に対してメモリ領域の管理権を付与した時点で当該メモリ領域の増加処理の完了を仮想計算機に通知するメモリ拡張制御手段と、メモリ領域の利用権を持つ仮想計算機からメモリ領域を解放させると共に利用権を剥奪するメモリ解放制御手段と、メモリ領域へのアクセスを利用権を持つ仮想計算機に制限する手段であって、利用権を持たないが管理権を持つ仮想計算機からのメモリ領域に対するメモリアクセス時、そのメモリ領域の利用権を持つ他の仮想計算機が存在していれば、前記メモリ解放制御手段によって当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、要求元の仮想計算機に利用権を付与するメモリアクセス監視手段とを有することを特徴とする仮想計算機システムにおけるメモリ管理方式。
  2. 前記メモリ解放宣言手段は、管理権を剥奪したメモリ領域の利用権が管理権を剥奪した仮想計算機以外の他の仮想計算機に付与されている場合、前記メモリ解放制御手段によって、管理権を剥奪した仮想計算機から当該メモリ領域を解放させることを特徴とする請求項1記載の仮想計算機システムにおけるメモリ管理方式。
  3. 前記メモリ解放宣言手段は、管理権を剥奪したメモリ領域の利用権が管理権を剥奪した仮想計算機以外の他の仮想計算機に付与されている場合、前記メモリ解放制御手段によって当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、管理権を剥奪した仮想計算機に利用権を付与することを特徴とする請求項1記載の仮想計算機システムにおけるメモリ管理方式。
  4. 前記メモリアクセス監視手段は、管理権を持たず利用権を持つ仮想計算機のメモリ領域に対するメモリアクセスの統計値が利用権を剥奪する条件を満たした場合に、前記メモリ解放制御手段によって当該仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪することを特徴とする請求項1ないし3の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  5. 前記メモリアクセス監視手段は、前記条件を満たすか否かの判定を仮想計算機からメモリ領域に対するメモリアクセス毎に行い、前記条件を満たしたことによってメモリ領域の解放を行った場合には、ページアウト/スワップアウトされた領域へのアクセスに変更するためにメモリ再アクセス要求を起こさせる結果を生成することを特徴とする請求項4記載の仮想計算機システムにおけるメモリ管理方式。
  6. 前記仮想計算機は、自仮想計算機のメモリ領域の管理権が剥奪された時点で当該メモリ領域に関して自仮想計算機で保有するメモリ情報の一部を当該メモリ領域が解放された後の状態に合うように変更し、当該メモリ領域の利用権が剥奪された時点でメモリ情報の残りの部分を当該メモリ領域が解放された後の状態に合うように変更することを特徴とする請求項1ないし5の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  7. 前記仮想計算機は、自仮想計算機のメモリ領域の管理権が剥奪された時点で当該メモリ領域に対応するメモリ利用形態を変更することを特徴とする請求項1ないし6の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  8. 前記仮想計算機に、自仮想計算機に対するメモリ構成変更要求を制御するメモリ構成変更要求制御手段を備え、
    前記仮想計算機制御部に、仮想計算機システムに対するメモリ再構成要求を解析し、前記実メモリ管理部で管理される情報によって把握される現在のメモリ構成と比較して、個々の仮想計算機に対するメモリ構成変更要求を生成するメモリ再構成要求解析手段を備えることを特徴とする請求項1ないし7の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  9. 前記メモリ拡張制御手段は、仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、管理権が付与されていないメモリ領域の中から選択することを特徴とする請求項1ないし8の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  10. 前記メモリ拡張制御手段は、仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、管理権および利用権が付与されていないメモリ領域の中から選択することを特徴とする請求項1ないし8の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  11. 前記メモリ拡張制御手段は、仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、利用権が付与されていないメモリ領域から優先的に選択することを特徴とする請求項1ないし8の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  12. 前記仮想計算機は、自仮想計算機のメモリに関する情報を管理するメモリ管理手段と、実計算機のメモリとの対応付けが必要なメモリアクセスに関して利用権の有無を前記メモリアクセス監視部へ問い合わせるメモリアクセス制御手段と、メモリ削減要求に応じて解放に適するメモリ領域を決定し、該決定したメモリ領域を前記メモリ解放宣言部に通知するメモリ解放領域探索手段と、前記メモリ解放制御手段からの要求に従って解放するメモリ領域に関するメモリ情報を前記メモリ管理手段から削除するメモリ解放手段と、拡張するメモリ領域の取得を前記メモリ拡張制御手段に対して要求し、取得したメモリ領域に関するメモリ情報を前記メモリ管理手段に追加するメモリ拡張手段とを備えることを特徴とする請求項1ないし11の何れか1項に記載の仮想計算機システムにおけるメモリ管理方式。
  13. 実計算機上に複数の仮想計算機を実現し、各仮想計算機のメモリに実計算機のメモリの一部を割り当てる仮想計算機システムであって、実計算機の所定サイズのメモリ領域毎に、そのメモリ領域の管理権を持つ仮想計算機とそのメモリ領域の利用権を持つ仮想計算機とを管理する実メモリ管理部を有する仮想計算機システムにおけるメモリ管理方法であって、
    a)メモリ領域の管理権を持つ仮想計算機からメモリ領域の管理権を剥奪するステップと、
    b)仮想計算機から管理権を剥奪したメモリ領域の管理権を別の仮想計算機に付与し、メモリ領域の増加処理の完了を当該別の仮想計算機に通知するステップと、
    c)利用権を持たないが管理権を持つ仮想計算機からのメモリ領域に対するメモリアクセス時、当該メモリ領域の利用権を持つ他の仮想計算機が存在していれば、当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、要求元の仮想計算機に利用権を付与してメモリアクセスを許可するステップとを含むことを特徴とする仮想計算機システムにおけるメモリ管理方法。
  14. 前記ステップaにおいて、管理権を剥奪したメモリ領域の利用権が管理権を剥奪した仮想計算機以外の他の仮想計算機に付与されている場合、管理権を剥奪した仮想計算機から当該メモリ領域を解放させることを特徴とする請求項13記載の仮想計算機システムにおけるメモリ管理方法。
  15. 前記ステップaにおいて、管理権を剥奪したメモリ領域の利用権が管理権を剥奪した仮想計算機以外の他の仮想計算機に付与されている場合、当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、管理権を剥奪した仮想計算機に利用権を付与することを特徴とする請求項13記載の仮想計算機システムにおけるメモリ管理方法。
  16. d)管理権を持たず利用権を持つ仮想計算機のメモリ領域に対するメモリアクセス時、当該メモリ領域に対する当該仮想計算機からのメモリアクセスの統計値が利用権を剥奪する条件を満たした場合に、当該仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪することを特徴とする請求項13ないし15の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  17. 前記ステップdにおいて、前記条件を満たしたことによってメモリ領域の解放を行った場合には、ページアウト/スワップアウトされた領域へのアクセスに変更するためにメモリ再アクセス要求を起こさせる結果を生成することを特徴とする請求項16記載の仮想計算機システムにおけるメモリ管理方法。
  18. 前記仮想計算機は、自仮想計算機のメモリ領域の管理権が剥奪された時点で当該メモリ領域に関して自仮想計算機で保有するメモリ情報の一部を当該メモリ領域が解放された後の状態に合うように変更し、当該メモリ領域の利用権が剥奪された時点でメモリ情報の残りの部分を当該メモリ領域が解放された後の状態に合うように変更することを特徴とする請求項13ないし17の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  19. 前記仮想計算機は、自仮想計算機のメモリ領域の管理権が剥奪された時点で当該メモリ領域に対応するメモリ利用形態を変更することを特徴とする請求項13ないし18の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  20. e)前記複数の仮想計算機を制御する仮想計算機制御部が、仮想計算機システムに対するメモリ再構成要求を解析し、前記実メモリ管理部で管理される情報によって把握される現在のメモリ構成と比較して、個々の仮想計算機に対するメモリ構成変更要求を生成するステップと、
    f)前記仮想計算機が、自仮想計算機に対するメモリ構成変更要求を制御するステップとを含むことを特徴とする請求項13ないし19の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  21. 仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、管理権が付与されていないメモリ領域の中から選択することを特徴とする請求項13ないし20の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  22. 仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、管理権および利用権が付与されていないメモリ領域の中から選択することを特徴とする請求項13ないし20の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  23. 仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、利用権が付与されていないメモリ領域から優先的に選択することを特徴とする請求項13ないし20の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  24. 前記仮想計算機は、自仮想計算機のメモリに関する情報を管理するメモリ管理手段と、実計算機のメモリとの対応付けが必要なメモリアクセスに関して利用権の有無を前記メモリアクセス監視部へ問い合わせるメモリアクセス制御手段と、メモリ削減要求に応じて解放に適するメモリ領域を決定し、該決定したメモリ領域を前記メモリ解放宣言部に通知するメモリ解放領域探索手段と、前記メモリ解放制御手段からの要求に従って解放するメモリ領域に関するメモリ情報を前記メモリ管理手段から削除するメモリ解放手段と、拡張するメモリ領域の取得を前記メモリ拡張制御手段に対して要求し、取得したメモリ領域に関するメモリ情報を前記メモリ管理手段に追加するメモリ拡張手段とを備えることを特徴とする請求項13ないし23の何れか1項に記載の仮想計算機システムにおけるメモリ管理方法。
  25. 実計算機上に複数の仮想計算機を実現し、各仮想計算機のメモリに実計算機のメモリの一部を割り当てる仮想計算機システムであって、実計算機の所定サイズのメモリ領域毎に、そのメモリ領域の管理権を持つ仮想計算機とそのメモリ領域の利用権を持つ仮想計算機とを管理する実メモリ管理部を備えた仮想計算機システムにおける前記複数の仮想計算機を制御する仮想計算機制御部を構成するコンピュータを、
    メモリ領域の管理権を持つ仮想計算機から当該メモリ領域の管理権を剥奪するメモリ解放宣言手段と、仮想計算機に対してメモリ領域の管理権を付与した時点で当該メモリ領域の増加処理の完了を仮想計算機に通知するメモリ拡張制御手段と、メモリ領域の利用権を持つ仮想計算機からメモリ領域を解放させると共に利用権を剥奪するメモリ解放制御手段と、メモリ領域へのアクセスを利用権を持つ仮想計算機に制限する手段であって、利用権を持たないが管理権を持つ仮想計算機からのメモリ領域に対するメモリアクセス時、そのメモリ領域の利用権を持つ他の仮想計算機が存在していれば、前記メモリ解放制御手段によって当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、要求元の仮想計算機に利用権を付与するメモリアクセス監視手段として機能させるためのプログラム。
  26. 前記メモリ解放宣言手段は、管理権を剥奪したメモリ領域の利用権が管理権を剥奪した仮想計算機以外の他の仮想計算機に付与されている場合、前記メモリ解放制御手段によって、管理権を剥奪した仮想計算機から当該メモリ領域を解放させることを特徴とする請求項25記載のプログラム。
  27. 前記メモリ解放宣言手段は、管理権を剥奪したメモリ領域の利用権が管理権を剥奪した仮想計算機以外の他の仮想計算機に付与されている場合、前記メモリ解放制御手段によって当該他の仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪した後に、管理権を剥奪した仮想計算機に利用権を付与することを特徴とする請求項25記載のプログラム。
  28. 前記メモリアクセス監視手段は、管理権を持たず利用権を持つ仮想計算機のメモリ領域に対するメモリアクセスの統計値が利用権を剥奪する条件を満たした場合に、前記メモリ解放制御手段によって当該仮想計算機から当該メモリ領域を解放させると共に利用権を剥奪することを特徴とする請求項25ないし27の何れか1項に記載のプログラム。
  29. 前記メモリアクセス監視手段は、前記条件を満たすか否かの判定を仮想計算機からメモリ領域に対するメモリアクセス毎に行い、前記条件を満たしたことによってメモリ領域の解放を行った場合には、ページアウト/スワップアウトされた領域へのアクセスに変更するためにメモリ再アクセス要求を起こさせる結果を生成することを特徴とする請求項28記載のプログラム。
  30. 前記コンピュータをさらに、仮想計算機システムに対するメモリ再構成要求を解析し、前記実メモリ管理部で管理される情報によって把握される現在のメモリ構成と比較して、個々の仮想計算機に対するメモリ構成変更要求を生成して、前記仮想計算機に出力するメモリ再構成要求解析手段として機能させることを特徴とする請求項25ないし29の何れか1項に記載のプログラム。
  31. 前記メモリ拡張制御手段は、仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、管理権が付与されていないメモリ領域の中から選択することを特徴とする請求項25ないし30の何れか1項に記載のプログラム。
  32. 前記メモリ拡張制御手段は、仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、管理権および利用権が付与されていないメモリ領域の中から選択することを特徴とする請求項25ないし30の何れか1項に記載のプログラム。
  33. 前記メモリ拡張制御手段は、仮想計算機に対して管理権を付与するメモリ領域を、前記実メモリ管理部を参照して、利用権が付与されていないメモリ領域から優先的に選択することを特徴とする請求項25ないし30の何れか1項に記載のプログラム。
JP2007189336A 2007-07-20 2007-07-20 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム Expired - Fee Related JP4862770B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007189336A JP4862770B2 (ja) 2007-07-20 2007-07-20 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007189336A JP4862770B2 (ja) 2007-07-20 2007-07-20 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2009026117A JP2009026117A (ja) 2009-02-05
JP4862770B2 true JP4862770B2 (ja) 2012-01-25

Family

ID=40397858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007189336A Expired - Fee Related JP4862770B2 (ja) 2007-07-20 2007-07-20 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP4862770B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010198398A (ja) * 2009-02-26 2010-09-09 Hitachi Ltd 計算機装置および制御方法
JP5428581B2 (ja) 2009-06-30 2014-02-26 富士通株式会社 仮想マシン管理プログラム及び仮想マシン管理方法
WO2015045046A1 (ja) * 2013-09-26 2015-04-02 株式会社日立製作所 計算機システムおよび計算機システムのメモリ割当調整方法
JP7468914B2 (ja) 2022-03-07 2024-04-16 Necプラットフォームズ株式会社 ディスクアレイ装置、負荷分散方法、及び負荷分散プログラム

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05210524A (ja) * 1991-08-23 1993-08-20 Internatl Business Mach Corp <Ibm> 記憶装置管理方法、コンピュータシステム及びコンピュータシステムで使用するための製造物品
US7565398B2 (en) * 2002-06-27 2009-07-21 International Business Machines Corporation Procedure for dynamic reconfiguration of resources of logical partitions
JP4200882B2 (ja) * 2003-11-12 2008-12-24 株式会社日立製作所 論理区画の資源動的割り当て変更方法

Also Published As

Publication number Publication date
JP2009026117A (ja) 2009-02-05

Similar Documents

Publication Publication Date Title
US10423435B1 (en) Page swapping in virtual machine environment
US10552337B2 (en) Memory management and device
JP4769484B2 (ja) 仮想計算機をマイグレーションするための方法およびシステム
KR101222823B1 (ko) 정보 처리 장치, 프로세스 제어 방법, 및 컴퓨터 프로그램이 기록된 컴퓨터 판독가능한 기록 매체
US20100274947A1 (en) Memory management method, memory management program, and memory management device
US20100250883A1 (en) Apparatus for dynamically migrating lpars with pass-through i/o devices, its method, and its program
JP2004326754A (ja) 共用リソースを使用するための仮想計算機の管理
US20090307432A1 (en) Memory management arrangements
JP2011203854A (ja) メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US11334477B2 (en) Virtualization of multiple coprocessor memory
Min et al. Vmmb: Virtual machine memory balancing for unmodified operating systems
US10496444B2 (en) Computer and control method for computer
JP4862770B2 (ja) 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
US20070136550A1 (en) Methods and apparatus for data transfer between partitions in a computer system
US9015418B2 (en) Self-sizing dynamic cache for virtualized environments
JP6198858B2 (ja) 計算機、及び、ハイパバイザによる資源スケジューリング方法
JP2004227188A (ja) ジョブスワップ方法、ジョブ管理装置、およびジョブ管理プログラム
Bielski et al. Dynamic Guest Memory Resizing-Paravirtualized Approach
JPH1185547A (ja) 仮想クラスタ構成方法
US20140223109A1 (en) Hardware prefetch management for partitioned environments
JP6035993B2 (ja) 情報処理装置、装置管理方法および装置管理プログラム
Auslander et al. Functional structure of IBM virtual storage operating systems, Part I: Influences of dynamic address translation on operating system technology
JP3585956B2 (ja) 情報処理装置及びその方法
Auslander et al. Functional structure of IBM virtual storage operating systems, part I: Influences of dynamic address translation on operating system technology

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20091007

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20091007

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110907

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111011

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111024

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141118

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees