(57)【要約】【課題】仮想ＯＳ環境におけるメモリ管理について、アドレス変換部なしで、仮想ＯＳでの物理メモリの縮小・拡大をできるようにすること。【解決手段】仮想ＯＳメモリ管理部００１と、各メモリ領域の所有状況を管理するメモリ管理テーブル００３と、起動時メモリ回収・再割当部０２３と、メモリ回収・再割当部０２４と、ＯＳ０２１と、メモリ管理部０２２とを有し、起動時にＯＳ０２１にＯＳ０２１が今後使用する可能性のあるすべてのメモリ領域を割当て、その後、起動時メモリ回収・再割当部０２３によりメモリ領域を回収することにより、メモリ管理部０２２が今後割当てられる可能性のあるすべてのメモリ領域を管理しているため、仮想ＯＳメモリ管理部００１がメモリ領域をＯＳ０２１に仮想ＯＳメモリ管理部００１追加・削減する際にアドレス変換なしに処理が行え、アドレス変換オーバヘッドを削減することができる。【選択図】図１
2012168751.tif 000002
【特許請求の範囲】
【請求項１】
一つの計算機上に複数の仮想ＯＳ環境を備える仮想計算機システムであって、
前記仮想計算機システム全体のメモリを管理する仮想メモリ管理部と、
前記メモリの利用状態を管理するメモリ管理テーブルと、
前記仮想ＯＳ環境下で動作するＯＳのメモリ管理を行うメモリ管理部と、
前記仮想ＯＳ環境を起動する際に、前記メモリ管理テーブルを参照して前記ＯＳに割り当てたメモリを回収・再割当する起動時メモリ回収・再割当部と、
前記仮想ＯＳ環境の起動後に、前記メモリ管理テーブルを参照して前記仮想ＯＳ環境に割り当てるメモリを動的に追加・削減するメモリ回収・再割当部と、
を備えることを特徴とする仮想計算機システム。
【請求項２】
前記仮想計算機システムは、さらに、
複数の前記仮想ＯＳ環境間でのメモリアクセス制御を行うメモリ保護部と、
前記メモリのアクセス保護状態を管理するメモリ保護テーブルと、
を備えることを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
一つの計算機上に複数の仮想ＯＳ環境を備える仮想計算機システムにおけるメモリ管理方法であって、
前記仮想計算機システムは、メモリの利用状態を管理するメモリ管理テーブルを備え、
前記仮想計算機システム全体のメモリを管理する仮想メモリ管理ステップと、
前記仮想ＯＳ環境下で動作するＯＳのメモリ管理を行うメモリ管理ステップと、
前記仮想ＯＳ環境を起動する際に、前記メモリ管理テーブルを参照して前記ＯＳに割り当てたメモリを回収・再割当する起動時メモリ回収・再割当ステップと、
前記仮想ＯＳ環境の起動後に、前記メモリ管理テーブルを参照して前記仮想ＯＳ環境に割り当てるメモリを動的に追加・削減するメモリ回収・再割当ステップと、
を備えることを特徴とするメモリ管理方法。
【請求項４】
一つの計算機上に複数の仮想ＯＳ環境を備える仮想計算機システムにおけるメモリ管理プログラムであって、
前記仮想計算機システムは、メモリの利用状態を管理するメモリ管理テーブルを備え、
前記仮想計算機システム全体のメモリを管理する仮想メモリ管理ステップと、
前記仮想ＯＳ環境下で動作するＯＳのメモリ管理を行うメモリ管理ステップと、
前記仮想ＯＳ環境を起動する際に、前記メモリ管理テーブルを参照して前記ＯＳに割り当てたメモリを回収・再割当する起動時メモリ回収・再割当ステップと、
前記仮想ＯＳ環境の起動後に、前記メモリ管理テーブルを参照して前記仮想ＯＳ環境に割り当てるメモリを動的に追加・削減するメモリ回収・再割当ステップと、
を備えることを特徴とするメモリ管理プログラム。
【請求項５】
一つの計算機上に複数の仮想ＯＳ環境を備える仮想計算機システムのメモリ管理を行う集積回路であって、
前記仮想計算機システム全体のメモリを管理する仮想メモリ管理部と、
前記仮想ＯＳ環境下で動作するＯＳのメモリ管理を行うメモリ管理部と、
前記仮想ＯＳ環境を起動する際に、前記ＯＳに割り当てたメモリを回収・再割当する起動時メモリ回収・再割当部と、
前記仮想ＯＳ環境の起動後に、前記仮想ＯＳ環境に割り当てるメモリを動的に追加・削減するメモリ回収・再割当部と、
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数ＯＳ環境における物理メモリの利用する場合において、物理メモリの使用状況を共有し、使用できるメモリサイズを可変できる方式に関するものである。
【背景技術】
【０００２】
近年、ネットワーク接続する家電機器が増えるとともにセキュリティ対策の課題が発生してきている。その課題への対策案の一つとして、仮想ＯＳを利用し非セキュアなＯＳをまるごとセキュアな環境より分離する方法が考えられている。このような仮想ＯＳ環境を組込み機器に適用する際には、メモリ使用量に代表されるようなコストが高くなるという課題がある。コスト削減のためには、システム全体のメモリ量を削減する必要があるが、そのためには、各ＯＳが利用できるメモリ量を、動作状況に応じてＯＳが必要とするメモリ量に合わせて拡大・縮小することが必要である。しかしながら、ＯＳが動作中にＯＳが管理するメモリ量を追加すると、ＯＳが今まで管理していなかったメモリ領域をＯＳに追加することになるため、ＯＳにおけるメモリを管理する仕組みにこのような新たなメモリ領域を追加管理できる仕組みを設ける必要がある。このＯＳ処理のオーバヘッドを回避するため、ＯＳが管理するメモリ量は変更せずにＯＳが利用できるメモリ量を変更する仕組みが提案されている（例えば、特許文献１参照）。図４は、特許文献１に記載された、従来技術に係る仮想計算機システムを簡単に図示したものである。図４において、仮想ＯＳメモリ管理部００１は、メモリ管理サービス０２５を用いてＯＳ０２１にメモリ領域を追加で割り当てる。追加したメモリ領域を指定するためのアドレスについては、メモリアドレス変換部０２６を用いてＯＳ０２１が管理可能なアドレスへ変換を行う。同時に、仮想ＯＳメモリ管理部００１は、メモリアドレス変換部０２６によって変換されたアドレス変換内容をアドレス変換部００５にセットする。このようにして、ＯＳ０２１では、メモリ管理部０２２の範囲で、追加されたメモリ領域へのアクセスが可能となる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２２５５２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、前述した従来の構成では、ＯＳが管理可能なアドレスへ変換するためのアドレス変換部が必要になる。アドレス変換部はメモリアクセスの都度変換を行う必要があるため、ハード資源に乏しい組込み機器においては、アクセス毎のメモリアクセス時間の低下による性能低下や、アドレス変換ハードウェアの追加によるコスト上昇の課題を有していた。
【０００５】
本発明は、前記従来の課題を解決するもので、仮想ＯＳ環境において、アドレス変換処理のオーバヘッドを発生させることなく、全体のメモリ量を削減できるメモリ管理手段を提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記従来の課題を解決するために、本発明の仮想計算機システムは、一つの計算機上に複数の仮想ＯＳ環境を備える仮想計算機システムであって、前記仮想計算機システム全体のメモリを管理する仮想メモリ管理部と、前記メモリの利用状態を管理するメモリ管理テーブルと、前記仮想ＯＳ環境下で動作するＯＳのメモリ管理を行うメモリ管理部と、前記仮想ＯＳ環境を起動する際に、前記メモリ管理テーブルを参照して前記ＯＳに割り当てたメモリを回収・再割当する起動時メモリ回収・再割当部と、前記仮想ＯＳ環境の起動後に、前記メモリ管理テーブルを参照して前記仮想ＯＳ環境に割り当てるメモリを動的に追加・削減するメモリ回収・再割当部とを備える。
【０００７】
本構成によって、仮想ＯＳ環境におけるＯＳがメモリ量を縮小・拡大する処理ことが可能となるので、アドレス変換処理のオーバーヘッドを発生させることなく、全体のメモリ量を削減することが可能となる。
【発明の効果】
【０００８】
本発明の複数ＯＳ環境におけるメモリ管理方式よれば、アドレス変換部００５の速度オーバヘッドなしに仮想ＯＳ環境００２におけるＯＳ０２１でメモリ使用量の削減をすることができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１における仮想計算機システムの構成の一例を示す図
【図２】メモリ管理テーブルの構成の一例を示す図
【図３】仮想環境間でメモリを共有する場合のメモリ管理テーブルの構成の一例を示す図
【図４】従来技術に係る仮想計算機システムの構成を示す図
【図５】本発明の実施の形態１における仮想計算機システムが仮想ＯＳ環境を起動する処理の流れの一例を示すフローチャート
【図６】本発明の実施の形態１における仮想計算機システムが仮想ＯＳ環境のメモリを追加する処理の流れの一例を示すフローチャート
【図７】本発明の実施の形態１における仮想計算機システムが仮想ＯＳ環境のメモリを削減する処理の流れの一例を示すフローチャート
【図８】本発明の実施の形態２における仮想計算機システムの構成の一例を示す図
【図９】本発明の実施の形態２におけるメモリ保護テーブルの構成の一例を示す図
【発明を実施するための形態】
【００１０】
以下本発明の実施の形態について、図面を参照しながら説明する。
【００１１】
（実施の形態１）
図１は、本発明の実施の形態１における仮想計算機システムの構成の一例を示す図である。図１において、図４と同じ構成要素については同じ符号を用い、説明を省略する。
【００１２】
図１において、ＯＳ０２１は、仮想ＯＳ環境００２で動作するプログラムで、メモリ管理部０２２を用いて利用できるメモリ領域を管理し、同じ仮想ＯＳ環境００２内で動作する他のプログラムからの要求に対して、メモリ領域の割当て、回収を行う。
【００１３】
メモリ管理部０２２は、割当てを行ったメモリ領域の利用状態を使用中に設定し、同じメモリ領域を複数のプログラムに割当てすることを防ぐ。また、メモリ管理部０２２は、回収したメモリ領域の利用状態を開放状態に設定して、プログラムからの要求に対してそのメモリ領域を割当てできるようにする。
【００１４】
仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２に対して、物理メモリ００４に存在するメモリのうちＯＳ０２１が利用する可能性のあるすべてのメモリ領域を使用することを一時的に許可する。仮想ＯＳ環境００２中のＯＳ０２１は、仮想ＯＳメモリ管理部００１により指定されたメモリ領域を使用するため、メモリ管理部０２２を初期化し、使用状況などを管理できるようにする。また、ＯＳ０２１は、メモリ領域を利用する前に、利用するすべてのメモリ領域を一旦起動時メモリ回収・再割当部０２３に割当てる。この処理は、起動時メモリ回収・再割当部０２３がメモリ領域をＯＳ０２１に対して割当て要求する形で実施する。
【００１５】
起動時メモリ回収・再割当部０２３は、割当てられたメモリ領域から、実際に仮想ＯＳ環境００２が現在利用してもよいメモリ領域のみをＯＳ０２１に対して開放することにより、再度ＯＳ０２１が利用できるメモリ領域とする。現在利用してもよいメモリ領域かどうかの判断については、本実施の形態においては、メモリ管理テーブル００３を参照し、割り当て対象となるメモリ領域がほかの仮想ＯＳ環境により使用されていないことを確認することによって行う。なお、さらに仮想ＯＳ環境毎に、固定のメモリ領域を割り当てておいて、他の仮想ＯＳ環境には割り当てないようにするなどの方法を使うことも可能である。
【００１６】
図２は、本発明の実施の形態１におけるメモリ管理テーブル００３の構成の一例を示した図である。
【００１７】
図２の例では、メモリ管理テーブル００３は、システムのすべてのメモリ領域について、管理できるメモリ領域毎にエントリを持つ。ここではメモリブロック毎にメモリ領域を管理している。一つのエントリは、エントリの操作について排他制御するためのロックフラグ、いくつの仮想ＯＳ環境より使用されているかを管理する使用カウント、どの仮想ＯＳ環境から使用されているかを管理する仮想ＯＳ環境ＩＤの情報よりなる。使用カウントが０の場合、対象となるメモリブロックはどの仮想ＯＳからも使用されていないことを意味する。また、仮想ＯＳ環境ＩＤが例えば０のような特定の値をとる場合には、使用カウントの値によらず、特別に使用カウントが０であるという意味を持たせて、使用カウント情報を削減することも可能である。
【００１８】
なお、メモリ管理テーブル００３の構成は、図２のような例に限らない。図３は、本発明の実施の形態１におけるメモリ管理テーブル００３の構成の別の一例を示した図である。
【００１９】
図３の例では、図２同様メモリブロック毎にメモリ領域を管理している。ロックフラグ、使用カウントについては図２と同様である。一方、仮想ＯＳ環境ＩＤについては、複数の仮想ＯＳが同じメモリ領域を使用することを想定した構成となっている。
【００２０】
なお、複数の仮想ＯＳ環境ＩＤについては、固定長のテーブルを用意することも可能であるし、あるいは可変長のテーブルで管理することも可能である。
【００２１】
以下、図１の説明に戻る。
【００２２】
起動時メモリ回収・再割当部０２３が確保しているメモリ領域の情報および、開放したメモリ領域の情報については、メモリ回収・再割当部０２４に渡し、起動後にメモリ回収・再割当部０２４がメモリ領域の獲得・開放を行う。また、仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２が確保したメモリ領域に相当するメモリ管理テーブル００３のエントリについて仮想ＯＳ環境００２が確保していることを記録し、ほかの仮想ＯＳ環境に対して２重に割当てることのないように管理する。なお、このような起動時メモリ回収・再割当部０２３や、メモリ回収・再割当部０２４はＯＳ０２１の機能を使ったモジュールあるいはアプリケーションプロセスとして実現できるため、ＯＳ０２１そのものを修正することなく実現可能である。
【００２３】
また、上記のメモリ回収、再割当の処理において、仮想ＯＳメモリ管理部００１が起動用のメモリ割当てを行っている間については、他の仮想ＯＳ環境からのメモリ領域の獲得・解放処理による不整合発生を避けるため、メモリ管理テーブルをロックしておく。
【００２４】
ＯＳ０２１に対して、メモリ領域の追加が必要となった場合、仮想ＯＳメモリ管理部００１はメモリ管理テーブル００３を検索し、利用カウントが０となるエントリ、すなわちいずれの仮想ＯＳも使用していないメモリ領域に対応するエントリを探す。該当エントリが見つかった場合には、そのエントリに対応するメモリ領域について、メモリ領域メモリ回収・再割当部０２４に対して指定したアドレスから始まるメモリ領域の開放を指示し、メモリ回収・再割当部０２４はＯＳ０２１に対して指定したアドレスからのメモリ領域を開放する。ＯＳ０２１は開放されたメモリ領域がメモリ管理部０２２で管理されているメモリ領域の一部なので、特に変換などの利用を必要とせず、そのままＯＳ０２１が利用可能である。
【００２５】
逆に、ＯＳ０２１に対してメモリ領域の縮小が要求される場合、仮想ＯＳメモリ管理部００１はメモリ回収・再割当部０２４に対して、サイズを指定してメモリ領域の獲得を指示する。メモリ回収・再割当部０２４は、指示されたサイズのメモリ領域をＯＳ０２１に対して獲得要求し、ＯＳ０２１が要求したサイズのメモリ領域をメモリ回収・再割当部０２４に対して割り当てる。メモリ回収・再割当部０２４はＯＳ０２１が割り当てたメモリの物理メモリ領域へのアドレスを、仮想ＯＳメモリ管理部００１に対して通知する。仮想ＯＳメモリ管理部００１はその領域についてメモリ管理テーブル００３の該当するエントリに対して、利用カウントを１減じる。利用カウントが０になれば空きメモリ領域として他の仮想ＯＳ環境への割当などに利用できる。
【００２６】
図５は、本発明の実施の形態１における仮想計算機システムが仮想ＯＳ環境００２を起動する処理の流れの一例を示した図である。
【００２７】
起動要求を受け、仮想ＯＳ環境００２が起動する（ステップ４００）。
【００２８】
仮想ＯＳ環境００２が、使用できるメモリ領域を仮想ＯＳメモリ管理部００１に対して要求する（ステップ４０１）。
【００２９】
仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２に対して割当てるメモリ領域を決定し、仮想ＯＳ環境００２に割当てるメモリ領域を通知する（ステップ４０２）。
【００３０】
仮想ＯＳ環境００２が、仮想ＯＳ環境００２に対して割当てるメモリ領域のすべてに対して、メモリ管理テーブル００３に対してロックフラグを設定し、一時的に仮想ＯＳ環境でのメモリ操作を禁止する。（ステップ４０３）。
【００３１】
仮想ＯＳ環境００２が、返答を受けたメモリ領域情報を元にＯＳ０２１を起動する（ステップ４０４）。
【００３２】
ＯＳ０２１が指定されたメモリ領域情報を元に、メモリ管理部０２２を初期化し、該当のメモリ領域を管理できるようにする（ステップ４０５）。
【００３３】
仮想ＯＳ環境００２が、起動時メモリ回収・再割当部０２３を起動し、メモリの回収プロセスを開始する（ステップ４０６）。
【００３４】
起動時メモリ回収・再割当部０２３はＯＳ０２１が以降再割当する可能性があるすべての領域のサイズなどより、回収するメモリサイズを決定する（ステップ４０７）。
【００３５】
起動時メモリ回収・再割当部０２３がステップ４０６で決定したメモリサイズを獲得する（ステップ４０８）。
【００３６】
起動時メモリ回収・再割当部０２３はＯＳ０２１に割当てるメモリサイズ、領域を決定するため、仮想ＯＳメモリ管理部００１に獲得したメモリ領域を通知する（ステップ４０９）。
【００３７】
なお、ステップ４０５からステップ４０８までの処理については、ＯＳ０２１が再割り当て可能なメモリ領域を割り当てる前に実施する必要があるため、ＯＳ０２１がメモリ管理部０２２の初期化直後に実施するのが望ましい。
【００３８】
ステップ４０６のメモリサイズ決定手段としては、例えば、仮想ＯＳメモリ管理部００１が、仮想ＯＳ環境００２に対して割当てを行った領域のサイズから、ＯＳ０２１が固定的に使用する領域のサイズおよびメモリ管理部０２２が利用するメモリ領域のサイズを指し引いて求める方法がある。
【００３９】
また、ステップ４０６の別の手段としては、ＯＳ０２１がメモリ割当に失敗するまでメモリ領域の獲得要求を繰り返すことにより獲得できたメモリ領域のメモリサイズの合計より回収するメモリ領域のサイズを求める方法がある。
【００４０】
仮想ＯＳメモリ管理部００１はステップ４０８で通知を受けた領域から、仮想ＯＳ環境００２が現在使用してよいメモリ領域を、他の仮想ＯＳ環境の使用状況などを用いて決定し、起動時メモリ回収・再割当部０２３に通知する（ステップ４１０）。
【００４１】
起動時メモリ回収・再割当部０２３は通知されたメモリ領域を、ＯＳ０２１に対して開放する（ステップ４１１）。
【００４２】
仮想ＯＳメモリ管理部００１が、ステップ４１１で解放したメモリ領域に相当するメモリ管理テーブル００３のエントリに対して使用カウントを１加算する。またステップ４０２で設定したロックフラグをすべて解放する（ステップ４１２）。
【００４３】
ＯＳ０２１は、起動時メモリ回収・再割当部０２３より開放されたメモリ領域が利用可能になり、起動処理を継続する（ステップ４１３）。
【００４４】
以上のようにして、仮想ＯＳ環境００２は起動処理を行い、起動完了状態３０１に到達する。
【００４５】
図６は、本発明の実施の形態１における仮想計算機システムが仮想ＯＳ環境００２へメモリ領域を追加する処理の流れの一例を示した図である。
【００４６】
仮想ＯＳメモリ管理部００１が外部からのメモリ領域の追加要求などの要因発生により、仮想ＯＳ環境００２に対してメモリ領域の追加を決定する（ステップ４２０）。
【００４７】
仮想ＯＳメモリ管理部００１はすべての仮想ＯＳ環境で使っていないメモリ領域から、必要なメモリサイズのものを決定し、その領域を仮想ＯＳ環境００２に割り当てることを決定する（ステップ４２１）。
【００４８】
仮想ＯＳメモリ管理部００１は、指定したメモリ領域に相当するメモリ管理テーブル００３について、使用カウントを１加算し、仮想ＯＳ環境ＩＤに仮想ＯＳ環境００２を識別する番号を設定する（ステップ４２２）。
【００４９】
仮想ＯＳメモリ管理部００１がメモリ回収・再割当部０２４に指定したメモリ領域の開放を指示する（ステップ４２３）。
【００５０】
メモリ回収・再割当部０２４は、指定された領域について、ＯＳ０２１に対して開放要求を実施する（ステップ４２４）。
【００５１】
ＯＳ０２１は、開放要求を受け取り、ステップ４２３で指定された領域を空き領域として設定するようにメモリ管理部０２２に指示する（ステップ４２５）。
【００５２】
メモリ管理部０２２は、ステップ４２４で受け取ったメモリ領域を空き領域として設定する（ステップ４２６）。
【００５３】
以上のようにして、仮想ＯＳメモリ管理部００１は仮想ＯＳ環境００２に対してメモリ領域を追加し、仮想ＯＳ環境００２のＯＳ０２１は追加されたメモリ領域を利用可能になる。
【００５４】
図７は、本発明の実施の形態１における仮想計算機システムが仮想ＯＳ環境００２からメモリ領域を削減する処理の流れの一例を示した図である。
【００５５】
仮想ＯＳメモリ管理部００１は他の仮想ＯＳ環境へ追加するメモリが必要となるなどの要因が発生した場合、仮想ＯＳ環境００２に対してメモリ領域の削減を決定する（ステップ４３０）。
【００５６】
仮想ＯＳメモリ管理部００１は仮想ＯＳ環境００２の使用しているメモリ領域から削減するメモリサイズを決定し、それをメモリ回収・再割当部０２４に通知して、メモリ領域の獲得を指示する（ステップ４３１）。
【００５７】
メモリ回収・再割当部０２４は、ステップ４３１で指定されたメモリサイズのメモリ領域をＯＳ０２１に対して獲得要求を実施する（ステップ４３２）。
【００５８】
ＯＳ０２１はメモリ領域獲得要求を受け取り、メモリ管理部０２２に対して、空き領域を渡すように指示する（ステップ４３２）。
【００５９】
メモリ管理部０２２は、空きメモリ領域をメモリ回収・再割当部０２４に通知する。もしメモリ管理部０２２に空きメモリ領域がない場合には、何らかのメモリ圧縮手段を用いて、空きメモリを増加させて、必要な空きメモリ領域を確保して通知する（ステップ４３４）。ここでのメモリ圧縮手段には、外部記憶装置へのメモリの退避による方法や、使用していない読み出し専用メモリ領域を空き領域へと変更するなどの方法がある。
【００６０】
メモリ回収・再割当部０２４は、受け取ったメモリ領域を仮想ＯＳメモリ管理部００１に通知する、仮想ＯＳメモリ管理部００１は受け取ったメモリ領域を、別の仮想ＯＳ環境に割当てるなどの利用が可能になる（ステップ４３５）。
【００６１】
仮想ＯＳメモリ管理部００１は、ステップ４３５で受け取ったメモリ領域に相当するメモリ管理テーブル００３のエントリについて、使用カウントを１減算する（ステップ４３６）。
【００６２】
以上のように、本実施の形態に係る仮想計算機システムでは、仮想ＯＳメモリ管理部００１による仮想ＯＳ環境００２へのメモリ領域の拡大および縮小処理について、割当て・開放される物理メモリ領域のアドレスが、起動時メモリ回収・再割当部０２３により、すでにＯＳ０２１のメモリ管理部０２２の管理できる領域となっているため、ＯＳ０２１への機能の追加や、特別なアドレス変換部００５を必要とせずにメモリ領域の拡大および縮小処理を実現できる。
【００６３】
なお、本実施の形体において、仮想ＯＳ環境００２に割当られる物理メモリ領域を指定するためのアドレスは、アドレス変換を必要としない。メモリ管理部０２２は物理メモリ００４での領域を指定するアドレスをそのまま用いることが可能であり、このため特別なアドレス変換部００５を必要としない。このようにして、アドレス変換のオーバヘッドなしに、仮想ＯＳ環境００２へのメモリ領域の追加および削減ができる。
【００６４】
なお、本実施の形態において、起動時専用の処理部として、起動時メモリ回収・再割当部０２３を設けたが、メモリ回収・再割当部０２４と同じ処理の中に処理を統合しても良い。
【００６５】
（実施の形態２）
図８は、本発明の実施の形態２における仮想計算機システムの構成の一例を示す図である。図８において、図１と同じ構成要素については同じ符号を用い、説明を省略する。図８に示す構成は、メモリ保護部００６を備える点で図１に示す構成と異なる。
【００６６】
図８において、ＯＳ０２１は、仮想ＯＳ環境００２で動作するプログラムで、メモリ管理部０２２を用いて利用できるメモリ領域を管理し、同じ仮想ＯＳ環境００２内で動作する他のプログラムからの要求に対して、メモリ領域の割当て、回収を行う。
【００６７】
メモリ管理部０２２は、割当てを行ったメモリ領域の利用状態を使用中に設定し、同じメモリ領域を複数のプログラムに割当てすることを防ぐ。またメモリ管理部０２２は、回収したメモリ領域の利用状態を開放状態に設定して、プログラムからの要求に対してそのメモリ領域を割当てできるようにする。
【００６８】
仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２に対して、物理メモリ００４に存在するメモリのうちＯＳ０２１が利用する可能性のあるすべてのメモリ領域を使用することを一時的に許可する。仮想ＯＳ環境００２中のＯＳ０２１は、仮想ＯＳメモリ管理部００１により指定されたメモリ領域を使用するため、メモリ管理部０２２を初期化し、使用状況などを管理できるようにする。また、ＯＳ０２１は、メモリ領域を利用する前に、利用するすべてのメモリ領域を一旦起動時メモリ回収・再割当部０２３に割当てる。この処理は、起動時メモリ回収・再割当部０２３がメモリ領域をＯＳ０２１に対して割当て要求する形で実施する。
【００６９】
起動時メモリ回収・再割当部０２３は、割当てられたメモリ領域から、実際に仮想ＯＳ環境００２が現在利用してもよいメモリ領域のみをＯＳ０２１に対して開放することにより、再度ＯＳ０２１が利用できるメモリ領域とする。メモリ管理テーブル００３を参照し、割り当て対象となるメモリ領域がほかの仮想ＯＳ環境により使用されていないことを確認することによって行う。なお、さらに仮想ＯＳ環境毎に、固定のメモリ領域を割り当てておいて、他の仮想ＯＳ環境には割り当てないようにするなどの方法を使うことも可能である。
【００７０】
起動時メモリ回収・再割当部０２３が確保しているメモリ領域の情報および、開放したメモリ領域の情報については、メモリ回収・再割当部０２４に渡し、起動後にメモリ回収・再割当部０２４がメモリ領域の獲得・開放を行う。また、仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２が確保したメモリ領域に相当するメモリ管理テーブル００３のエントリについて仮想ＯＳ環境００２が確保していることを記録し、ほかの仮想ＯＳ環境に対して２重に割当てることのないように管理する。なお、このような起動時メモリ回収・再割当部０２３や、メモリ回収・再割当部０２４はＯＳ０２１の機能を使ったモジュールあるいはアプリケーションプロセスとして実現できるため、ＯＳ０２１そのものを修正することなく実現可能である。
【００７１】
また、上記のメモリ回収、再割当の処理において、仮想ＯＳメモリ管理部００１が起動用のメモリ割当てを行っている間については、他の仮想ＯＳ環境からのメモリ領域の獲得・解放処理による不整合発生を避けるため、メモリ管理テーブルをロックしておく。
【００７２】
他の仮想ＯＳ環境で使用中のメモリ領域へのアクセスを禁止するため、本実施の形態においては、メモリ保護部００６は、仮想ＯＳ環境００２からの物理メモリ００４へのアクセスに対して、そのアドレスについてメモリ保護テーブル００７を参照して検査し、各仮想ＯＳ環境がアクセス許可されている場合のみアクセスを許可する。
【００７３】
図９は、本発明の実施の形態２におけるメモリ保護テーブル００７の構成の一例を示した図である。
【００７４】
図９の例では、メモリ保護テーブル００７は、システムのすべてのメモリ領域について、管理できるメモリ領域毎にエントリを持つ。ここではメモリブロック毎にメモリ領域を管理している。一つのエントリは、仮想ＯＳ環境毎にアクセス許可を判断するためのフラグよりなる。
【００７５】
なお、メモリ保護テーブル００７の構成は、図９のような例に限らない。
【００７６】
仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２へメモリ領域を割当てたときに、メモリ保護テーブル００７の該当のメモリ領域に対して、仮想ＯＳ環境００２へのアクセス許可を有効にする。また、仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２からメモリ領域を回収したときに、メモリ保護テーブル００７の該当のメモリ領域に対して、仮想ＯＳ環境００２へのアクセス許可を無効にする。
【００７７】
ＯＳ０２１に対して、メモリ領域の追加が必要となった場合、仮想ＯＳメモリ管理部００１はメモリ管理テーブル００３を検索し、利用カウントが０となるエントリを探す。該当エントリが見つかった場合には、そのエントリに対応するメモリ領域について、メモリ領域メモリ回収・再割当部０２４に対して指定したアドレスから始まるメモリ領域の開放を指示し、メモリ回収・再割当部０２４はＯＳ０２１に対して指定したアドレスからのメモリ領域を開放する。また、仮想ＯＳメモリ管理部００１は該当メモリ領域を指定するアドレスを使って物理メモリ００４をアクセスできるように、メモリ保護部００６に対して設定する。ＯＳ０２１は開放されたメモリ領域がメモリ管理部０２２で管理されているメモリ領域の一部なので、特に変換などの利用を必要とせず、そのままＯＳ０２１が利用可能である。
【００７８】
逆にＯＳ０２１に対して、メモリ領域の縮小が要求される場合、仮想ＯＳメモリ管理部００１はメモリ回収・再割当部０２４に対して、サイズを指定してメモリ領域の獲得を指示する。メモリ回収・再割当部０２４は、指示されたサイズのメモリ領域をＯＳ０２１に対して獲得要求し、ＯＳ０２１が要求したサイズのメモリ領域をメモリ回収・再割当部０２４に対して割り当てる。メモリ回収・再割当部０２４はＯＳ０２１が割り当てたメモリの物理メモリ領域へのアドレスを、仮想ＯＳメモリ管理部００１に対して通知する。仮想ＯＳメモリ管理部００１はその領域についてメモリ管理テーブル００３の該当するエントリに対して、利用カウントを１減じる。利用カウントが０になれば空きメモリ領域として他の仮想ＯＳ環境への割当などに利用できる。また仮想ＯＳメモリ管理部００１は該当メモリ領域を指定するアドレスを使って物理メモリ００４を仮想ＯＳ環境００２に対してアクセス禁止するように、メモリ保護テーブル００７に対して設定する。
【００７９】
以上のように、本実施の形態に係る仮想計算機システムでは、仮想ＯＳメモリ管理部００１は、仮想ＯＳ環境００２に割り当てられたメモリ領域のみメモリ保護テーブル００７でアクセス許可が設定する。このため仮想ＯＳ環境００２は、割り当てられていない別のメモリ領域へのアクセスはできなくなる。これにより、それぞれの仮想ＯＳでメモリ領域を排他的に利用することや、共有することが可能になり、利便性が高まる。また、この処理についても図４に示すアドレス変換部００５の処理は必要としないため、アドレス変換に必要となるオーバヘッド存在せず、高速化に処理可能となる。
【００８０】
なお、図１および図８に示す仮想計算機システムの各機能ブロックは、典型的にはプロセッサと外部メモリとの協同で処理されるプログラムとして実現されるが、集積回路であるＬＳＩで実現してもよい。これらの各機能ブロックは個別に１チップ化されても良いし、一部又は全てを含むように１チップ化されても良い。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ又はウルトラＬＳＩと呼称されることもある。
【００８１】
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
【００８２】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。
【００８３】
また、本発明は、プロセッサとタイマとを備えた計算処理装置であれば、あらゆる計算機、電子機器、情報機器、ＡＶ機器、通信機器及び家電機器にも適用可能であり、例えば、ＰＣ（パーソナルコンピュータ）、携帯情報端末（携帯電話、スマートフォン及びＰＤＡなど）、テレビ、ハーディスクレコーダー、ＤＶＤ及びブルーレイディスクなどを用いた各種ディスクレコーダー、ＤＶＤ及びブルーレイディスクなどを用いた各種ディスクプレイヤー、及びカーナビゲーションシステムなどにも応用できる。
【００８４】
また、前述の説明はあらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
【産業上の利用可能性】
【００８５】
本発明にかかる複数ＯＳ環境におけるメモリ管理方式は、仮想ＯＳメモリ管理部００１と、起動時メモリ回収・再割当部０２３と、メモリ回収・再割当部０２４と、ＯＳ０２１と、メモリ管理部０２２とを有し、仮想ＯＳ環境におけるメモリ領域の動的な移動によるシステム全体のメモリ削減手段等として有用である。またメモリ領域の共有領域を動的に管理するような用途にも応用できる。
【符号の説明】
【００８６】
００１    仮想ＯＳメモリ管理部
００２    仮想ＯＳ環境
００３    メモリ管理テーブル
０２１    ＯＳ
０２２    メモリ管理部
０２３    起動時メモリ回収・再割当部
０２４    メモリ回収・再割当部
０２５    メモリ管理サービス
０２６    メモリアドレス変換部
００４    物理メモリ
００５    アドレス変換部
００６    メモリ保護部
００７    メモリ保護テーブル
【図１】
2012168751.tif 000003
【図２】
2012168751.tif 000004
【図３】
2012168751.tif 000005
【図４】
2012168751.tif 000006
【図５】
2012168751.tif 000007
【図６】
2012168751.tif 000008
【図７】
2012168751.tif 000009
【図８】
2012168751.tif 000010
【図９】
2012168751.tif 000011