(57)【要約】      （修正有）【課題】仮想メモリ方式のマルチ・ゲストＯＳで物理メモリを分割して使用する際に、効率よく割り当てるためのメモリ管理手法を提供する。【解決手段】物理メモリ１の物理アドレスと仮想メモリ３の仮想アドレスの変換を管理するページ構造体２は、少なくとも物理メモリのページ・フレーム番号からなるページ構造体の複数の列からなり、他のゲストＯＳのカーネルに割り当てられたアドレスの隙間に対しては物理メモリ管理領域を確保しないことによって、そのためのメモリ利用量を削減することができ、メモリの利用効率を向上させる。さらに、物理メモリのアドレスと、それに対応する管理領域のアドレスとの相互変換演算は高速に保たれる。【選択図】図３
2014049016.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも物理メモリとプロセッサからなる情報処理装置において仮想メモリ方式のマルチ・ゲストOSにより分割して使用される物理メモリのページ構造体配列によるメモリ管理方法であって、
物理メモリは連続したページ・フレームからなる必須領域と連続したページ・フレームからなる選択領域からなり、
ページ構造体配列は、少なくとも物理メモリのページ・フレーム番号からなるページ構造体の複数の列からなり、
ゲストOSには、前記必須領域の連続した物理メモリページ・フレームと前記選択領域の連続した物理メモリページ・フレームが割り当てられ、
前記ゲストOSは、前記割り当てられた必須領域の連続した物理メモリページ・フレームに、前記必須領域の物理メモリページ・フレーム番号からなるページ構造体配列と、前記選択領域の物理メモリページ・フレーム番号からなるページ構造体配列を連続して配置して、前記連続して配置したページ構造体配列のページ構造体の物理メモリページ・フレーム番号により物理メモリのアドレス変換する物理メモリのページ構造体配列によるメモリ管理方法において、
前記ゲストOSが前記必須領域の連続した物理メモリページ・フレームに配置する前記選択領域の物理メモリページ・フレーム番号からなるページ構造体配列を、前記ゲストOSに割り当てられた前記選択領域の物理メモリページ・フレーム番号のみからなるページ構造体配列に圧縮して物理メモリを管理することを特徴とする物理メモリのページ構造体配列によるメモリ管理方法。
【請求項２】
少なくとも物理メモリとプロセッサからなる情報処理装置において仮想メモリ方式のマルチ・ゲストOSにより分割して使用される物理メモリに係るアカウンティング構造体配列によるメモリ管理方法であって、
物理メモリは連続したページ・フレームからなる必須領域と連続したページ・フレームからなる選択領域からなり、
アカウンティング構造体配列は、少なくとも物理メモリのページ・フレーム番号からなるアカウンティング構造体の複数の列からなり、
ゲストOSには、前記必須領域の連続した物理メモリページ・フレームと前記選択領域の連続した物理メモリページ・フレームが割り当てられ、
前記ゲストOSは、前記割り当てられた必須領域の連続した物理メモリページ・フレームに、前記必須領域の物理メモリページ・フレーム番号からなるアカウンティング構造体配列と、前記選択領域の物理メモリページ・フレーム番号からなるアカウンティング構造体配列を連続して配置して、前記連続して配置したアカウンティング構造体配列のアカウンティング構造体の物理メモリページ・フレーム番号によりアカウンティングを管理する物理メモリに係るアカウンティング構造体配列によるメモリ管理方法において、
前記ゲストOSが前記必須領域の連続した物理メモリページ・フレームに配置する前記選択領域の物理メモリページ・フレーム番号からなるアカウンティング構造体配列を、前記ゲストOSに割り当てられた前記選択領域の物理メモリページ・フレーム番号のみからなるアカウンティング構造体配列に圧縮してアカウンティングを管理することを特徴とする物理メモリに係るアカウンティング構造体配列によるメモリ管理方法。
【請求項３】
少なくとも物理メモリとプロセッサからなる情報処理装置において仮想メモリ方式のマルチ・ゲストOSにより分割して使用される物理メモリに係る管理情報を有する構造体配列(管理構造体配列)によるメモリ管理方法であって、
物理メモリは連続したページ・フレームからなる必須領域と連続したページ・フレームからなる選択領域からなり、
管理構造体配列は、少なくとも物理メモリのページ・フレーム番号からなる管理構造体の複数の列からなり、
ゲストOSには、前記必須領域の連続した物理メモリページ・フレームと前記選択領域の連続した物理メモリページ・フレームが割り当てられ、
前記ゲストOSは、前記割り当てられた必須領域の連続した物理メモリページ・フレームに、前記必須領域の物理メモリページ・フレーム番号からなる管理構造体配列と、前記選択領域の物理メモリページ・フレーム番号からなる管理構造体配列を連続して配置して、前記連続して配置した管理構造体配列の管理構造体の物理メモリページ・フレーム番号により物理メモリに係る管理を行う物理メモリに係る管理構造体配列によるメモリ管理方法において、
前記ゲストOSが前記必須領域の連続した物理メモリページ・フレームに配置する前記選択領域の物理メモリページ・フレーム番号からなる管理構造体配列を、前記ゲストOSに割り当てられた前記選択領域の物理メモリページ・フレーム番号のみからなる管理構造体配列に圧縮して管理情報を管理することを特徴とする物理メモリに係る管理構造体配列によるメモリ管理方法。
【請求項４】
前記必須領域は第１の物理メモリに置かれ、前記選択領域は第２の物理メモリに置かれることを特徴とする請求項１乃至請求項３に記載の物理メモリのページ構造体配列によるメモリ管理方法。
【請求項５】
前記マルチ・ゲストOSはLinux(登録商標)であって、
前記必須領域は低位アドレスを占める１ギガバイト長であり、
前記ページ構造体は32バイト長からなることを特徴とする請求項１または請求項４のいずれか１項に記載する物理メモリのぺージ構造体配列によるメモリ管理方法。
【請求項６】
少なくとも物理メモリとプロセッサを備える情報処理装置であって、
請求項１乃至請求項５のいずれか１項に記載するメモリ管理方法によりその物理メモリを管理することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置において、物理メモリを管理するメモリ領域の量を削減することによって、メモリの利用効率を向上させるためのメモリ管理手法に関する。
【背景技術】
【０００２】
一般的に、OSにおいては、物理メモリを、プロセッサの仕様に適合する大きさを持つページと呼ばれるアドレス領域に分割して管理する。
そのため、ページに番号を振り、その番号をインデックスとする配列に管理情報を格納する。
【０００３】
さらに、ある物理アドレスを境界として、必須領域と選択領域との二つの領域に分割し、 異なる管理法を適用する場合がある。
【０００４】
例えば、i386アーキテクチャ用のLinux(登録商標)カーネルでは、物理メモリを4kbyte(キロ・バイト、一般的にはケー・バイトと呼ばれ1024バイトを表わす、また１バイトは8ビットからなる)毎に分割して管理する。
そして物理アドレスを12bit(ビット)右シフトして得られた値をページ・フレーム番号(page frame number(PFN))と呼び、PFNをインデックスとする数種類の配列が、物理メモリを管理するメモリ領域(物理メモリ管理領域)である。
PFNと物理アドレス(physaddr)の相互の変換式は次の通りである。
【０００５】
【数１】
2014049016.tif 000003
【０００６】
PFNをインデックスとする配列の一つにpage構造体(ページ構造体)があり、これによって、図１に示すように物理アドレスと仮想アドレスの変換を管理している。
PAGE_OFFSET定数(ページ・オフセット定数)は通常0xc0000000(0xは16進数表示を示す、8桁)であるが、その場合、物理アドレスが0x040000000(0xは16進数表示を示す、9桁)未満のメモリが低位メモリと呼ぶ必須領域であり、それ以上が高位メモリと呼ぶ選択領域である。
【０００７】
マルチプロセッサ対応のOSには、複数のOSカーネルを起動し、各OSカーネルが１個以上のプロセッサを管理する方式がある。
そして、物理メモリは分割され、各OSカーネルに重複無く割り当てられる。
さらに、物理メモリを必須領域と選択領域に分割管理する場合には、あるOSカーネルには両方の領域が割り当てられ、その二つの領域の物理アドレスが連続しない可能性がある。
【０００８】
例えば、ART-LinuxのAMP方式では、図２のように物理アドレスの網掛け部分をゲストOSに割り当てる。
ゲストOSとしてLinuxを起動する場合、割り当てられた物理メモリを管理する物理メモリ管理領域は低位メモリに置かれるため、必須領域である低位メモリの一部を必ず割り当てなければならない。
【０００９】
低位メモリは全体で１Gbyte(ギガ・バイト)しかないので、より多くのメモリを割り当てる場合には選択領域である高位メモリから割り当てることになる。
すると、低位メモリと当該ゲストOSに割り当てられた高位メモリとの間等に、当該ゲストOSは管理する必要のない物理メモリ(物理アドレス)の隙間１１が生じる。
そして物理メモリを管理するページ構造体配列においては、図２にしめすように、この当該ゲストOSには管理する必要のない、物理メモリの隙間１１のページ・フレームに対応するページ構造体配列の隙間１２が生じてしまう。
【００１０】
ここで、16Gbyteの物理メモリ上で８つのLinuxを起動する場合を想定する。
低位メモリは総メモリ量に関わらず１Gbyteなので、高位メモリの量は15Gbyteになる。
各Linuxに等分すると、低位メモリが128Mbyte(メガ・バイト)ずつ、高位メモリが1920Mbyteずつ割り当てられることになる。
この場合、page構造体配列全体の占める割合が問題となる。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】Daniel P. Bovet, Marco Cesati著、高橋浩和監訳「詳解  Linuxカーネル第３版」オライリー・ジャパン  2007年3月発行
【発明の概要】
【発明が解決しようとする課題】
【００１２】
各Linuxに割り当てられた低位メモリのうちでpage構造体配列全体の占める割合について考えると、物理アドレスの最大値は0x1ffffffffなので、PFNの最大値は0x1fffffとなる。
page構造体の大きさは32byte(バイト)なので、page構造体配列全体の大きさは32*0x200000 = 64Mbyteとなる。
各Linuxに割り当てられた低位メモリのうちの半分をpage構造体配列が占めることになり、 利用効率が悪いことがわかる。
【００１３】
さらに、総メモリ量が増えてPFNの最大値が増加した場合、Linuxの起動数が増え各Linuxに割り当てられた低位メモリの量が減少した場合にはさらに利用効率が悪化する。
従って、page構造体配列を物理メモリ内で各Linuxに効率よく割り当てることが望まれる。
【課題を解決するための手段】
【００１４】
本発明では、上述のpage構造体配列を物理メモリ内で効率よく割り当てるために次の手段を提供する。
（１）少なくとも物理メモリとプロセッサからなる情報処理装置において仮想メモリ方式のマルチ・ゲストOSにより分割して使用される物理メモリのページ構造体配列によるメモリ管理方法であって、物理メモリは連続したページ・フレームからなる必須領域と連続したページ・フレームからなる選択領域からなり、ページ構造体配列は、少なくとも物理メモリのページ・フレーム番号からなるページ構造体の複数の列からなり、ゲストOSには、前記必須領域の連続した物理メモリページ・フレームと前記選択領域の連続した物理メモリページ・フレームが割り当てられ、前記ゲストOSは、前記割り当てられた必須領域の連続した物理メモリページ・フレームに、前記必須領域の物理メモリページ・フレーム番号からなるページ構造体配列と、前記選択領域の物理メモリページ・フレーム番号からなるページ構造体配列を連続して配置して、前記連続して配置したページ構造体配列のページ構造体の物理メモリページ・フレーム番号により物理メモリのアドレス変換する物理メモリのページ構造体配列によるメモリ管理方法において、前記ゲストOSが前記必須領域の連続した物理メモリページ・フレームに配置する前記選択領域の物理メモリページ・フレーム番号からなるページ構造体配列を、前記ゲストOSに割り当てられた前記選択領域の物理メモリページ・フレーム番号のみからなるページ構造体配列に圧縮して物理メモリを管理することを特徴とする物理メモリのページ構造体配列によるメモリ管理方法。
本発明は、従来の基本構成において当該ゲストOSは管理する必要のない物理メモリの隙間に対して配置されていた物理メモリ管理領域を確保しないことによって、すなわち、各従前ゲストOSが選択領域の物理メモリ全体に関して構成したpage構造体配列を当該ゲストOSに割り当てられた物理メモリのみに対応するページ・フレーム番号に係るpage構造体のみからなるpage構造体配列にすることで、従来のpage構造体配列を圧縮して物理メモリの効率よい割り当てを実現した。
【００１５】
次に、本発明は、アカウンティング構造体配列を物理メモリ内で効率よく割り当てるために次の手段を提供する。
（２）少なくとも物理メモリとプロセッサからなる情報処理装置において仮想メモリ方式のマルチ・ゲストOSにより分割して使用される物理メモリに係るアカウンティング構造体配列によるメモリ管理方法であって、物理メモリは連続したページ・フレームからなる必須領域と連続したページ・フレームからなる選択領域からなり、アカウンティング構造体配列は、少なくとも物理メモリのページ・フレーム番号からなるアカウンティング構造体の複数の列からなり、ゲストOSには、前記必須領域の連続した物理メモリページ・フレームと前記選択領域の連続した物理メモリページ・フレームが割り当てられ、前記ゲストOSは、前記割り当てられた必須領域の連続した物理メモリページ・フレームに、前記必須領域の物理メモリページ・フレーム番号からなるアカウンティング構造体配列と、前記選択領域の物理メモリページ・フレーム番号からなるアカウンティング構造体配列を連続して配置して、前記連続して配置したアカウンティング構造体配列のアカウンティング構造体の物理メモリページ・フレーム番号によりアカウンティングを管理する物理メモリに係るアカウンティング構造体配列によるメモリ管理方法において、前記ゲストOSが前記必須領域の連続した物理メモリページ・フレームに配置する前記選択領域の物理メモリページ・フレーム番号からなるアカウンティング構造体配列を、前記ゲストOSに割り当てられた前記選択領域の物理メモリページ・フレーム番号のみからなるアカウンティング構造体配列に圧縮してアカウンティングを管理することを特徴とする物理メモリに係るアカウンティング構造体配列によるメモリ管理方法。
【００１６】
さらに、本発明は、一般的なメモリ管理構造体配列を物理メモリ内で効率よく割り当てるために次の手段を提供する。
（３）少なくとも物理メモリとプロセッサからなる情報処理装置において仮想メモリ方式のマルチ・ゲストOSにより分割して使用される物理メモリに係る管理情報を有する構造体配列(管理構造体配列)によるメモリ管理方法であって、物理メモリは連続したページ・フレームからなる必須領域と連続したページ・フレームからなる選択領域からなり、管理構造体配列は、少なくとも物理メモリのページ・フレーム番号からなる管理構造体の複数の列からなり、ゲストOSには、前記必須領域の連続した物理メモリページ・フレームと前記選択領域の連続した物理メモリページ・フレームが割り当てられ、前記ゲストOSは、前記割り当てられた必須領域の連続した物理メモリページ・フレームに、前記必須領域の物理メモリページ・フレーム番号からなる管理構造体配列と、前記選択領域の物理メモリページ・フレーム番号からなる管理構造体配列を連続して配置して、前記連続して配置した管理構造体配列の管理構造体の物理メモリページ・フレーム番号により物理メモリに係る管理を行う物理メモリに係る管理構造体配列によるメモリ管理方法において、前記ゲストOSが前記必須領域の連続した物理メモリページ・フレームに配置する前記選択領域の物理メモリページ・フレーム番号からなる管理構造体配列を、前記ゲストOSに割り当てられた前記選択領域の物理メモリページ・フレーム番号のみからなる管理構造体配列に圧縮して管理情報を管理することを特徴とする物理メモリに係る管理構造体配列によるメモリ管理方法。
【００１７】
さらに、本発明は、物理メモリを第１の物理メモリと第２の物理メモリの２階層にして物理メモリを管理して高速処理を図る次のメモリ管理方法を提供する。
（４）前記必須領域は第１の物理メモリに置かれ、前記選択領域は第２の物理メモリに置かれることを特徴とする(１)乃至(３)に記載の物理メモリのページ構造体配列によるメモリ管理方法。
【００１８】
さらに、本発明は、Linuxにおけるページ構造体を例に、次の実施方法を提供する。
（５）前記マルチ・ゲストOSはLinux(登録商標)であって、前記必須領域は低位アドレスを占める１ギガバイト長であり、前記ページ構造体は32バイト長からなることを特徴とする(１)または(４)に記載する物理メモリのぺージ構造体配列によるメモリ管理方法。
最後に、本発明は、このようなメモリ管理方法により物理メモリを管理する次の情報処理装置を提供する。
（６）少なくとも物理メモリとプロセッサを備える情報処理装置であって、請求項１乃至請求項５のいずれか１項に記載するメモリ管理方法によりその物理メモリを管理することを特徴とする情報処理装置。
【発明の効果】
【００１９】
本発明によれば、従来のpage構造体配列を圧縮して物理メモリの効率よい割り当てができるので、より多くのゲストOSが起動することができ、また同一数のゲストOSの場合には、より多くの物理メモリの割り当てが可能となり、ゲストOSの稼働環境が改善されることになる。
【図面の簡単な説明】
【００２０】
【図１】図１は、Linuxカーネルの仮想メモリ管理を示す略全体図である。
【図２】図２は、従来のAMP方式における物理メモリ管理の問題点を示す図である。
【図３】図３は、改良された物理メモリ管理法を示す図である。
【発明を実施するための形態】
【実施例１】
【００２１】
メモリの利用効率を向上するために、図３に示すように物理メモリの管理法を改良した。
具体的には、低位メモリと当該ゲストOSに割り当てられた高位メモリとの間等の当該ゲストOSは管理する必要のないアドレスの隙間を除外して圧縮したpage構造体配列を構成した。
【００２２】
図２において16Gbyteの物理メモリ上で８つのLinuxを起動する場合と同様の構成において、本発明で必要なPFNを計算する。
低位メモリに対応するPFNは0以上0x40000未満、高位メモリに対応するPFNは0x40000以上0xb8000未満となる。
よってpage構造体配列全体の大きさは32*0xb8000=23Mbyteとなり、図２の従来例の64Mbyteに比較して、約１／３に減少する。
【００２３】
また、本発明では、総メモリ量が増えても、各ゲストOSに対する割当メモリ量が一定であれば、圧縮したpage構造体配列の大きさは増大しない。
【００２４】
改良後のPFNと物理アドレスの相互の変換式は次の通りである。
【００２５】
【数２】
2014049016.tif 000004
【００２６】
数式１に示した従来の変換式と比較して複雑ではあるが、実行速度面では、未だ十分高速である。
【実施例２】
【００２７】
本発明は、Linuxにおいて、特に、page構造体配列において説明をしたが、ページ番号をインデックスとして、低位メモリに置かれるゲストOSが物理メモリ管理する管理情報を有する構造体配列を圧縮する方法として有効な手法である。
このようなLinuxにおける物理メモリに関して管理する管理情報を有する構造体配列としては、物理アドレスと仮想アドレスの変換を管理するpage構造体や、物理メモリ使用量の管理・制限機能であるアカウンティングのためのpage_cgroup構造体(アカウンティング構造体)がある。
【００２８】
また本発明は、Linuxに限らず他の仮想メモリ方式のマルチ・ゲストOSにおいても、ゲストOSが物理メモリに関して管理する管理情報を有する従前同様の構造体配列により管理情報を管理するメモリ管理方法において有効であることは明らかである。
【実施例３】
【００２９】
本発明は、ある物理アドレスを境界として、物理メモリの特性が異なる場合の物理メモリ管理方法としても有効な手法である。
例えば、高速で小容量のSRAM(第１の物理メモリ)と、低速で大容量のDRAM(第２の物理メモリ)が混在するシステムの場合に、SRAMのある物理アドレスを必須領域とし、DRAMのある物理アドレスを選択領域として本発明の物理メモリ管理手法を適用することにより、マルチ・ゲストOSが管理する必要のないメモリの隙間を除外して、物理メモリに関して管理する管理情報を有する構造体配列を圧縮して効率よく小容量の領域に納め、高速にアクセスすることが可能になる。
【実施例４】
【００３０】
上述した物理メモリの管理方法を少なくとも物理メモリとプロセッサを備える情報処理装置に容易に実装できることは言うまでもなく明らかである。
【産業上の利用可能性】
【００３１】
本発明は、特に、i386アーキテクチャ用のLinuxにおいて説明をしたが、少なくとも物理メモリとプロセッサからなる情報処理装置において仮想メモリ方式を採用するマルチ・ゲストOSに係る物理メモリ管理方法としては有効な手法である。
また、本発明は、マルチ・ゲストOSに対応するマルチプロセッサ方式の情報処理装置において好適であるが全てのマルチ・ゲストOSを仮想機械(Virtual Machine(VM))方式で処理するシングルプロセッサ方式においても、物理メモリの有効な利用法であって、本発明はこれを除外するものではない。
【００３２】
また、本発明は、「各ゲストOSにより分割して使用される物理メモリ」の管理手法を提示したが、各ゲストOSが「共有して使用する物理メモリ」を含んでもよい。
その場合には、「共有して使用する物理メモリ」は、各ゲストOSのpage構造体配列においては、各ゲストOSに割り振られた物理メモリの一部として取り扱えばよい。
【符号の説明】
【００３３】
１  物理メモリ
２  ページ構造体配列
３  仮想メモリ
４  物理メモリ・アドレス  0x040000000
５  物理メモリ・アドレス  0x000000000
６  ページ・フレーム番号  max_PFN
７  ページ・フレーム番号  max_low_PFN
８  ページ・フレーム番号  ０
９  仮想メモリ・アドレス  0xffffffff
１０  仮想メモリ・アドレス  0xC0000000
１１  物理メモリの隙間
１２  ページ構造体配列の隙間
【図１】
2014049016.tif 000005
【図２】
2014049016.tif 000006
【図３】
2014049016.tif 000007