JP4769308B2 - 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法 - Google Patents

仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法 Download PDF

Info

Publication number
JP4769308B2
JP4769308B2 JP2009010085A JP2009010085A JP4769308B2 JP 4769308 B2 JP4769308 B2 JP 4769308B2 JP 2009010085 A JP2009010085 A JP 2009010085A JP 2009010085 A JP2009010085 A JP 2009010085A JP 4769308 B2 JP4769308 B2 JP 4769308B2
Authority
JP
Japan
Prior art keywords
page
guest
paging
vmm
virtual machine
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.)
Active
Application number
JP2009010085A
Other languages
English (en)
Other versions
JP2010170210A (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.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions 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 Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2009010085A priority Critical patent/JP4769308B2/ja
Publication of JP2010170210A publication Critical patent/JP2010170210A/ja
Application granted granted Critical
Publication of JP4769308B2 publication Critical patent/JP4769308B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、仮想的に計算機実行環境を提供する仮想計算機システムにおけるページフォルト処理に好適な、仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法に関する。
古くから、メインフレームにおいてハードウェア(HW)による仮想計算機(Virtual Machine: VM)支援機構を使った仮想計算機システムが知られている。また、近年は、パーソナルコンピュータ(PC)に搭載されているプロセッサが同様のVM支援機構をHWでサポートしてきたこともあり、PCの世界でも計算機の仮想化技術が活用されるようになってきている。今後は個人用のPCや、PCを用いて実現されるサーバ(いわゆるPCサーバ)等においても、仮想計算機の技術が広く利用されることが予測される。
典型的な仮想計算機システムでは、計算機(実計算機)のハードウェア上に仮想計算機管理機構(virtual machine manager/monitor: VMM)が存在する。実計算機のハードウェアは、CPU(実CPU)、メモリ(実メモリ)、各種入出力装置(実入出力装置)等で構成されている。VMMは一般にソフトウェアモジュールを用いて構成される。VMMは、ハードウェアを直接管理し、それを仮想化して仮想計算機(仮想マシン)を構築する。仮想計算機は、仮想CPU、仮想入出力(I/O)装置等から構成される。つまりVMMは、仮想CPU、仮想I/O装置のイメージを作り、実CPUや実I/O装置、実メモリ等のHWリソースを時間的、領域的に仮想CPU、仮想I/O装置、仮想計算機のメモリとして割り当てる。このようにしてVMMは仮想計算機を構築する。仮想計算機にはゲストOSと呼ばれるオペレーティングシステム(OS)がロードされる。このゲストOSは、仮想CPUにより実行される。
このような仮想計算機システムでは、目的に合わせて複数のゲストOSを稼動させることができる。これは、通常の計算機システム(非仮想計算機システム)にはない、仮想計算機システムの利点である。
ところで、一般にOSは十分な大きさ(記憶容量)の主メモリを必要とする。主メモリの記憶容量が少ないとページング処理が多発し処理効率(処理性能)が落ちる。仮想計算機システムにおいては、実計算機に搭載される主メモリを各ゲストOSで分け合って使う必要がある。このため、ゲストOSの数が多くなるほど各ゲストOSに割り当てられる記憶容量(の平均値)は少なくなる。そこで、例えば非特許文献1では、VMMによるオンデマンドページングと、共通のデータを有するページをゲストOS間で共有する技術とが提案されている。
ここで例に取り上げる仮想計算機システムにおけるVMMも、ゲストOSに割り当てられたメモリ(メモリ領域、メモリ空間)に対してデマンドページング処理を行うものとする。VMMのメモリマネージャは、ページアウトしてもペナルティが少ないページを、適切なアルゴリズムによってページアウト対象として選択し、ページアウト処理を行う。適切なアルゴリズムには、通常はLRU(Least Recently Used)アルゴリズムが用いられることが多い。このアルゴリズムによれば、最近の使用頻度が少ないページがページアウト対象として選択される。ページアウト対象のページ(メモリページ)は、CPUに内蔵されているメモリ管理ユニット(MMU)の管理テーブル上でVMMによって「無効」として登録され、当該ページ(内のデータ)が外部記憶装置に書き出される。このページの書き出し(つまりページアウト)が終わり次第、そのページは他の目的で使用される。
その後、ゲストOSがページアウトされているページにアクセスすると、当該ページはMMUの管理テーブル上で「無効」として登録されているので、当該MMUによってページフォルトトラップが発生される。するとVMMに制御が渡り、VMMは、ページフォルトトラップが発生したページを対象とするページインの処理を行う。このページにアクセスしようとしたゲストOSは通常「ブロック状態」となり動作することができず、VMMによるページイン処理が終わるまで当該VMMによって実行を待たされる。
このように、VMMによってゲストOSのメモリ領域にデマンドページングを実施することにより、実メモリよりも見かけ上多くのメモリを各ゲストOSが使用できるようになる。しかしながら、VMMによるデマンドページングでは、以下に述べるような不具合が発生する可能性がある。
まず、VMMによるデマンドページングを説明する前に、通常の計算機システムにおける典型的なOSのページング処理について説明する。典型的なOSは、当該OSのカーネル内のメモリ領域(カーネル領域、カーネル空間)を対象とするデマンドページング処理を行わないことが多い。一方、OS上で実行されるユーザプロセスに割り当てられるメモリの管理には仮想記憶方式が採用されおり、当該メモリはカーネルによるデマンドページング処理の対象されることが多い。
このようなOSにおいては、ユーザプロセスのメモリ空間(仮想アドレス空間)の全てに実メモリ内のページ(実ページ)が割り当てられているとは限らない。このため、アクセス頻度が低い仮想アドレス空間内のページ(仮想ページ)はページアウトの対象となり、カーネルにより外部記憶装置にページ(内のデータ)が書き出された(データの退避)後、そのページは開放されて他の用途に使用される。ユーザプロセスが再びそのページ(を指定する仮想アドレス)にアクセスすると、そのページには実ページが割り当てられていない(つまりMMUに無効なページとして登録されている)のでページフォルトトラップが発生する。
カーネル(OSのカーネル)は、ページフォルトトラップ発生を機にユーザプロセスからCPUを奪う。そしてカーネルは、当該カーネルによるページイン処理として、ページフォルトトラップが発生したページ(仮想アドレス空間内のページ)への新たな実ページの割り当てと、そのページに対する外部記憶装置からの退避データの読み込みとを行う。この処理にはI/O処理が伴い、比較的長い時間がかかる。このため、ページフォルトを起こしたユーザプロセスは、その処理の間ブロックされる(つまりページイン待ち状態として待機状態になる)。そこでカーネルは、他の実行可能なユーザプロセスを選択し、この選択されたユーザプロセスにCPUを割り当てる。その後、ページインのためのI/O処理が完了すると、I/O完了割り込みが発生する。
I/O完了割り込みが発生すると、カーネルは、その割り込みを受けて処理を開始する。するとカーネルは、ページイン待ちでブロックされていたユーザプロセスを実行可能状態にして再スケジューリングする。その後、実行可能状態にされたユーザプロセスに、しかるべきタイミングでCPUが割り当てられる。これにより、CPUが割り当てられたユーザプロセスでは、ページフォルトを起こした状態から処理が再開される。
上述の典型的なOSの説明では、カーネル内のページフォルトは起こらないものとしている。しかし、例えばマイクロソフト社のWindows(登録商標)など、カーネル内でのページングを実現しているOSもある。このようなOSにおいても、ユーザプロセスの場合と同様に、ページフォルトを起こしたカーネル内のスレッド(処理の流れ)は一時的にページイン処理待ちとなってブロックされる。そして、ユーザプロセスの場合と同様に、カーネルにより、他の実行可能なカーネル内のスレッド(カーネルスレッド)にCPUが渡される。これにより、システム全体としてはCPUを使い続けることができる。
なお、ページングを行うカーネルを「ページャブルなカーネル」と呼ぶことがある。ページャブルなカーネルにおいても、全ての領域がページング可能であることは少ない。つまり、特定領域はページング管理の対象外であり、常にページを貼り付けておかなければいけない領域が存在していることが多い。このような特定領域として、例えばページフォルト処理をするためのメモリ領域等が知られている。
OS(のカーネル)は、VMMと同様にメモリマネージャを有している。OSのメモリマネージャは、当該OS上で実行されるユーザプロセス(のメモリ空間)に割り当てられているページを必要に応じてページアウトする。このページアウトされているページにユーザプロセスがアクセスしようとすると、メモリフォールトトラップが発生する。すると、OSのメモリマネージャによりページインの処理が行われる。
トラップを起こしたユーザプロセス(より詳細には、トラップ発生の要因となった、ページアウトされているページにアクセスしたユーザプロセス)は、OS(のカーネル)によって「ページイン待ち状態(ブロック状態)」に設定される。そしてOSによって、他の実行可能なユーザプロセスが選択されて、その選択されたプロセスにCPUがディスパッチされる。ここでOSが、カーネル内のメモリ領域(カーネル空間)でのページングもサポートしているものとする。つまり、カーネル内でページング可能なメモリ領域があり、そのメモリ領域はページング対象になるものとする。このページング可能なメモリ領域内のページがページアウトされると、カーネル内で、このページアウトされたページにアクセスしようとしたカーネルスレッドは、やはりページフォルトラップを起こす。すると、ページフォルトラップを起こしたカーネルスレッドは、ページイン処理が完了するまでブロックされる。この場合、他の実行可能なカーネルスレッドが選択されて制御が切り替わることで、システム全体としては処理が進む。
このように、通常のOSにおいて、ユーザプロセスあるいはカーネルスレッドのいずれも、ページアウトに起因するページフォルトにより、そのプロセスあるいはカーネルスレッドはページインの処理に伴って一時的に実行がブロックされる。その一方、OS内の他の実行可能なユーザプロセスあるいはカーネルスレッドが実行されるためにCPUは継続して利用され続け、システム全体とすれば有効にCPUが使用される。つまり、ページフォルトの度に、OS内に実行できる処理が存在しなくなるということはない。
次に、上述のようなOSがゲストOSとして仮想計算機上で実行される状態を想定する。ここではVMMがゲストOSのメモリ領域に対してデマンドページングを行うことにより、実メモリが有するよりも多くのページ(メモリページ)を仮想的な「ページ」としてゲストOSに割り当てるものとする。このとき、上述のような、通常のOS(カーネル)がその上で実行されるユーザプロセスに対して行うページング処理と同様の処理を、VMMがゲストOSに対して行うならば、効率が悪い。この点について、以下で説明する。
VMMは、各ゲストOSに割り当てられているページの中から、適切な戦略(メモリスケジューリングのポリシ)に基づいて使用頻度の低いページを選別してページアウトする。このページアウトされたページをゲストOSがアクセスすると、VMMのメモリ管理によってページフォルトが発生する。この場合、ページアウトされたページがVMMによってページインされるまで、当該ページにアクセスしたゲストOSはブロックされる。
つまり、ゲストOS自身によりページアウトされたページへのアクセスの場合には、上述の通り、当該ゲストOSが他の実行可能なユーザプロセスにCPUを割り当てることにより、ゲストOSとして継続して動作可能である。これに対して、VMMがページアウトしたページへのアクセスに起因するページフォルトでは、VMMは当該ページにアクセスしたゲストOS(つまりページフォルトを起こしたゲストOS)をブロックせざるを得ない。この結果、ページフォルトを起こしたゲストOSは継続して動作することができなくなる。
各ゲストOSのカーネルはVMMから割り当てられたたページを「(なくなることの無い)物理ページ」、つまり常に存在しCPUから常にアクセスできるページとして扱うのが一般的である。しかしながら、VMMによりページアウトされているページが存在すると、そのページにゲストOSがアクセスした瞬間にページフォルトが発生し、VMMによるページインの処理が発生する。すると、ページアウトされているページにアクセスしたゲストOS(第1のゲストOS)は、VMMによるページインの処理が完了するまで制御を奪われる。つまり、他の実行可能なゲストOS(第2のゲストOS)にCPUが割り当てられ、第1のゲストOSの実行は待たされる。
このような従来技術の不具合について以下に詳述する。
まず、仮想計算機システムが、計算機本体と外部記憶装置とから構成されるものとする。外部記憶装置は、VMM及び複数のゲストOSそれぞれのページング領域、つまりVMMページング領域及びゲストOS毎のゲストOSページング領域を含んでいる。
VMMは、内部にメモリマネージャを有している。VMMは、仮想計算機を構築する。この仮想計算機上で複数のゲストOSが実行される。複数のゲストOSには、VMMにより実メモリが割り当てられている。ここでは、複数のゲストOSに割り当てられた実メモリ内のページ(メモリページ)のうち、使用頻度の少ないページがページアウト処理の対象としてVMMによって選択される。
[VMMによるページアウト処理]
ここで、VMMによるページアウト処理について説明する。VMMのメモリマネージャは常にシステム内の実メモリの使用状態を監視している。VMMのメモリマネージャは、システム内の実メモリの空き領域(空きページ)が逼迫してきたなら、各ゲストOSが使用する仮想アドレス空間内のページに割り当てられている実メモリ内のページの中から使用頻度の低いページを選択し、選択されたページをゲストOSから回収する。VMMのメモリマネージャは、回収されたページ内のデータを、外部記憶装置内のVMMページング領域に退避する。しかる後にVMMのメモリマネージャは、データが退避されたページを、当該ページを必要とするシステム内の他の処理(ページを必要としているゲストOS等)に割り当てる。
このように、ページアウトの対象となるページは、ゲストOSが使用する仮想アドレス空間内のページである。このページに元々格納されていたデータは、ページアウト処理の結果、VMMページング領域に保存される。ページアウト処理の際、VMMが有するVMMページアウトメモリ管理テーブルに、ページアウトの対象となったページの情報が記録される。この情報は、一般に、ページアウトの対象となったページを使用していたゲストOS(のID)、当該ページの仮想アドレス空間内のアドレス(仮想アドレス)、及び当該ページのデータが退避されたVMMページング領域内のアドレスを含む。
[VMMによるページイン処理]
次に、VMMによるページイン処理について説明する。VMMによってページアウトされたページにゲストOSがアクセスすると、CPUに内蔵されているMMUはページフォルトトラップを発生する。例えば、ゲストOS上で動作するユーザプロセスが、当該ゲストOSの使用するメモリ(仮想アドレス空間)内のある仮想アドレスで指定されるページにアクセスしようとすると、ページフォルトトラップが生じてVMMに制御が渡る。
VMMのメモリマネージャは、VMMページアウトメモリ管理テーブルを参照して、ページフォルトの要因となったページ(VMMによってページアウトされたページ)へのアクセスを試みた(ユーザプロセスが動作する)ゲストOS(のID)と当該ページの仮想アドレス(ターゲットの仮想アドレス)とを含む情報を検索する。もし、この情報が検索できたならば、VMMのメモリマネージャは、ターゲットの仮想アドレスで指定されるページは、VMMによりページアウトされたと判断する。逆に、ページフォルト時にそのページの情報が検索できなかったならば、VMMのメモリマネージャは、そのページはVMMによりページアウトされているページではないと判断する。
VMMのメモリマネージャは、ターゲットの仮想アドレスで指定されるページがVMMによりページアウトされたと判断した場合には「ページイン処理」を実行する。この「ページイン処理」において、ページフォルトの要因となったアクセスが試みられたページに実ページを割り当てる処理と、そのページに(ページング領域から)データを復帰する処理とが行われる。「ページイン処理」はI/O処理を伴い、完了するまで比較的長い時間を要する。
そこで、VMMのメモリマネージャは、ページフォルトの要因となったページへのアクセスを試みたユーザプロセスが動作するゲストOSを「ページイン待ち状態(ブロック状態)」に設定する。するとVMMが有するゲストOS実行管理機構は、「ページイン待ち状態」に設定されたゲストOSからCPUを奪い、他の実行可能なゲストOSに当該CPUを割り当てる。
その後、VMMのメモリマネージャによるページイン処理が完了すると、VMMが有するページイン完了時処理モジュールは、ページインされたページに関して、VMMページアウトメモリ管理テーブルから該当する登録情報を削除する。
するとVMMのメモリマネージャは、ページインされたページを有するゲストOSを「ページイン待ち状態(ブロック状態)」から「実行可能状態」に変える。「実行可能状態」に変えられたゲストOSは、その後のVMMのゲストOS実行管理機構によるスケジューリングでCPUディスパッチの対象になり、ディスパッチャによってCPUが割り当てられた時点から動作を再開する。
以上、ゲストOS上で動作するユーザプロセスが使用するメモリ領域に関するVMMによるページング処理について説明した。しかし、VMMによるページングの対象はユーザプロセスが使用するメモリ領域だけに限らない。例えば、ゲストOSのカーネルが使用するメモリ領域がページングの対象になる場合もある。
ここで、注意しなければならないことは、次の点である。
まず、通常の計算機システムにおける典型的なOSのページング処理を想定する。この典型的なOSのページング処理では、前述したように、OSによりページアウトされたページにユーザプロセスがアクセスしたためにページフォルトトラップが発生しても、他の実行可能なユーザプロセスに制御が切り替えられる。これにより、システムとしてはCPUを有効に使い続けることができる。
しかしながら、仮想計算機システムでは、VMMによりページアウトされたページにゲストOS上で動作するユーザプロセス(またはカーネルスレッド)がアクセスしたためにページフォルトトラップが発生した場合、通常の計算機システムと異なって、そのゲストOS内の他の実行可能なユーザプロセス(またはカーネルスレッド)に制御を切り替えることができない。その理由は、次の通りである。
第1の理由は、VMMによりページングが管理されているため、ページフォルトトラップ発生をきっかけとする通常のゲストOS内のメモリマネージャによるページングの処理を行うことができない点にある。第2の理由は、ページアウトされたページのデータが退避されるページング領域はVMM内のメモリマネージャが管理しているため、ゲストOS内のメモリマネージャはVMMのページングに関与できない点にある。
このため、仮想計算機システムでは、ゲストOSを切り替えることでCPUを使い続けようとする。しかし、ページフォルトトラップを起こしたゲストOS内に実行可能なプロセス(またはスレッド)が存在しているならば、システムの効率は低下する。
一方、ゲストOS内でのページングによりページアウトされたページへのアクセスでページフォルトトラップが発生した場合には、通常の計算機システムにおけるのと同様のページング処理が行われる。この場合、CPUは、ページフォルトトラップを起こしたゲストOS内で実行可能な処理に割り当て直されて継続して使われる。ところが、VMMによりページアウトされたページへのアクセスでページフォルトトラップが発生した状況でCPUを使い続けるには、上述のように、ゲストOS自体を切り替えるしかない。
これまでの説明から理解されるように、ゲストOSは、自身が管理するページに関して、自身が行うメモリ管理の一環としてデマンドページングを行っている。このため、たとえゲストOS上で実行されるプロセスからのページアウトされているページへのアクセスに起因してページフォルトが発生しても、当該ゲストOS内の他の実行可能なプロセスにスイッチすることができる。これにより、仮想計算機システム全体としてCPUを効率よく利用することができる。
しかし、ゲストOSが使用するメモリページのVMMによる管理に関しては、VMMがページアウトしたページに対してゲストOSがアクセスすることによってページフォルトが発生すると、他のゲストOSにスイッチするしかない。このため、せっかく、ゲストOS内で効率よくページング処理を行っていたとしても、VMMによるページング処理によりゲストOSがブロックされてしまう状況が発生し、効率が悪かった。
そこで、上記非特許文献1は、バルーンと呼ばれる方法を提案している。この方法では、ゲストOS内で特別なアプリケーションプログラムが実行される。この特別なアプリケーションプログラムの実行により、ゲストOS内のメモリ使用状況を含むシステムの状態が監視されて、当該システムに悪影響を及ぼさない範囲内で、ゲストOSで使用可能ななるべく多くのページ(メモリ領域)が、当該ゲストOSによるページングの対象にされない状態で確保される。確保されたページのページアウトは、そのページをゲストOSからVMMにこっそり通知することにより、VMMによって行われる。
この確保されたページをゲストOS内で取り扱うプロセスはなく、且つカーネルもページングの対象にしないので、安全にVMMによるページング処理の対象にできる。つまり、ゲストOS内で何らかの処理(プロセスまたはスレッド)がページアウトされたページにアクセスしても、当該処理(プロセスまたはスレッド)を含むゲストOSがブロックされる事態は生じない。
"Memory Resource Management in VMware ESX Server", Carl A. Waldspurger, VMware, Inc., In Proc. Fifth Symposium on Operating Systems Design and Implementation (OSDI '02), Dec. 2002、[2007年9月30日検索]、インターネット<URL: http://www.waldspurger.org/carl/papers/esx-mem-osdi02.pdf>
上述した通り、仮想計算機上で動作するゲストOSが使用可能なメモリページに対するVMMによるページングでは、一般のOS、或いはゲストOS自身で行っているデマンドページングに比べると、ページアウトされているページへのアクセスに起因してページフォルトが発生した場合に、ページフォルトを起こしたゲストOSは継続して動作することができなくなるという問題があった。特に、VMMからはゲストOS内のプロセス管理やスレッド管理ができないため、ゲストOS単位でCPUの割り当てを変えるしかなく、ゲストOSにとって効率の悪い状況となっていた。
一方、非特許文献1に記載された方法では、アプリケーションプログラムから指定されたページに関しては、そのページがVMMによってページアウトされて、そのページアウトされたページに、ゲストOS内のプロセスまたはスレッドがアクセスしても、当該プロセスまたはスレッド(を含むゲストOS)がブロックされるのを防止できる。
しかし、非特許文献1に記載された方法では、アプリケーションプログラムから指定されたページのみしか効率よくVMMがページアウトすることができない。また、アプリケーションプログラムによってゲストOS内のメモリ使用状況を正確に把握することには限界があり、精度の良いページングは難しい。要するに、非特許文献1に記載された方法は、柔軟性に乏しい。
本発明は上記事情を考慮してなされたものでその目的は、仮想計算機管理機構によるページングを実現しながら、当該仮想計算機管理機構によってページアウトされたページへのゲストOSからのアクセスに起因してページフォルトが発生しても、当該ゲストOSがブロックされるのを防止できる、仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法を提供することにある。
本発明の1つの観点によれば、CPUを含むハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを実行させるための管理を行う仮想計算機管理機構が提供される。前記仮想計算機管理機構は、前記複数のゲストOSに割り当てられたメモリ領域に対してページを単位にページアウト処理を含むデマンドページング処理を行うページング手段と、前記ページング手段によってページアウトされたページに関するページアウト管理情報を保持するページアウト管理情報保持手段とを具備する。前記ページング手段は、ページアウトされたページに対してゲストOSがアクセスしたことによりページフォルトが発生した際に、当該ページフォルトが発生したページに関するページアウト管理情報が前記ページアウト管理情報保持手段に保持されていることをもって、当該ページフォルトの要因が前記ページング手段によってページアウトされたページへのアクセスにあると判定して、その旨を当該ページフォルトが発生したページにアクセスした前記ゲストOSに通知すると共に当該ゲストOSにページフォルトトラップを配信し、且つ当該ページアウトされたページにデータを復帰するためのページイン処理を実行する。
本発明によれば、ゲストOSが起こしたページフォルトの要因が、VMMのページング手段)によってページアウトされたページへのアクセスにあることが、当該VMMのページング手段から当該ゲストOSに通知される構成とすることにより、従来技術では当該ゲストOSの実行をブロックするしかなかったページフォルト(つまりVMMによってページアウトされたページへのアクセスに起因して当該ゲストOSが起こしたページフォルト)に関して、VMMのページング手段からの上記通知を受けたゲストOSが、ページフォルトを起こした処理をVMMのページング手段によるページイン処理の完了待ちの状態に設定することが可能となり、当該ゲストOS自体がブロックされるのを防止することができる。これにより、ページフォルトを起こした処理を実行していたゲストOSにおいて、他の処理(つまり他のユーザプロセスまたはカーネル内スレッド)の実行に切り替えて当該ゲストOS自体は動作を継続することができ、VMMによるページングを実現しながら、効率のよいゲストOS内スケジューリングを可能とする。
以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係る仮想計算機システムの構成を示すブロック図である。図1に示される仮想計算機システムは、計算機本体10と外部記憶装置20とから構成される。
計算機本体10は、例えば、PC(パーソナルコンピュータ)やPCサーバのような実計算機を用いて実現される。実計算機は、CPU(実CPU)、メモリ(実メモリ)、各種I/O装置(実I/O装置)等で構成されるハードウェア(HW)を有している。図1では、このHWは省略されている。
計算機本体10は、仮想計算機管理機構(virtual machine manager/monitor:VMM)11を含む。VMM11は、周知のように、計算機本体10が有するHWを構成するHWリソース(CPUを含むHWリソース)を管理する。VMM11は、このHWリソースの管理によって、当該HWリソースを、時間的、領域的に割り当てる(配分する)ことにより、例えばn台の仮想計算機(仮想マシン)12-1〜12-nを構築する。仮想計算機12-1〜12-nは、VMM11上で動作する。図1では、仮想計算機12-1〜12-nを構成する、仮想CPU等は省略されている。
仮想計算機12-1〜12-n上では、それぞれゲストOS13-1(#1)〜13-n(#n)が動作する。本実施形態においてゲストOS13-1〜13-nは、いわゆる「パラ・バーチャライゼーション」と呼ばれるゲストOS実装(実行)方式を適用することを前提としている。すなわち、ゲストOS13-1〜13-nは初めからVMM11上で動作することを前提とした実装がなされている。
なお、「パラ・バーチャライゼーション」に対して「フル・バーチャライゼーション」と呼ばれるゲストOSの実装方式も知られている。「フル・バーチャライゼーション」では、通常の実計算機(物理計算機)で実行されるOSと同じ構造のOSを仮想計算機上でゲストOSとして動作させることを前提としている。つまり、フル・バーチャライゼーション」は、カーネルを特別にゲストOS向けに修正(VMM上でゲストOSが動くことを前提にゲストOSそのものを修正)しないという方針の実装方式である。
フル・バーチャライゼーションでは、通常の実計算機で動いているOSが、何の修正もなくそのままゲストOSとして仮想計算機上で動くことが可能である。このためフル・バーチャライゼーションの適用によって実装されるゲストOSは、移植性が高く使いやすい反面、VMMと密に連携できずに効率が悪い部分が多々ある。また、フル・バーチャライゼーションを実現するVMMを実装するためには、VMMが生成する仮想計算機は実計算機と全く同じ見せ方をする必要があるので、実装コストは一般的に大きい。
これに対し、パラ・バーチャライゼーションはゲストOSを修正する必要がある。しかし、パラ・バーチャライゼーションの適用によって実装されるゲストOSは、VMMと協調して動作し、互いに効率よく動作できる可能性がある。このため、最近パラ・バーチャライゼーションが注目されている。
ゲストOS13-1〜13-n上では、それぞれ1つ以上のユーザプロセス14が動作可能であるものとする。ゲストOS13-1〜13-nは、それぞれ当該ゲストOS13-1〜13-nの中枢をなすカーネル(ゲストOSカーネル)15-1〜15-nを含む。
ゲストOSカーネル15-1〜15-nは、それぞれ当該ゲストOSカーネル15-1〜15-n(内で動作するカーネルスレッド)によってアクセス可能なメモリ領域(カーネル内メモリ領域)16-1〜16-nを含む。
カーネル内メモリ領域16-1は、ゲストOSカーネル15-1内の後述するメモリマネージャ17によるページングの対象となる1つ以上の仮想アドレス領域を含むものとする。ゲストOS13-1上で動作するユーザプロセス14が使用するページもゲストOSカーネル15-1内のメモリマネージャ17によるページングの対象となる。一方、カーネル内メモリ領域16-1〜16-nのうち、カーネル内メモリ領域16-1以外のカーネル内メモリ領域も、メモリマネージャ17と同様のメモリマネージャによるページングの対象となる1つ以上の仮想アドレス領域を含むものとする。また、ゲストOS13-1〜13-nのうち、ゲストOS13-1以外のゲストOS上で動作するユーザプロセス14が使用するページも、そのゲストOSのゲストOSカーネル内のメモリマネージャによるページングの対象となる。
図1には、ゲストOS13-1〜13-n上で動作するユーザプロセス14によって使用(アクセス)されたページ及びゲストOSカーネル15-1〜15-nによって使用(アクセス)されたカーネル内メモリ領域16-1〜16-nのページのうち、VMM11によってページアウトされたページPVMM1〜PVMM8が示されている。また、図1には、上述のページのうち、ゲストOS13-1,13-nによってページアウトされたページPOS1〜POS6も示されている。
ゲストOSカーネル15-1は、カーネル内メモリ領域16-1を管理するメモリマネージャ17を含む。メモリマネージャ17は、ページングモジュール171、ページイン完了時処理モジュール172及び図示せぬページアウトメモリ管理テーブルから構成される。これらページングモジュール171、ページイン完了時処理モジュール172及びページアウトメモリ管理テーブルは従来からよく知られているため、説明を省略する。
VMM11は、ゲストOSインターフェイス機構111、ゲストOS実行管理機構112及びメモリマネージャ113を含む。
ゲストOSインターフェイス機構111は、VMM11が提供する種々のサービスを利用するためのゲストOS13-1〜13-nからの要求を当該VMM11に通知するのに用いられる、いわゆるシステムコール機構である。ゲストOS13-1〜13-nは、ゲストOSインターフェイス機構111を使うことにより、VMM11に種々のサービスを要求することができる。これらの要求は、例えば、(1)メモリ割り当ての要求、(2)CPU割り当て量の増減の要求、(3)MMU操作の要求、(4)割り込みマスク操作の要求、(5)割り込みステータス取得の要求等が一般的である。
本実施形態では、ゲストOS13-1〜13-nはパラ・バーチャライゼーションを前提としている。このため、ゲストOSインターフェイス機構111を使用することでVMM11が提供する種々のサービスを要求するための機能を、ゲストOS13-1〜13-nに持たせることができる。つまりゲストOS13-1〜13-nのカーネル(ゲストOSカーネル)15-1〜15-nは、VMM11によって管理されるHWリソースの操作を、ゲストOSインターフェイス機構111を用いてVMM11に要求するように構成されている。これに対し、実計算機(物理計算機)上で動作するOSは、直接HWリソースにアクセスして操作するのが一般的である。
ゲストOS実行管理機構112は、VMM11が管理するゲストOS13-1〜13-nの各々にどの程度の時間の割合でCPUを割り当てるかを計算し決定するスケジューラとしての機能を有するモジュールである。つまりゲストOS実行管理機構112は、ゲストOS13-1〜13-nの実行スケジュールを計算し決定するためのスケジューリング処理を行う。
ゲストOS実行管理機構112はまた、ディスパッチャとしての機能をも有する。つまりゲストOS実行管理機構112は、当該ゲストOS実行管理機構112のスケジューリング処理によって決定されたスケジュールに従って、ゲストOS13-1〜13-nにCPUを割り当てるディスパッチ処理も行う。
メモリマネージャ113は、ゲストOS13-1上で実行されるユーザプロセス14が使用するページ及びカーネル内メモリ領域16-1内のページのVMM11によるページング処理を管理する。メモリマネージャ113は、VMMページングモジュール114、VMMページイン完了時処理モジュール115、VMMページアウトメモリ管理テーブル116及びVMMメモリ管理テーブル117から構成される。
VMMページングモジュール114は、ゲストOS13-1〜13-n上でそれぞれ実行されるユーザプロセス14が使用するページ及びカーネル内メモリ領域16-1〜16-n内のページを必要に応じて外部記憶装置20にページアウトするためのページアウト処理を行う。VMMページングモジュール114は、ページアウトされたページにゲストOS13-1〜13-nがアクセスしたためにページフォルトが発生した場合に、必要に応じて当該ゲストOS13-1〜13-nにページフォルトトラップを配信するトラップ配信モジュールを含む。VMMページングモジュール114はまた、ページフォルトの要因となったアクセス(ページアクセス)が試みられたページに実ページを割り当て、そのページに外部記憶装置20からデータを復帰するページイン処理を行う。
VMMページイン完了時処理モジュール115は、VMMページングモジュール114によるページイン処理(VMMページイン処理)が完了した際に動作して、当該VMMページイン処理の完了時の処理を行う。この処理においてVMMページイン完了時処理モジュール115は、VMMページイン処理の完了を、ページフォルトの要因(当該ページイン処理の要因)となったアクセス(ページアクセス)を試みたゲストOSに通知するための割り込み(VMMページイン完了通知割り込み)を発行する。
VMMページアウトメモリ管理テーブル116は、VMM11に割り当てられているメモリ(図示せず)に格納される。VMMページアウトメモリ管理テーブル116は、VMMページングモジュール114によるページアウトの対象となったページの情報(ページアウト管理情報)を保持する保持手段(ページアウト管理情報保持手段)として用いられる。このVMMページアウトメモリ管理テーブル116に保持(登録)されるページアウト管理情報は、ページアウトの対象となったページを使用していたゲストOSのID(ゲストOS ID)、当該ページの仮想アドレス空間内のアドレス(仮想アドレス)、及び当該ページのデータが退避された後述するVMMページング領域21内のアドレス(VMMページング領域アドレス)を含む。
図2は、VMMページアウトメモリ管理テーブル116のデータ構造例を示す。図2の例では、ページアウトの対象となったページのページアウト管理情報として、ゲストOS ID=2、仮想アドレス=0x80003000、VMMページング領域アドレス=0x4003802からなる情報が、VMMページアウトメモリ管理テーブル116に登録されていることが示されている。
VMMメモリ管理テーブル117は、VMMページアウトメモリ管理テーブル116と同様にVMM11に割り当てられているメモリに格納される。VMMメモリ管理テーブル117は、ゲストOS13-i(i=1〜n)のID(ゲストOS ID)と、当該ゲストOS13-iのゲストOSカーネル15-iがページャブル(ページャブルカーネル)であるか否かを示すフラグとを含む情報(サービス要求情報)を保持する保持手段(サービス要求情報保持手段)として用いられる。このサービス要求情報は、当該サービス要求情報中のフラグによってゲストOSカーネル15-iがページャブルことが示されている場合に、当該ゲストOSカーネル15-iのページング対象メモリ領域を示すメモリ領域情報を含む。
ゲストOS13-iのゲストOSカーネル15-iがページャブルであるとは、当該ゲストOSカーネル15-i(を含むゲストOS13-i)が本来、カーネルモードにおいてページングをサポートしていることを意味する。つまりゲストOS13-iのゲストOSカーネル15-iは、ページャブルなメモリ領域でのページフォルトトラップ発生時に、カーネルスレッドをスイッチして(切り替えて)処理を継続できるカーネルである。
図3は、VMMメモリ管理テーブル117のデータ構造例を示す。図3の例では、ページング対象メモリ領域を示すメモリ領域情報として、当該メモリ領域(仮想アドレス領域)の開始位置及び終了位置を示す情報、つまり開始仮想アドレス及び終了仮想アドレスの対が用いられる。
外部記憶装置20は、VMMページング領域21と、ゲストOSページング領域22-1〜22-nを有する。VMMページング領域21は、VMM11内のVMMページングモジュール114によるページアウトの対象となったページのデータを退避するのに用いられる。図1の例では、VMMページング領域21に、ページPVMM1〜PVMM8のデータが退避されている。
ゲストOSページング領域22-1〜22-nは、それぞれ、ゲストOSカーネル15-1〜15-n内のページングモジュールによるページアウトの対象となったページのデータを退避するのに用いられる。図1の例では、ゲストOSページング領域22-1にページPOS1〜POS4のデータが退避され、ゲストOSページング領域22-nにページPOS5,POS6のデータが退避されている。
次に、本実施形態の動作について説明する。
まず、ゲストOS13-i(i=1〜n)内のゲストOSカーネル15-iは、
(1)ページャブルカーネルであるか否か
(2)ページャブルカーネルであるならば、ページャブルなメモリ領域
をVMM11に予め通知する。この通知によってゲストOSカーネル15-iは、VMM11に対して特定のサービスを要求する。この特定のサービスとは、VMM11内のVMMページングモジュール114がページアウトしたページに対してゲストOS13-iがアクセスしたことを要因としてページフォルトが発生した場合に、VMM11が、その旨を当該ゲストOS13-iに通知し、且つページフォルトトラップを当該ゲストOS13-iに配信するサービスを意味する。
そのためVMM11内のゲストOSインターフェイス機構111は、ゲストOSカーネル15-iがページャブルカーネルであるか否かを当該ゲストOSカーネル15-iからVMM11に通知するのに用いられる第1のゲストOSインターフェイスを含む。この第1のゲストOSインターフェイスは、例えば
VMM_Interface_If_This_GuestOS_is_Pagable_Kernel(True or False);
のような、関数(インターフェイス関数)を用いて実現される。括弧内には引数が設定される。この引数に「True」または「False」を指定することで、該当するゲストOS13-i内のゲストOSカーネル15-iがページャブルカーネルであるか否かがVMM11に通知される。
またゲストOSインターフェイス機構111は、ゲストOS13-iのゲストOSカーネル15-iがページャブルカーネルである場合に、ページャブルなメモリ領域(仮想アドレス領域)を当該ゲストOSカーネル15-iからVMM11に通知するのに用いられる第2のゲストOSインターフェイスを含む。
第2のゲストOSインターフェイスは、例えば
VMM_Interface_Regstration_Pagable_Kernel_Area(StartAddress, EndAddress);
のような、関数(インターフェイス関数)を用いて実現される。括弧内には引数が設定される。この引数によりページャブルなメモリ領域の開始仮想アドレス(StartAddress)及び終了仮想アドレス(EndAddress)の対が指定される。もし、複数のページャブルな領域をVMM11に通知する必要があるときには、ゲストOS13-iのゲストOSカーネル15-iは、それぞれの領域毎に第2のゲストOSインターフェイスを用いる。
ここで、ゲストOS13-iがゲストOS13-1(i=1)であり、当該ゲストOS13-1のゲストOSカーネル15-1が、ページャブルカーネルであるものとする。この場合、ゲストOS13-1のゲストOSカーネル15-1は、上述の第1のゲストOSインターフェイスを使って、当該ゲストOSカーネル15-1がページャブルカーネルであることを予めVMM11に通知しておく。本実施形態では、この第1のゲストOSインターフェイスを用いたゲストOS13-1からVMM11への通知により、VMM11のVMMページングモジュール114によってページアウトされたページに対してゲストOS13-1がアクセスしたことを要因としてページフォルトが発生した場合に、VMM11が、その旨を当該ゲストOS13-1に通知し、且つページフォルトトラップを当該ゲストOS13-1に配信する特定のサービスが、当該VMM11に要求される。
またゲストOSカーネル15-1は、上述の第2のゲストOSインターフェイスを使って、ページャブルなメモリ領域(仮想アドレス領域)を、当該領域の開始位置及び終了位置を示す情報(つまり開始仮想アドレス及び終了仮想アドレスの対)により予めVMM11に通知しておく。
ゲストOS13-1のゲストOSカーネル15-1からの第1のインターフェイス、更には第2のゲストOSインターフェイスを用いた通知は、VMM11のゲストOSインターフェイス機構111で受け付けられる。
VMM11のメモリマネージャ113は、ゲストOS13-1のゲストOSカーネル15-1からの第1のインターフェイスを用いた通知に応じて、VMMメモリ管理テーブル117に、当該ゲストOS13-1のIDとページャブルカーネルであるか否かを示すフラグ(ここでは、ページャブルカーネルであることを示すフラグ)とを含むエントリ情報(サービス要求情報)を追加する。メモリマネージャ113はまた、ゲストOS13-1のゲストOSカーネル15-1からの第2のインターフェイスを用いた通知に応じて、VMMメモリ管理テーブル117内の当該ゲストOS13-1のIDを含むエントリ情報(サービス要求情報)に、通知されたページャブルなメモリ領域を示す情報(開始仮想アドレス及び終了仮想アドレスの対)を追加する。
次に、ゲストOS13-1〜13-nのうちの例えばゲストOS13-1によるページアクセスでページフォルトが発生した場合にVMM11によって実行される処理について、図4のフローチャートを参照して説明する。なお、ゲストOS13-1以外のゲストOSによるページアクセスでページフォルトが発生した場合も同様の処理が行われる。
今、ゲストOS13-1(更に詳細には、ゲストOS13-1上で動作するユーザプロセスまたはカーネルスレッド)が、ページアウトされているページにアクセスした結果、ページフォルトが発生したものとする。つまりゲストOS13-1に割り当てられたCPU(実CPU)に内蔵のMMUによってページフォルトが発生されたものとする。このページフォルトの発生(ページフォルトトラップ)により、VMM11内のメモリマネージャ113に含まれているVMMページングモジュール114に制御が渡る。すると、VMMページングモジュール114を始めとする、VMM11内の各モジュールにより、次のような処理(ページフォルト発生時の処理)が行われる。
まずVMMページングモジュール114は、VMMページアウトメモリ管理テーブル116を参照する(ステップ401)。そしてVMMページングモジュール114は、ページフォルトを起こしたゲストOS13-1のID及びページフォルトとなったページの仮想アドレスの対を含むページアウト管理情報がVMMページアウトメモリ管理テーブル116に登録されているかにより、当該ページフォルトの要因が、VMM11内のVMMページングモジュール114によってページアウトされたページへのアクセスにあるかを判定する(ステップ402)。
もし、ゲストOS13-1のID及びページフォルトとなったページの仮想アドレスの対を含むページアウト管理情報がVMMページアウトメモリ管理テーブル116に登録されていないならば、VMMページングモジュール114は、ゲストOS13-1におけるページフォルトの要因がVMM11内の当該VMMページングモジュール114自身によってページアウトされたページへのアクセス以外にあると判定する(ステップ402がNo)。つまりVMMページングモジュール114は、ゲストOS13-1におけるページフォルトの要因が、ゲストOS13-1内のメモリマネージャ17によって管理されているページングによるページフォルト(またはエラーによる不正アドレスへのアクセス)にあると判定する。この場合、VMMページングモジュール114(のトラップ配信モジュール)はゲストOS13-1にページフォルトトラップを配信する(ステップ403)。これにより、ページフォルト発生時のVMM11による処理は終了する。
ゲストOS13-1は、VMMページングモジュール114からのページフォルトトラップを受けて、当該ゲストOS13-1が起こしたページフォルトを、後述するように通常のページフォルトとして処理する(ステップ505)。
これに対し、ゲストOS13-1のID及びページフォルトとなったページの仮想アドレスの対を含むページアウト管理情報がVMMページアウトメモリ管理テーブル116に登録されているならば、VMMページングモジュール114は、ゲストOS13-1におけるページフォルトの要因が当該VMMページングモジュール114自身によってページアウトされたページへのアクセスにあると判定する(ステップ402がYes)。このとき、外部記憶装置20のVMMページング領域21には、ページフォルトとなったページのデータが退避されている。
ステップ402の判定がYesの場合、VMMページングモジュール114はは、ページフォルトとなったページのデータをページインするためのI/O処理(ページイン処理)を開始する(ステップ404)。つまりVMMページングモジュール114は、ページフォルトの要因となったアクセスが試みられたページに実ページを割り当て、外部記憶装置20のVMMページング領域21に退避(ページアウト)されていたデータを読み込んで、当該読み込まれたデータを、そのページに復帰するページイン処理を開始する。
次にVMMページングモジュール114は、ゲストOS13-1がページフォルトを起こした際に、当該ゲストOS13-1がカーネルモードであったか否か(ユーザモードであったか)を判定する(ステップ405)。つまり、VMMページングモジュール114はステップ405において、ゲストOS13-1がカーネルモードのときに発生したページフォルトであるかを判定する。このステップ405の判定は、ページフォルト発生時(ページフォルトトラップ時)のプロセッサの特権モードの情報(ここではゲストOS13-1がカーネルモードであるかユーザモードであるかを示す情報)を参照することで簡単に実現される。
もし、カーネルモードでないならば(ステップ405がNo)、VMMページングモジュール114は、ゲストOS13-1がユーザモードのときに発生したページフォルトであると判定する。この場合、VMMページングモジュール114(のトラップ配信モジュール)は、ゲストOS13-1にページフォルトトラップを配信する(ステップ406)。このステップ406において、VMMページングモジュール114は、ゲストOS13-1でのページフォルトの要因がVMM11がページアウトしたページへのアクセスにあることと、そのページのアドレス(ページフォルト発生アドレス)とを、当該ゲストOS13-1に通知する。ステップ406が実行されると、ページフォルト発生時のVMM11による処理は終了する。
ステップ406での上述の要因の通知は、高々1ビットで実現可能である。例えば、元々用意されているべき、VMM11からゲストOSに情報を渡すためのCPUのレジスタ中の空きビット(1ビット)を用いればよい。もし、空きビットがなければ、トラップ時に利用可能なレジスタの中にVMMページングモジュール114が特定の値を設定することにより、当該レジスタを介して上述の要因を通知してもよい。
一方、ゲストOS13-1がカーネルモードのときに発生したページフォルトであるならば(ステップ405がYes)、VMMページングモジュール114は、当該ゲストOS13-1のIDに基づいてVMMメモリ管理テーブル117を参照する(ステップ407)。そしてVMMページングモジュール114は、ゲストOS13-1のIDを含むサービス要求情報がVMMメモリ管理テーブル117に格納され、当該サービス要求情報に含まれているフラグによって当該ゲストOS13-1のゲストOSカーネル13-1がページャブルであることが示され、且つ当該サービス要求情報に当該ゲストOSカーネル15-iのページング対象メモリ領域を示すメモリ領域情報(開始仮想アドレス及び終了仮想アドレスの対)が含まれているかを判定する。つまりVMMページングモジュール114は、ゲストOS13-1のゲストOSカーネル15-1がページャブルカーネルであり、且つ当該ゲストOSカーネル15-1がページング対象としているメモリ領域が予め通知されているかを判定する(ステップ408)。
ステップ408の判定がYesの場合、VMMページングモジュール114はVMMメモリ管理テーブル117を参照した結果に基づき、ページフォルトとなったページは、予めゲストOSカーネル15-1から通知されている、当該ゲストOSカーネル15-1(を含むゲストOS13-1)がページング対象としているメモリ領域内にあるかを判定する(ステップ409)。このステップ409の判定は、ページフォルトとなったページの仮想アドレスが、参照されたサービス要求情報に含まれているメモリ領域情報によって示される、ゲストOS13-1(のゲストOSカーネル15-1)がページング対象としているメモリ領域の開始仮想アドレスと終了仮想アドレスとの間に入っているかを調べることにより実現される。
もし、ページフォルトとなったページが、ゲストOS13-1(のゲストOSカーネル15-1)がページング対象としているメモリ領域内にある場合には(ステップ409がYes)、VMMページングモジュール114はステップ406に進む。つまり、ゲストOS13-1(のゲストOSカーネル15-1)がページャブルカーネルであり、且つゲストOS13-1(のゲストOSカーネル15-1)がページング対象としているメモリ領域内のページへのアクセスでページフォルトが発生した場合、VMMページングモジュール114はステップ406に進む。
さて、ステップ409の判定がYesの場合、ゲストOS13-1が起こしたページフォルトを、当該ゲストOS13-1で処理できる。つまりステップ409の判定がYesであることは、ゲストOS13-1内でページフォルトを起こしたカーネルスレッドをブロックして他のスレッドにスイッチすることができることを示す。そのためステップ409の判定がYesの場合、VMMページングモジュール114(のトラップ配信モジュール)はステップ406に進み、ゲストOS13-1にページフォルトトラップを配信する。
一方、ステップ408の判定がNoであるか、ステップ408の判定がYesであってもステップ409の判定がNoの場合には、ゲストOS13-1が処理できないカーネルモードでのページフォルトである。この場合、VMMページングモジュール114は、ページフォルトを起こしたゲストOS13-1の状態を、VMM11(内のVMMページングモジュール114)によるページイン処理の完了を待つページイン待ち状態(VMMページイン処理完了待ち)に設定する(ステップ410)。つまりVMMページングモジュール114は、ゲストOS13-1をブロックする。
するとゲストOS実行管理機構112は、ページフォルトを起こしたゲストOS13-1から当該ゲストOS13-1に割り当てられていたCPUを横取りし、当該ゲストOS13-1のコンテクスト(つまり実行状態)を例えば外部記憶装置20に保存する(ステップ411)。
次にゲストOS実行管理機構112は、ゲストOS13-1〜13-nの中から、ゲストOS13-1以外の実行可能な1つのゲストOSを選択して、当該選択されたゲストOSにCPUを割り当てる再スケジューリングを行う(ステップ412)。これにより、ページフォルト発生時のVMM11による処理は終了する。
次に、ページフォルトを起こしたゲストOS13-1にVMM11(内のVMMページングモジュール114)からページフォルトトラップが配信されたときに、当該ゲストOS13-1によって実行される処理について、図5のフローチャートを参照して説明する。
なお、VMM11がゲストOS13-1にページフォルトトラップを配信した際には、通常の実計算機で発生する各種トラップ、割り込みと同様、それを当該ゲストOS13-1で処理するために必要な情報が、VMM11から当該ゲストOS13-1に何らかの形で(例えばレジスタを用いて)渡されることを前提とする。この情報は、ページフォルトトラップの例では、
(1)そもそも例外がページフォルトトラップであることを示す情報
(2)ページフォルトとなったページのアドレス(ページフォルト発生アドレス)、及び例外発生時の特権モード情報を含むトラップ情報
を含む。
ページフォルトトラップの場合、このような情報に加えて、前述のステップ406の処理で説明したように、ページフォルトの要因がVMM11がページアウトしたページへのアクセスにあることを示す情報も、当該VMM11(内のVMMページングモジュール114)からゲストOS13-1に渡される。
さて、VMM11からゲストOS13-1にページフォルトトラップが配信されると、ゲストOS13-1に含まれているメモリマネージャ17内のページングモジュール171は、ページフォルトの要因が、VMM11がページアウトしたページへのアクセスにあるかを判定する(ステップ501)。
もし、ページフォルトの要因が、VMM11がページアウトしたページへのアクセス以外にある場合には(ステップ501がNo)、メモリマネージャ17内のページングモジュール171は、実計算機で動作する通常のゲストOSがページフォルトに対するのと同様のページイン処理を行う(ステップ502)。即ちページングモジュール171は、ページフォルトの要因となったアクセスが試みられたページに実ページを割り当て、外部記憶装置20のゲストOSページング領域22-1に退避(ページアウト)されていたデータを読み込んで、当該読み込まれたデータを、そのページに復帰するページイン処理を行う(ステップ502)。また、ステップ502においてページングモジュール171は、ページフォルトを起こしたゲストOS13-1において実行中のユーザプロセス14またはカーネルスレッドの状態(つまりページフォルトを起こした処理)を、通常のゲストOSによるページイン処理の場合と同様に、ゲストOS13-1によるページイン処理の完了を待つページイン待ち状態(ゲストOSページイン処理完了待ち)に設定する。
なお、不正アドレスへのアクセスに伴うページフォルトトラップの場合にも、ステップ501の判定がNoとなる。この場合、ステップ502では、ユーザプロセス14が起こしたページフォルトであるならば、当該ユーザプロセス14を停止したり、カーネルが起こしたページフォルトならば、ゲストOS13-1を周知のパニックモードに移行するなどの、エラー処理が行われる。ここでは、便宜的に、不正アドレスへのアクセスに伴うページフォルトトラップは発生していないものとする。
一方、ページフォルトの要因が、VMM11がページアウトしたページへのアクセスにある場合には(ステップ501がYes)、ページングモジュール171は、ページフォルトを起こしたユーザプロセス14またはカーネルスレッドの状態(処理)を、VMM11(内のVMMページングモジュール114)によるページイン処理の完了を待つページイン待ち状態(VMMページイン処理完了待ち)に設定する(ステップ503)。このステップ503では、先のステップ502と異なり、ページングモジュール171によるページイン処理(ページインのためのI/O処理)は行われないことに注意する。
ゲストOS13-1は、ステップ502及び503のうちのいずれが実行された場合にも、ページフォルトを起こしたユーザプロセス14またはカーネルスレッド(処理)から当該ユーザプロセス14またはカーネルスレッドに割り当てられていたCPUを横取りし、当該ユーザプロセス14またはカーネルスレッドのコンテクスト(つまり実行状態)を例えば外部記憶装置20に保存する(ステップ504)。
続いてゲストOS13-1は、他の実行可能なユーザプロセス14またはカーネルスレッド(つまり他の実行可能な処理)をゲストOS13-1内から選択して、当該選択されたユーザプロセス14またはカーネルスレッドにCPUを割り当てる再スケジューリングを行う(ステップ505)。
さて、本実施形態では、上記ステップ404の処理、即ちVMM11のVMMページングモジュール114によるページイン処理が完了した際に、ページフォルトを起こしたゲストOS(ここではゲストOS13-1)に対し、その旨が、VMM11のVMMページイン完了時処理モジュール115によって通知される。このVMM11のVMMページングモジュール114によるページイン処理の完了時の処理について、図6のフローチャートを参照して説明する。
今、VMMページングモジュール114によるページイン処理が完了したものとする。この場合、VMMページイン完了時処理モジュール115に制御が渡る。VMMページイン完了時処理モジュール115は、VMMページアウトメモリ管理テーブル116から、ページイン処理が完了したページのページアウト管理情報を削除する(ステップ601)。
次にVMMページイン完了時処理モジュール115は、ページイン処理が完了したページを所有するゲストOS13-1の状態が、VMM11(内のVMMページングモジュール114)によるページイン処理の完了を待つページイン待ち状態(VMMページイン処理完了待ち)にあるかを判定する(ステップ602)。明らかなように、前述のステップ410が実行された場合には、ゲストOS13-1はページイン待ち状態(VMMページイン処理完了待ち)にあることから、ステップ602の判定はYesとなる。
この状態のときには、ゲストOS13-1のゲストOSカーネル15-1のページャブルでないメモリ領域内のページをVMM11(内のVMMページングモジュール114)がページアウトしているために、当該ゲストOS13-1全体が動けない状態になっている。そこでステップ602の判定がYesの場合、VMM11のVMMページングモジュール114は、ゲストOS13-1(つまりVMMページイン処理が完了したページを所有するゲストOS13-1)の状態を実行可能状態に設定する(ステップ603)。
するとVMM11のゲストOS実行管理機構112は、ステップ603で実行可能状態に設定されたゲストOS13-1を含むゲストOS13-1〜13-nの中から、実行可能な1つのゲストOSを選択して、当該選択されたゲストOSにCPUを割り当てる再スケジューリングを行う(ステップ604)。
一方、ページイン処理が完了したページを所有するゲストOS13-1がページイン待ち状態(VMMページイン処理完了待ち)にないものとする(ステップ602がNo)。明らかなように、前述のステップ406が実行された場合には、ゲストOS13-1内のページフォルトを起こしたユーザプロセス14またはカーネルスレッド(処理)はページイン待ち状態(VMMページイン処理完了待ち)にあるものの、ゲストOS13-1自体はページイン待ち状態(VMMページイン処理完了待ち)にないことから、ステップ602の判定はNoとなる。この場合、ゲストOS13-1内にページフォルトを起こしたユーザプロセス14またはカーネルスレッド(処理)が存在し、当該ページフォルトを起こしたユーザプロセス14またはカーネルスレッド(処理)がページイン処理の完了を待っている。
そこで、ステップ602の判定がNoの場合、VMMページイン完了時処理モジュール115は、ゲストOS13-1に、VMM11によるページイン処理(VMMページイン処理)の完了、及びページフォルト発生アドレスを通知すると共に、VMMページイン処理の完了を通知する割り込み(VMMページイン完了通知割り込み)を当該ゲストOS13-1に配信する(ステップ605)。
次に、上述のステップ605でVMM11のVMMページイン完了時処理モジュール115が配信したVMMページイン完了通知割り込みをゲストOS13-1が受信した場合に当該ゲストOS13-1によって実行される処理について、図7のフローチャートを参照して説明する。
まずゲストOS13-1は、VMM11のVMMページイン完了時処理モジュール115からのVMMページイン完了通知割り込みを受け取ると、VMM11によるページイン処理(VMMページイン処理)の完了を待っていたユーザプロセス14またはカーネルスレッド(処理)の状態を実行可能状態に設定する(ステップ701)。
次にゲストOS13-1は、(ステップ701で実行可能状態に設定されたユーザプロセス14またはカーネルスレッドを含めて)実行可能な1つのユーザプロセス14またはカーネルスレッド(処理)をゲストOS13-1内から選択して、当該選択されたユーザプロセス14またはカーネルスレッドにCPUを割り当てる再スケジューリングを行う(ステップ702)。
従来の仮想計算機システムにおいて実行されるVMMによるデマンドページングは、ゲストOSがその中で行うデマンドページングとは独立して行われていた。ここでは、ゲストOS内のユーザプロセスのメモリ空間を対象とするページングであっても、ゲストOSがページアウトしたページへのアクセスでのページフォルトでは、当該ゲストOS内の他のユーザプロセスに切り替わってゲストOSとしては処理が継続できる。
ところが、上記のページを、VMM11がページアウトしていた場合には、ゲストOS内で他のユーザプロセスにスイッチすることはできず、つまり当該ゲストOSはブロックされる。このため従来の仮想計算機システムでは、効率のよいゲストOS内スケジューリング(ユーザプロセス及び/またはカーネルスレッドのディスパッチ)が行えないという問題があった。
これに対して本実施形態では、ゲストOSがページフォルトの要因が、VMM11によってページアウトされたページへのアクセスにあることが、VMM11のメモリマネージャ113(内のVMMページングモジュール114)から当該ゲストOSに通知される。この通知により、当該通知を受けたゲストOSは、VMM11のメモリマネージャ113と連携することで、当該ゲストOSをブロックすることなく、VMM11によるページイン処理の完了を待つことができる。その結果、通知を受けたゲストOS(つまりページフォルトを起こした処理を実行していたゲストOS)において、他の処理(他のユーザプロセスまたはカーネル内スレッド)の実行に切り替えて動作を継続することができ、VMM11によるページングを実現しながら、効率のよいゲストOS内スケジューリングを図ることができる。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
本発明の一実施形態に係る仮想計算機システムの構成を示すブロック図。 図1に示されるVMMページアウトメモリ管理テーブルのデータ構造例を示す図。 図2に示されるVMMメモリ管理テーブルのデータ構造例を示す図。 ゲストOSによるページアクセスでページフォルトが発生した場合にVMM(仮想計算機管理機構)によって実行される処理の手順を示すフローチャート。 ページフォルトを起こしたゲストOSにVMMからページフォルトトラップが配信されたときに実行される処理の手順を示すフローチャート。 VMMによるページイン処理の完了時に当該VMMによって実行される処理の手順を示すフローチャート。 VMMが配信したVMMページイン完了通知割り込みをゲストOSが受信した場合に実行される処理の手順を示すフローチャート。
10…計算機本体、11…VMM(仮想計算機管理機構)、12-1〜12-n…仮想計算機、13-1〜13-n…ゲストOS、14…ユーザプロセス、15-1〜15-n…ゲストOSカーネル、16-1〜16-n…カーネル内メモリ領域、17…メモリマネージャ、20…外部記憶装置、21…VMMページング領域、22-1〜22-n…ゲストOSページング領域、111…ゲストOSインターフェイス機構、112…ゲストOS実行管理機構、113…メモリマネージャ、114…VMMページングモジュール、115…VMMページイン完了時処理モジュール、116…VMMページアウトメモリ管理テーブル、117…VMMメモリ管理テーブル、171…ページングモジュール、172…ページイン完了時処理モジュール。

Claims (10)

  1. CPUを含むハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを実行させるための管理を行う仮想計算機管理機構において、
    前記複数のゲストOSに割り当てられたメモリ領域に対してページを単位にページアウト処理を含むデマンドページング処理を行うページング手段と、
    前記ページング手段によってページアウトされたページに関するページアウト管理情報を保持するページアウト管理情報保持手段とを具備し、
    前記ページング手段は、
    ページアウトされたページに対してゲストOSがアクセスしたことによりページフォルトが発生した際に、当該ページフォルトが発生したページに関するページアウト管理情報が前記ページアウト管理情報保持手段に保持されているかに基づき、当該ページフォルトの要因が前記ページング手段自身によってページアウトされたページへのアクセスにある第1の要因であるか、或いは前記ゲストOS内のページングによってページアウトされたページへのアクセスにある第2の要因であるかを判定し、
    前記第1の要因の場合には、前記第1の要因を前記ページフォルトが発生したページにアクセスした前記ゲストOSに通知すると共に当該ゲストOSにページフォルトトラップを配信することによって、当該ゲストOSに、当該ゲストOSにおいて前記ページフォルトを起こした処理を前記ページング手段によるページイン処理の完了待ちの状態に設定させ、且つ前記ページング手段自身によってページアウトされたページにデータを復帰するためのページイン処理を実行し、
    前記第2の要因の場合には、前記ページフォルトが発生したページにアクセスした前記ゲストOSにページフォルトトラップを配信することによって、当該ゲストOSに、当該ゲストOS内のページングによってページアウトされたページにデータを復帰するためのページイン処理を実行させると共に、当該ゲストOSにおいて前記ページフォルトを起こした処理を当該ゲストOSによるページイン処理の完了待ちの状態に設定させる
    ことを特徴とする仮想計算機管理機構。
  2. 前記ページング手段によるページイン処理の完了に応じて、その旨を通知するための特定の完了割り込みを、前記ページフォルトが発生したページにアクセスした前記ゲストOSに発行することにより、当該ゲストOSにおいて前記ページング手段によるページイン処理の完了待ちの状態に設定されている処理を実行可能状態に切り替えさせるページイン完了時処理手段を更に具備することを特徴とする請求項1記載の仮想計算機管理機構。
  3. 前記複数のゲストOSの各々が前記仮想計算機管理機構に特定のサービスを予め要求するのに用いられるゲストOSインターフェイス機構であって、前記特定のサービスは、当該特定のサービスを要求するゲストOSが前記仮想計算機管理機構の前記ページング手段によってページアウトされたページに対してアクセスしたことを要因としてページフォルトが発生した場合に、その旨を当該ゲストOSに通知すると共にページフォルトトラップを当該ゲストOSに配信するサービスであるゲストOSインターフェイス機構と、
    前記ゲストOSから前記仮想計算機管理機構に前記特定のサービスが要求されたことを示すサービス要求情報を保持するサービス要求情報保持手段とを更に具備し、
    前記ページング手段は、前記ページフォルトの要因が当該ページング手段によってページアウトされたページへのアクセスにあると判定した場合、当該ページにアクセスしたゲストOSから前記特定のサービスが要求されていることを示す前記サービス要求情報が前記サービス要求情報保持手段に保持されていることをもって、前記第1の要因の通知と前記ページフォルトトラップの配信とを行うことを特徴とする請求項1または2に記載の仮想計算機管理機構。
  4. 前記ゲストOSインターフェイス機構は、前記複数のゲストOSの各々が前記特定のサービスを要求するのに加えて、当該ゲストOSのカーネルがカーネルモードでページングを実施するページャブルカーネルであることと、当該ページングの対象となるメモリ領域とを当該ゲストOSが前記仮想計算機管理機構に予め通知するのに用いられ、
    前記サービス要求情報保持手段に保持されている前記サービス要求情報は、当該サービス要求情報によって示される前記特定のサービスを要求したゲストOSのカーネルが前記ページャブルカーネルであるかを示す情報及び前記ページャブルカーネルである場合に前記ページングの対象となるメモリ領域を示すメモリ領域情報を含み、
    前記ページング手段は、当該ページング手段によってページアウトされたページに前記カーネルモードでアクセスした前記ゲストOSのカーネルが前記ページャブルカーネルであることが前記サービス要求情報に含まれている前記ページャブルカーネルであるかを示す情報によって示され、且つ当該ページアウトされたページが前記サービス要求情報に含まれている前記メモリ領域情報の示すメモリ領域内にある場合に、前記ゲストOSへの前記第1の要因の通知と前記ページフォルトトラップの配信とを行う
    ことを特徴とする請求項3記載の仮想計算機管理機構。
  5. 前記複数のゲストOSの実行を管理するゲストOS実行管理手段を更に具備し、
    前記ページング手段は、当該ページング手段によってページアウトされたページに前記カーネルモードでアクセスした前記ゲストOSのカーネルが前記ページャブルカーネルでないことが前記サービス要求情報に含まれている前記ページャブルカーネルであるかを示す情報によって示されている場合、前記第1の要因の通知と前記ページフォルトトラップの配信とを抑止し、
    前記ゲストOS実行管理手段は、前記第1の要因の通知と前記ページフォルトトラップの配信とが抑止された前記ゲストOSから前記複数のゲストOSのうちの他のゲストOSの実行に切り替える
    ことを特徴とする請求項4記載の仮想計算機管理機構。
  6. 前記ページング手段は、当該ページング手段によってページアウトされたページにアクセスした前記ゲストOSから前記特定のサービスが要求されていることを示す前記サービス要求情報が前記サービス要求情報保持手段に保持されていない場合、前記第1の要因の通知と前記ページフォルトトラップの配信とを抑止し、
    前記ゲストOS実行管理手段は、前記要因の通知と前記ページフォルトトラップの配信とが抑止された前記ゲストOSから前記複数のゲストOSのうちの他のゲストOSの実行に切り替える
    ことを特徴とする請求項5記載の仮想計算機管理機構。
  7. CPUを含むハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを実行させるための管理を行う仮想計算機管理機構を有する仮想計算機システムにおいて、
    前記仮想計算機管理機構は、
    前記複数のゲストOSに割り当てられたメモリ領域に対してページを単位にページアウト処理を含むデマンドページング処理を行うページング手段と、
    前記ページング手段によってページアウトされたページに関するページアウト管理情報を保持するページアウト管理情報保持手段とを具備し、
    前記ページング手段は、
    ページアウトされたページに対してゲストOSがアクセスしたことによりページフォルトが発生した際に、当該ページフォルトが発生したページに関するページアウト管理情報が前記ページアウト管理情報保持手段に保持されているかに基づき、当該ページフォルトの要因が前記ページング手段によってページアウトされたページへのアクセスにある第1の要因であるか、或いは前記ゲストOS内のページングによってページアウトされたページへのアクセスにある第2の要因であるかを判定し、
    前記第1の要因の場合には、前記第1の要因を前記ページフォルトが発生したページにアクセスした前記ゲストOSに通知すると共に当該ゲストOSにページフォルトトラップを配信し、且つ前記ページング手段自身によってページアウトされたページにデータを復帰するためのページイン処理を実行し、
    前記第2の要因の場合には、前記ページフォルトが発生したページにアクセスした前記ゲストOSにページフォルトトラップを配信し、
    前記複数のゲストOSの各々は、
    前記第1の要因の判定に応じて前記仮想計算機管理機構の前記ページング手段からページフォルトトラップが配信されると共に前記第1の要因が通知された場合に、当該ゲストOSにおいて前記ページフォルトを起こした処理を前記ページング手段によるページイン処理の完了待ちの状態に設定し、
    前記第2の要因の判定に応じて前記仮想計算機管理機構の前記ページング手段からページフォルトトラップが配信された場合に、当該ゲストOS内のページングによってページアウトされたページにデータを復帰するためのページイン処理を実行すると共に、当該ゲストOSにおいて前記ページフォルトを起こした処理を当該ゲストOSによるページイン処理の完了待ちの状態に設定する
    ことを特徴とする仮想計算機システム。
  8. 前記複数のゲストOSの各々は、前記ページフォルトを起こした処理を前記仮想計算機管理機構の前記ページング手段によるページイン処理の完了待ちの状態に設定した場合、前記ページフォルトを起こした処理以外の実行可能な処理の実行に切り替えることを特徴とする請求項7記載の仮想計算機システム。
  9. 前記仮想計算機管理機構は、前記仮想計算機管理機構の前記ページング手段によるページイン処理の完了に応じて、その旨を通知するための特定の完了割り込みを、前記ページフォルトが発生したページにアクセスした前記ゲストOSに発行するページイン完了時処理手段を更に具備し、
    前記複数のゲストOSの各々は、自身宛に前記特定の完了割り込みが発行された場合、前記仮想計算機管理機構の前記ページング手段によるページイン処理の完了待ちの状態に設定されている処理を実行可能状態に切り替える
    ことを特徴とする請求項7または8に記載の仮想計算機システム。
  10. CPUを含むハードウェアを仮想化することによって複数の仮想計算機を構築し、当該複数の仮想計算機で複数のゲストOSを実行させるための管理を行う仮想計算機管理機構と、前記仮想計算機管理機構によってページアウトされたページに関するページアウト管理情報を保持するページアウト管理情報保持手段とを有する仮想計算機システムにおけるページング処理方法であって、
    ページアウトされたページに対してゲストOSがアクセスしたことによりページフォルトが発生した際に、前記仮想計算機管理機構が前記ページアウト管理情報保持手段を参照するステップと、
    前記ページフォルトが発生したページに関するページアウト管理情報が前記ページアウト管理情報保持手段に保持されているかによって、当該ページフォルトの要因が前記仮想計算機管理機構によってページアウトされたページへのアクセスにある第1の要因であるか、或いは前記ゲストOS内のページングによってページアウトされたページへのアクセスにある第2の要因であるかを、前記仮想計算機管理機構が判定するステップと、
    前記第1の要因の場合、前記仮想計算機管理機構によってページアウトされたページにデータを復帰するためのページイン処理を、前記仮想計算機管理機構が実行するステップと、
    前記第1の要因の場合、前記仮想計算機管理機構が、前記第1の要因を前記ページフォルトが発生したページにアクセスした前記ゲストOSに通知すると共に当該ゲストOSにページフォルトトラップを配信するステップと
    前記第2の要因の場合、前記仮想計算機管理機構が、前記ページフォルトが発生したページにアクセスした前記ゲストOSにページフォルトトラップを配信するステップと、
    前記第1の要因の判定に応じて前記仮想計算機管理機構から前記ページフォルトトラップが配信されると共に前記第1の要因が通知されたゲストOSが、前記ページフォルトを起こした処理を前記前記仮想計算機管理機構によるページイン処理の完了待ちの状態に設定するステップと、
    前記第2の要因の判定に応じて前記仮想計算機管理機構から前記ページフォルトトラップが配信されたゲストOSが、当該ゲストOS内のページングによってページアウトされたページにデータを復帰するためのページイン処理を実行すると共に、当該ゲストOSにおいて前記ページフォルトを起こした処理を当該ゲストOSによるページイン処理の完了待ちの状態に設定するステップと
    を具備することを特徴とする仮想計算機システムにおけるページング処理方法。
JP2009010085A 2009-01-20 2009-01-20 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法 Active JP4769308B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009010085A JP4769308B2 (ja) 2009-01-20 2009-01-20 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009010085A JP4769308B2 (ja) 2009-01-20 2009-01-20 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法

Publications (2)

Publication Number Publication Date
JP2010170210A JP2010170210A (ja) 2010-08-05
JP4769308B2 true JP4769308B2 (ja) 2011-09-07

Family

ID=42702326

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009010085A Active JP4769308B2 (ja) 2009-01-20 2009-01-20 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法

Country Status (1)

Country Link
JP (1) JP4769308B2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102011051642A1 (de) 2010-07-09 2012-03-29 Denso Corporation Drehende elektrische Maschine mit verbessertem Last-Abwurf-Schutz
JP2012033001A (ja) * 2010-07-30 2012-02-16 Toshiba Corp 情報処理装置および情報処理方法
US9696933B2 (en) 2014-08-15 2017-07-04 International Business Machines Corporation Virtual machine manager initiated page-in of kernel pages
US11403409B2 (en) 2019-03-08 2022-08-02 International Business Machines Corporation Program interruptions for page importing/exporting

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62251942A (ja) * 1986-04-25 1987-11-02 Hitachi Ltd 仮想計算機システム
JPH03217949A (ja) * 1990-01-23 1991-09-25 Hitachi Ltd 計算機システム
JPH10260850A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd 仮想計算機システム
US7840962B2 (en) * 2004-09-30 2010-11-23 Intel Corporation System and method for controlling switching between VMM and VM using enabling value of VMM timer indicator and VMM timer value having a specified time
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10180910B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10445248B2 (en) 2016-07-18 2019-10-15 International Business Machines Corporation Host page management using active guest page table indicators
US10515020B2 (en) 2016-07-18 2019-12-24 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10572392B2 (en) 2016-07-18 2020-02-25 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
US11016907B2 (en) 2016-07-18 2021-05-25 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation

Also Published As

Publication number Publication date
JP2010170210A (ja) 2010-08-05

Similar Documents

Publication Publication Date Title
JP4769308B2 (ja) 仮想計算機管理機構、同管理機構を有する仮想計算機システム及び同システムにおけるページング処理方法
US8799554B1 (en) Methods and system for swapping memory in a virtual machine environment
US10776151B2 (en) Adaptive CPU NUMA scheduling
Ibrahim et al. Optimized pre-copy live migration for memory intensive applications
JP5939740B2 (ja) 動的にリソースを割り当てる方法、システム及びプログラム
EP2216732A1 (en) Virtual machine software license management
JP5385347B2 (ja) メイン・メモリのフリー・メモリ量を拡大する方法およびコンピュータ
EP3796168A1 (en) Information processing apparatus, information processing method, and virtual machine connection management program
EP2548123B1 (en) Accelerating memory operations using virtualization information
US10705849B2 (en) Mode-selectable processor for execution of a single thread in a first mode and plural borrowed threads in a second mode
US20120117298A1 (en) Managing Memory Across a Network of Cloned Virtual Machines
JP2006350780A (ja) キャッシュ割当制御方法
JP2009110404A (ja) 仮想計算機システム及び同システムにおけるゲストosスケジューリング方法
KR20110094764A (ko) 트랜잭션 기반 입출력 인터페이스를 제공하는 가상화 장치 및 방법
WO2012082690A1 (en) Processing device context switching
US7818558B2 (en) Method and apparatus for EFI BIOS time-slicing at OS runtime
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
JP2008107966A (ja) 計算機システム
CN112162818B (zh) 一种虚拟内存分配方法、装置、电子设备及存储介质
JP6198858B2 (ja) 計算機、及び、ハイパバイザによる資源スケジューリング方法
Kilic et al. Overcoming virtualization overheads for large-vcpu virtual machines
US8799903B1 (en) Systems and methods for exchanging runtime functionalities between software stacks
JP4862770B2 (ja) 仮想計算機システムにおけるメモリ管理方式及びその方法、およびプログラム
Li et al. Tmemcanal: A vm-oblivious dynamic memory optimization scheme for virtual machines in cloud computing
US20220291962A1 (en) Stack memory allocation control based on monitored activities

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110328

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: 20110524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110617

R150 Certificate of patent or registration of utility model

Ref document number: 4769308

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350