JPWO2011148447A1 - 仮想計算機システム、領域管理方法、及びプログラム - Google Patents

仮想計算機システム、領域管理方法、及びプログラム Download PDF

Info

Publication number
JPWO2011148447A1
JPWO2011148447A1 JP2012517003A JP2012517003A JPWO2011148447A1 JP WO2011148447 A1 JPWO2011148447 A1 JP WO2011148447A1 JP 2012517003 A JP2012517003 A JP 2012517003A JP 2012517003 A JP2012517003 A JP 2012517003A JP WO2011148447 A1 JPWO2011148447 A1 JP WO2011148447A1
Authority
JP
Japan
Prior art keywords
area
virtual machine
virtual
basic
contents
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.)
Granted
Application number
JP2012517003A
Other languages
English (en)
Other versions
JP5612681B2 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2012517003A priority Critical patent/JP5612681B2/ja
Publication of JPWO2011148447A1 publication Critical patent/JPWO2011148447A1/ja
Application granted granted Critical
Publication of JP5612681B2 publication Critical patent/JP5612681B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)

Abstract

メモリ上のプログラムをプロセッサが実行することで構成される複数の仮想計算機を備える仮想計算機システムであって、前記メモリ上の基本領域が、前記複数の仮想計算機に共に割り当てられている場合において、当該基本領域に対し、一の仮想計算機が書込を行おうとしたときに、当該一の仮想計算機の割当を、前記基本領域から、当該基本領域の内容を複製し当該書込後の状態とした複製領域に変更し、前記基本領域及び前記複製領域の内容の照合を行い、前記基本領域及び少なくとも1つの前記複製領域の内容が一致したときには、内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を、当該他の領域から当該一の領域に変更し、当該他の領域を解放する。

Description

複数の仮想計算機を備える仮想計算機システムに関し、特に、各仮想計算機の動作に必要なメモリ領域の管理に関する。
従来から、システムの信頼性を向上させるために、ハードウェア資源を多重化したシステムが知られている(例えば、特許文献1)。
しかしながら、この方法では、ハードウェア資源を多重化するためのコストがかかるため、複数の仮想計算機を用いてシステムの信頼性を向上させることが行われている(例えば特許文献2〜4)。
特許文献2には、仮想計算機に割り当てられているメモリ領域のバックアップを取得しておき、ハードウェア故障やソフトウェアの不具合といった異常が発生したときに、取得しているバックアップをリストアして処理を再開する技術が開示されている。
また、特許文献3には、それぞれ並行して実行されている2つの仮想計算機のうち、一方の仮想計算機で異常が発生した場合に、他方の仮想計算機に処理を継続させる技術が開示されている。
また、特許文献4には、現用系仮想計算機に割り当てられているメモリ領域の内容を、待機系仮想計算機に割り当てられているメモリ領域に複製しておき、現用系仮想計算機で異常が発生したときに、待機系仮想計算機に切り替えて処理を継続させる技術が開示されている。
なお、複数の仮想計算機を切り替えて動作させるために、一般的には、ハイパバイザと呼ばれるソフトウェアにより、各仮想計算機へのプロセッサやメモリ等の割当が管理されている。このハイパバイザの一般的な役割については、従来から知られているため(例えば特許文献5)、ここでは詳細な説明は省略する。
日本国特許公開平10−240556号公報 日本国特許公開2009−245216号公報 米国特許5345590号公報 日本国特許公開2007−219757号公報 日本国特許公開2000−242512号公報
ところで、多重系システムを構成する複数の仮想計算機には、それぞれ異なるメモリ領域が割り当てられることが一般的であるため、各仮想計算機を動作させる際に、多重系システム全体としてのメモリ使用量が多くなるという問題がある。
そこで、本発明は係る問題に鑑みてなされたものであり、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることが可能な仮想計算機システムを提供することを目的とする。
上記課題を解決するために、本発明に係る仮想計算機システムは、メモリ上のプログラムをプロセッサが実行することで構成される複数の仮想計算機を備える仮想計算機システムであって、前記メモリ上の一の領域である基本領域が、前記複数の仮想計算機に共に割り当てられている場合において、当該基本領域に対し、一の仮想計算機が書込を行おうとしたときに、当該一の仮想計算機の割当を、前記基本領域から、当該基本領域の内容を複製し当該書込後の状態とした複製領域に変更し、当該一の仮想計算機以外の他の仮想計算機に対する前記基本領域の割当は維持する領域割当手段と、前記基本領域及び前記複製領域の内容の照合の契機を定める所定条件を満たす場合に、当該照合を行い、前記基本領域及び少なくとも1つの前記複製領域の内容が一致したときには、内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を、当該他の領域から当該一の領域に変更し、当該他の領域を解放する領域解放手段とを備えることを特徴とする。
上記構成を備える本発明に係る仮想計算機システムによれば、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
実施の形態1に係る仮想計算機システム1000のシステム構成図である。 ページテーブル5のデータ構成及び内容例を示す図である。 書込禁止違反が発生した際のハイパバイザ100による例外処理を示すフローチャートである。 各仮想計算機が特定処理を開始する時点におけるページテーブル5の内容例及び各仮想計算機へのメモリ4上の領域の割当例を示す図である。 基本領域bについての書込禁止違反に基づく例外処理が終了した時点におけるページテーブル5の内容例及び各仮想計算機へのメモリ4上の領域の割当例を示す図である。 非共用基本領域b´についての書込禁止違反に基づく例外処理が終了した時点におけるページテーブル5の内容例及び各仮想計算機へのメモリ4上の領域の割当例を示す図である。 実施の形態2に係る仮想計算機システム1100のシステム構成図である。 進度管理テーブル20及び割当管理テーブル30のデータ構成及び内容例を示す図である。 実施の形態3に係る仮想計算機システム1200のシステム構成図である。 書込禁止違反が発生した際のハイパバイザ300による例外処理を示すフローチャートである。 タイマからの割込が発生した際のハイパバイザ300による割込処理を示すフローチャートである。 実施の形態4に係る仮想計算機システム1300のシステム構成図である。 各仮想計算機における特定処理の実行がチェックポイントに到達した際のハイパバイザ400による処理を示すフローチャートである。
以下、本発明の実施の形態について、図面を参照しながら説明する。
≪実施の形態1≫
<構成>
まず、実施の形態1に係る仮想計算機システム1000の構成について説明する。
図1は、仮想計算機システム1000のシステム構成図である。
仮想計算機システム1000は、ハードウェアとしての実行環境(同図に示すハードウェア資源)上で動作する基盤ソフトウェアであるハイパバイザ100が、第1仮想計算機10A及び第2仮想計算機10Bへの実行環境を提供することで、物理的には1台のコンピュータを、2台の仮想計算機として利用できるようにした多重系システムである。
上記ハードウェア資源には、同図に示すように、プロセッサ1、キャッシュ記憶装置3、メモリ4、HDD(Hard Disk Drive)6、周辺モジュール7等が含まれる。
なお、以下では、仮想計算機システム1000は、メモリ管理方式として、ページングによる仮想記憶方式を採用しているものとして説明する。
ここで、メモリ4は、一般的には、数キロバイトから数メガバイト程度の領域であるページ毎に分割され、この領域毎に論理アドレスと物理アドレスとのマッピングが行われる。なお、このマッピングには、メモリ4に記憶されているページテーブル5が用いられる。ページテーブル5の内容については、後に詳細に説明するが(図2参照)、ページ毎に、そのページに対し、書込を禁止する設定(以下、「書込禁止設定」という)がなされているかを示す情報や、そのページが、各仮想計算機に共用されているかを示す情報等も登録されている。
また、プロセッサ1は、プログラム実行の過程で、ページテーブル5から取得したマッピングのいくつかを、TLB(Translation Look-aside Buffer)2に一時的に記憶する。
なお、周辺モジュール7の例としては、ディスプレイ、プリンタ、タイマ等の入出力機器群が挙げられる。
また、第1仮想計算機10A及び第2仮想計算機10Bはそれぞれ、OS(Operating System)13上で、動作する2つのタスクA11、タスクB12により実現される処理(以下、「特定処理」という)を実行するものである。
ハイパバイザ100は、第1仮想計算機10A及び第2仮想計算機10Bへの上記ハードウェア資源の割当を管理する機能を有し、プロセッサ割当部110、書込禁止設定部120、領域管理部130を備える。
ここで、プロセッサ割当部110は、プロセッサ1を時分割で各仮想計算機(10A、10B)に割り当てる機能を有する。
また、書込禁止設定部120は、領域管理部130から指示された特定のページについて、ページテーブル5において書込禁止設定を行う機能を有する。
ここで、書込禁止設定がなされたページに対し、各仮想計算機が書込を行おうとした際には、書込禁止違反により割込(例外)が発生し、プロセッサ1からハイパバイザ100への通知がなされることになる。なお、これは、いわゆる割込ベクタテーブルに、ハイパバイザ100の書込禁止違反に対する処理ルーチンを登録しておくことで実現される。
また、領域管理部130は、各仮想計算機(10A、10B)のうちの一方の仮想計算機が書込を行おうとして、書込禁止違反が発生した際に、その一方の仮想計算機に対するメモリ領域(ページ)の割当を変更する機能を有し、領域割当部131及び領域解放部132を含む。
以下、書込禁止違反が発生した各時点において、その書込禁止違反を発生させる書込を行おうとした仮想計算機を「対象仮想計算機」、対象仮想計算機でない他方の仮想計算機のことを「非対象仮想計算機」ともいう。
例えば、第1仮想計算機10Aが書込を行おうとして書込禁止違反が発生した時点では、第1仮想計算機10Aが対象仮想計算機であり、第2仮想計算機10Bが非対象仮想計算機である。また、第2仮想計算機10Bが書込を行おうとして書込禁止違反が発生した時点では、第2仮想計算機10Bが対象仮想計算機であり、第1仮想計算機10Aが非対象仮想計算機である。
なお、領域管理部130は、各仮想計算機が特定処理を開始する前に、同一のページ(以下、「基本領域」という)を割り当てる機能も有する。即ち、各仮想計算機が特定処理を開始する時点において、基本領域は各仮想計算機により共用されている。
ここで、領域割当部131は、対象仮想計算機が書込を行おうとしたページが基本領域である場合に、対象仮想計算機の割当を、基本領域から、その基本領域を複製し当該書込後の状態とした領域(以下、「複製領域」という)に変更し、変更後の状態を示すようにページテーブル5を更新する機能を有する。なお、この際、領域割当部131は、複製領域について書込禁止設定を行うよう、書込禁止設定部120に指示する。
また、上記変更の際に、領域割当部131は、基本領域が、各仮想計算機により共用されていないことを示すように、ページテーブル5を更新する。本実施の形態では、一例として、仮想計算機システム1000は、2つの仮想計算機(10A、10B)を備えるものとしているため、対象仮想計算機の割当が複製領域に変更された場合、基本領域は非対象仮想計算機のみに割り当てられていることになるためである。
なお、以下では、非対象仮想計算機のみに割り当てられるようになった基本領域のことを、特に「非共用基本領域」といい、単に基本領域という場合には、各仮想計算機により共用されている領域のことをいうものとする。
また、以下では、複製領域とその複製元の非共用基本領域とのいずれかに対する他方の領域のことを、「対応領域」と表現する。即ち、複製領域の対応領域は、その複製元の非共用基本領域であり、非共用基本領域の対応領域は、複製先の複製領域である。
また、領域解放部132は、対象仮想計算機が書込を行おうとしたページが複製領域又は非共用基本領域のいずれかの領域(以下、「非共用領域」という)である場合に、書込後の非共用領域の内容と対応領域の内容とを照合し、一致するときに、非対象仮想計算機の割当を対応領域から非共用領域に変更し、対応領域を解放し、変更後の状態を示すようにページテーブル5を更新する機能を有する。
<データ>
次に、仮想計算機システム1000が使用するデータについて、図2を用いて説明する。
図2は、ページテーブル5のデータ構成及び内容例を示す図である。
同図に示すように、ページテーブル5は、各仮想計算機に割り当てられているページ毎に、VMID51、論理アドレス52、物理アドレス53、共用フラグ54及び書込禁止フラグ55を対応付けて構成される情報である。
なお、以下では、対応するVMIDと、論理アドレスと、物理アドレスと、共用フラグと、書込禁止フラグとからなる情報を、「エントリ」と表現する。
また、ページテーブル5へのエントリの登録は、各仮想計算機が特定処理の実行を開始する前に、ページテーブル5に登録されているエントリの更新は、書込禁止違反が発生した際に、領域管理部130及び書込禁止設定部120により行われる。
ここで、VMID51は、対応するページが割り当てられている仮想計算機を示す識別情報であり、ここでは、一例として、第1仮想計算機10Aの識別情報として「1」を、第2仮想計算機10Bの識別情報として「2」を用いている。
論理アドレス52は、対応するページの仮想メモリ上のアドレスを示すものであり、物理アドレス53は、対応するページのメモリ4上のアドレス(実アドレス)を示すものである。なお、4KBページを用いる場合、ページテーブルには,下位12ビット分を記憶しておく必要はないため、同図に示す論理アドレス52、物理アドレス53の例では、上位20ビットのみを示している。
共用フラグ54は、対応するページが各仮想計算機により共用されているか否かを示すフラグであり、ここでは、一例として、共用されている場合を「1」とし、共用されていない場合を「0」としている。
なお、基本領域のみが、各仮想計算機により共用されるため、共用フラグが「1」であるということは、そのページが基本領域であることを示していることになり、共用フラグが「0」であるということは、そのページが複製領域か、非共用基本領域であることを示していることになる。
書込禁止フラグ55は、対応するページに対し、書込禁止設定がなされているか否かを示すフラグであり、ここでは、一例として、書込禁止設定がなされている場合を「1」とし、書込禁止設定がなされていない場合を「0」としている。
例えば、同図に示すエントリ56によれば、VMIDが「1」である仮想計算機(即ち仮想計算機10A)に割り当てられているページの論理アドレスは「0x00011」であり、物理アドレスは「0x80001」であり、そのページの共用フラグは「1」(即ち、共用されている)であり、そのページの書込禁止フラグは「1」(即ち、書込禁止設定がなされている)であることを示している。
なお、領域管理部130が、ページテーブル5へ登録するエントリは、エントリ56とエントリ57とに示すような、VMIDのみが異なり、特に、共用フラグが「1」である2つのエントリであり、基本領域毎に、このような2つのエントリの登録が行われる。
以下では、対象仮想計算機が書込を行おうとしたページについてのページテーブル5におけるエントリを「対象エントリ」といい、対象エントリと同一の論理アドレスを含み、VMIDが異なるエントリを「対応エントリ」という。
また、ページテーブル5に登録済みのエントリをどのように更新するかについては、以下の仮想計算機システム1000の動作の説明の中で詳細に説明する。
<動作>
次に、仮想計算機システム1000の動作について、図3を用いて説明する。
図3は、書込禁止違反が発生した際のハイパバイザ100による例外処理を示すフローチャートである。
書込禁止違反が発生すると、ハイパバイザ100の領域管理部130は、対象仮想計算機が書込を行おうとしたページが基本領域か否かをページテーブル5に基づいて判定する(ステップS1)。
より詳細には、領域管理部130は、ページテーブル5に基づいて、対象仮想計算機のVMIDと、書込を行おうとした論理アドレスが含まれるページの論理アドレスとが対応付けられたエントリ(対象エントリ)の共用フラグを取得する。取得した共用フラグが「1」(即ち共用)である場合には、領域管理部130は、対象仮想計算機が書込を行おうとしたページが基本領域であると判定する(ステップS1:yes)。一方、取得した共用フラグが「0」(即ち非共用)であれば、領域管理部130は、対象仮想計算機が書込を行おうとしたページが基本領域でないと判定する(ステップS1:no)。
対象仮想計算機が書込を行おうとしたページが基本領域であると判定した場合には(ステップS1:yes)、領域管理部130の領域割当部131は、その基本領域を複製し(ステップS2)、ページテーブル5の対象エントリを、複製した領域を示すように更新する(ステップS3)。
より詳細には、ページテーブル5の対象エントリにおいて、物理アドレスを、複製した領域の先頭を示す物理アドレスに、共用フラグを「0」に、書込禁止フラグを一旦「0」にそれぞれ更新する。書込禁止フラグを一旦「0」に更新するのは、後述するステップS5の処理のためである。
また、領域割当部131は、上記基本領域を非共用基本領域に変更する(ステップS4)。より詳細には、ページテーブル5における対応エントリの共用フラグを「0」に更新する。
領域割当部131は、対象仮想計算機が、基本領域に行おうとした書込を、ステップS2で複製した領域に行う(ステップS5)。
領域割当部131は、対象仮想計算機が実行中のプログラムにおいて、書込禁止違反を発生させた書込命令の次に実行すべき命令を指すように、プログラムカウンタを設定する(ステップS6)。
領域割当部131は、書込禁止設定部120を介して、ステップS5で書込を行った領域(つまり、複製領域)に対し、書込禁止設定を行う(ステップS7)。より詳細には、ステップS3で一旦「0」に更新した対象エントリの書込禁止フラグを再び「1」に更新する。
ステップS7の処理を完了すると、領域管理部130は、例外処理を終了する。以降、対象仮想計算機は、書込禁止違反を発生させた書込命令の次の命令から処理を再開することになる。
なお、ステップS7で、書込禁止フラグを再び「1」に更新したので、以降、この複製領域に書込を行おうとした場合には、書込禁止違反が発生することになる。
ステップS1〜S7の処理により、対象仮想計算機と非対象仮想計算機とに基本領域が割り当てられた状態から、対象仮想計算機には複製領域が、非対象仮想計算機に非共用基本領域がそれぞれ割り当てられた状態に変化したことになる。
一方、ステップS1において、対象仮想計算機が書込を行おうとしたページが、基本領域でないと判定した場合、即ち、ページが非共用領域(つまり、複製領域又は非共用基本領域)である場合には(ステップS1:no)、領域解放部132は、対象仮想計算機が書込を行おうとした非共用領域の書込禁止設定を一旦解除する(ステップS8)。より詳細には、ページテーブル5における対象エントリの書込禁止フラグを「0」に更新する。
領域解放部132は、対象仮想計算機が書込を行おうとした非共用領域に対し、その書込を行い(ステップS9)、上記ステップS6の場合と同様に、プログラムカウンタを設定する(ステップS10)。
各仮想計算機はそれぞれ、同一のプログラムに基づく特定処理を実行しているため、各仮想計算機における特定処理の実行進度が大きく異ならず、また、ハードウェア故障やソフトウェアの不具合等が発生していなければ、ステップS9で書込を行った非共用領域の内容と対応領域の内容とは一致する可能性が高い。
そこで、領域解放部132は、ステップS9で書込を行った非共用領域の内容と対応領域の内容とを照合し(ステップS11)、一致するか否かを判定し(ステップS12)、一致する場合には(ステップS12:yes)、対応領域を解放、即ち、未使用の領域とする(ステップS13)。
また、領域解放部132は、ステップS9で書込を行った非共用領域を基本領域に変更する(ステップS14)。より詳細には、ページテーブル5の対象エントリにおいて、共用フラグを「1」に更新し、かつ、対応エントリにおいて、物理アドレスを、対象エントリの物理アドレスと同一のアドレスに更新し、共用フラグを「1」に更新する。
ステップS12〜S14の処理により、対象仮想計算機と非対象仮想計算機とに物理アドレスが異なるそれぞれ1つの領域(複製領域と非共用基本領域)が割り当てられていた状態から、対象仮想計算機と非対象仮想計算機とに基本領域が割り当てられた状態に変化したことになる。
ステップS14の処理が完了すると、領域解放部132は、ステップS9で書込を行った領域、つまり、ステップS14で非共用領域から変更された基本領域に対し、書込禁止設定を行う(ステップS15)。即ち、対象エントリの書込禁止フラグを「1」に設定し、領域解放部132は、例外処理を終了する。
また、ステップS12において、ステップS9で書込を行った非共用領域の内容と対応領域の内容とが一致しない場合には(ステップS12:no)、領域解放部132は、ステップS9で書込を行った領域、つまり、非共用領域に対し、上記同様に、書込禁止設定を行い(ステップS15)、例外処理を終了する。
<具体例>
以下、書込禁止違反が発生した際のハイパバイザ100による例外処理を図4〜図6に示す具体例を用いて、図3に示すフローチャートに即して説明する。
図4(a)は、各仮想計算機が特定処理を開始する時点におけるページテーブル5の内容例を示しており、(b)は、その時点における各仮想計算機へのメモリ4上の領域の割当例を示している。
図4(a)に示すエントリ56、エントリ57が示すメモリ4上の領域は、図4(b)に示す基本領域aであり、図4(a)に示すエントリ58a、エントリ59aが示すメモリ4上の領域は、図4(b)に示す基本領域bである。
なお、以下では、基本領域aに格納されているデータ全体を、「Data a」とし、基本領域bに格納されているデータ全体を「Data b」として説明する。
<基本領域bへの書込>
まず、第2仮想計算機10Bが、基本領域bに対し書込を行おうとして、書込禁止違反が発生した場合を例に、ハイパバイザ100による例外処理を説明する。
書込禁止違反が発生すると、ハイパバイザ100の領域管理部130は、対象仮想計算機(この例では、第2仮想計算機10B)が書込を行おうとしたページが基本領域か否かをページテーブル5に基づいて判定する(ステップS1)。
この例では、対象エントリ59aの共用フラグが「1」なので、領域管理部130は、対象仮想計算機が書込を行おうとしたページが基本領域であると判定し(ステップS1:yes)、その基本領域を複製する(ステップS2)。ここでは、複製先の領域の物理アドレスは「0x80005000」であるものとする。
続いて、領域管理部130は、対象エントリ59aの物理アドレスを、複製した領域の物理アドレス(0x80005)に、共用フラグを「0」に、書込禁止フラグを一旦「0」にそれぞれ更新し(ステップS3)、対応エントリ58aの共用フラグを「0」に更新する(ステップS4)。
領域割当部131は、対象仮想計算機が、基本領域bに行おうとした書込を、ステップS2で複製した領域に行う(ステップS5)。ここでは、この複製した領域に格納されている書込後のデータ全体を「Data c」として説明する。
領域割当部131は、次に実行すべき命令を指すように、プログラムカウンタを設定し(ステップS6)、書込禁止設定部120を介して、対象エントリ59aの書込禁止フラグを再び「1」に更新し、例外処理を終了する。
図5(a)は、基本領域bについての書込禁止違反に基づく例外処理が終了した時点におけるページテーブル5の内容例を示しており、(b)は、その時点における各仮想計算機へのメモリ4上の領域の割当例を示している。
基本領域bについての書込禁止違反に基づく例外処理の実行前後で、図4(a)のエントリ58aは、図5(a)のエントリ58bの状態に、図4(a)のエントリ59aは、図5(a)のエントリ59bの状態に更新される。
図5(b)に示すように、図4(b)の基本領域bは、非共用基本領域b´に変更され、複製領域cが生成されている。
<非共用基本領域b´への書込>
続いて、第1仮想計算機10Aが、非共用基本領域b´に対し書込を行おうとして、書込禁止違反が発生した場合を例に、ハイパバイザ100による例外処理を説明する。
書込禁止違反が発生すると、ハイパバイザ100の領域管理部130は、対象仮想計算機(この例では、第1仮想計算機10A)が書込を行おうとしたページ(この例では、非共用基本領域b´)が基本領域ではないので(ステップS1:no)、領域解放部132は、図5(a)に示す対象エントリ58bの書込禁止フラグを「0」に更新し(ステップS8)、その書込を行う(ステップS9)。ここでは、この非共用基本領域b´に格納されているデータ全体を「Data c」として説明する。
また、領域解放部132は、次に実行すべき命令を指すように、プログラムカウンタを設定し(ステップS10)、非共用基本領域b´の内容と対応領域(この例では複製領域c)の内容とを照合し(ステップS11)、この例では、一致するので(ステップS12:yes)、対応領域(複製領域c)を解放する(ステップS13)。
また、領域解放部132は、非共用基本領域b´を基本領域bに変更する(ステップS14)。即ち、ページテーブル5の対象エントリ58bにおいて、共用フラグを「1」に更新し、かつ、対応エントリ59bにおいて、物理アドレスを、対象エントリ58bの物理アドレス(0x80002)と同一のアドレスに更新し、共用フラグを「1」に更新する。
領域解放部132は、対象エントリ58bの書込禁止フラグを「1」に設定し(ステップS15)、例外処理を終了する。
図6(a)は、非共用基本領域b´についての書込禁止違反に基づく例外処理が終了した時点におけるページテーブル5の内容例を示しており、(b)は、その時点における各仮想計算機へのメモリ4上の領域の割当例を示している。
非共用基本領域b´についての書込禁止違反に基づく例外処理の実行前後で、図5(a)のエントリ58bは、図6(a)のエントリ58aの状態に、図5(a)のエントリ59bは、図6(a)のエントリ59aの状態に更新される。
図6(b)に示すように、図5(b)の非共用基本領域b´は、基本領域bに変更され、複製領域cは解放されている。
このように、第2仮想計算機10Bが基本領域bに書込を行おうとした際に、一旦複製領域cが確保されるので、メモリ使用量は一旦増加する。しかしながら、第1仮想計算機10Aが非共用基本領域b´に書込を行い、非共用基本領域b´及び複製領域cの内容が一致した際に、確保していた複製領域cを解放するため、各仮想計算機それぞれが特定処理の実行中においても、メモリ使用量の総量を抑えることができる。
≪実施の形態2≫
近年の一般的なシステムLSI(Large Scale Integration)においては、2個以上のプロセッサコアを有するものが少なくない。そこで、以下では、マルチコアプロセッサを用いた仮想計算機システムの例を、実施の形態1との相違点を中心に説明する。
<構成>
まず、実施の形態2に係る仮想計算機システム1100の構成について説明する。
図7は、仮想計算機システム1100のシステム構成図である。
仮想計算機システム1100は、同図に示すように、実施の形態1に係る仮想計算機システム1000のハードウェア資源に加え、プロセッサ8と、プロセッサ8用のキャッシュ記憶装置9を備える。
プロセッサ8は、プロセッサ1と同一の命令セットを有するが、プロセッサ1とは、クロック周波数等が異なるものである。なお、特に図示していないが、プロセッサ8は、プロセッサ1と同様に、TLBを有し、プログラム実行の過程で、ページテーブル5から取得したマッピングのいくつかを、このTLBに一時的に記憶する。
また、特に図示して説明しないが、キャッシュ記憶装置3及びキャッシュ記憶装置9は、相互に、データの一貫性を保証するための機構(いわゆるスヌープキャッシュ機能)を有しているものとする。
また、仮想計算機システム1100は、仮想計算機システム1000が備えるハイパバイザ100に代えて、ハイパバイザ200を備える。
ハイパバイザ200は、ハイパバイザ100と同様に、第1仮想計算機10A及び第2仮想計算機10Bへの上記ハードウェア資源の割当を管理する機能を有するが、特に、各仮想計算機の特定処理の実行進度に出来るだけ差が発生しないように、各プロセッサの割当を行う点で、ハイパバイザ100とは異なる。
この実施の形態では、各仮想計算機の特定処理の実行進度に出来るだけ差が生じないようにするために、実行進度がより遅れている仮想計算機に、性能のよいプロセッサを割り当てる例を説明する。プロセッサの性能の評価方法については、後述する。
ハイパバイザ200は、ハイパバイザ100が備えるプロセッサ割当部110に代えて、プロセッサ割当部220を備え、更に進度管理部210を備える。
進度管理部210は、各仮想計算機(10A、10B)における特定処理の実行進度を管理する機能を有し、各仮想計算機のうち、特定処理の実行進度が遅れている仮想計算機を繰り返し特定し、特定した仮想計算機が変化する毎に、プロセッサ割当部220に通知する。
プロセッサ割当部220は、実施の形態1に係るプロセッサ割当部110と同様に、プロセッサ(1、8)を、各仮想計算機に割り当てる機能を有するが、進度管理部210からの通知に基づいて、特定処理の実行進度が遅れている仮想計算機に、各プロセッサ(1、8)のうち、より性能のよいプロセッサを割り当てる点で、プロセッサ割当部110とは異なる。
<データ>
次に、仮想計算機システム1100が使用するデータについて、図8を用いて説明する。
図8(a)は、進度管理テーブル20のデータ構成及び内容例を示す図であり、(b)は、割当管理テーブル30のデータ構成及び内容例を示す図である。
まず、進度管理テーブル20について説明する。
進度管理テーブル20は、メモリ4に記憶されており、進度管理部210により更新されるテーブルであり、図8(a)に示すように、仮想計算機毎に、VMID21と、実行進度22とを対応付けて構成される情報である。
ここで、VMID21は、対応する仮想計算機を示す識別情報であり、ここでは、実施の形態1で説明したページテーブル5のVMID51と同様に、一例として、第1仮想計算機10Aの識別情報として「1」を、第2仮想計算機10Bの識別情報として「2」を用いている。
また、実行進度22は、対応する仮想計算機における特定処理の実行進度を示す情報である。
例えば、同図では、VMIDが「1」である仮想計算機(つまり、第1仮想計算機10A)の特定処理の実行進度は「20%」であることを示している。
ここで、本実施の形態では、特定処理を行うためのプログラムには、複数のチェックポイントが予め設定されており、各仮想計算機における特定処理の実行が、チェックポイントに到達する毎に、進度管理部210は、そのチェックポイントに予め設定されている実行進度を示すように、進度管理テーブル20を更新するものとする。
なお、これは、各チェックポイントで、そのチェックポイントに予め設定されている実行進度を示すデータをパラメータとした、進度管理テーブル20を更新するためのルーチンの呼出が行われることで実現される。
このために、この特定処理を行うためのプログラムの設計者は、各チェックポイントについての実行進度の設定を予め行っておく必要がある。例えば、この設計者は、特定処理全体に対し、処理完了の程度が10%、20%、・・・、90%となる各実行位置にチェックポイントを設定し、処理完了の程度が10%となる実行位置のチェックポイントに実行進度「10%」を設定し、処理完了の程度が20%となる実行位置のチェックポイントに実行進度「20%」を設定し、というように各チェックポイントへ実行進度を設定する。
なお、上述の例のように、設定するチェックポイントの数が比較的少ない場合には、進度管理テーブル20における各仮想計算機の実行進度が同一になる場合もある。その場合、進度管理部210は、いずれか一方の仮想計算機(例えば、第1仮想計算機10A)を特定処理の実行進度が遅れている仮想計算機と特定すればよい。
次に、割当管理テーブル30について説明する。
割当管理テーブル30は、メモリ4に記憶されており、プロセッサ割当部220により参照及び更新されるテーブルであり、図8(b)に示すように、プロセッサ毎に、プロセッサID31と、周波数32と、割当率33と、VMID34とを対応付けて構成される情報である。
ここで、プロセッサID31は、対応するプロセッサを示す識別情報であり、ここでは、一例として、プロセッサ1の識別情報として「1」を、プロセッサ8の識別情報として「2」を用いている。
周波数32は、対応するプロセッサのクロック周波数を示す情報であり、割当率33は、対応するプロセッサを特定処理の実行に割り当てることが可能な割合を示す情報である。
また、VMID34は、対応するプロセッサが割り当てられている仮想計算機を示す識別情報であり、進度管理テーブル20のいずれかのVMIDと一致するものである。
例えば、同図では、プロセッサIDが「1」であるプロセッサ(つまり、プロセッサ1)の周波数は「1GHz」であり、割当率は「70%」であり、そのプロセッサは、VMIDが「1」である仮想計算機(つまり、第1仮想計算機10A)に割り当てられていることを示している。
なお、本実施の形態では、クロック周波数と割当率との積が大きい値となるプロセッサほど、性能のよいプロセッサであるとする。この割当管理テーブル30の例では、プロセッサIDが「1」であるプロセッサ1の性能を示す値(1GHz×0.7)より、プロセッサIDが「2」であるプロセッサ8の性能を示す値(2GHz×1.0)の方が大きいため、プロセッサ8の方が性能のよいプロセッサである。
プロセッサ割当部220は、進度管理部210により通知されている特定処理の実行進度が遅れている仮想計算機(10A又は10B)に、性能のよいプロセッサ(この例では、プロセッサ8)を割り当て、割当の状況に変化が生じる毎に、その状況を示すように割当管理テーブル30におけるVMIDを更新する。
このように、プロセッサ割当部220は、特定処理の実行進度がより遅れている仮想計算機に性能のよいプロセッサを割り当てることで、各仮想計算機の特定処理の実行進度に大きな差が生じないように制御するので、各仮想計算機がメモリ4上の領域を共用できる可能性を高め、各仮想計算機それぞれが特定処理の実行中においても、メモリ使用量の総量を抑えることができる。
<動作>
書込禁止違反が発生した際のハイパバイザ200による例外処理は、実施の形態1に係るハイパバイザ100による処理(図3参照)と同様であるため、説明は省略する。
≪実施の形態3≫
実施の形態1では、ハイパバイザ100が、複製領域及び非共用基本領域に、書込禁止設定を行い、非共用領域(複製領域又は非共用基本領域)についての書込禁止違反が発生した際に、この非共用領域と対応領域との照合を行う例を説明した。
しかしながら、この方法では、書込禁止違反が頻発し、各仮想計算機における特定処理の実行速度が低下する恐れがある。
そこで、以下では、書込禁止違反が発生した際に照合を行うではなく、定期的に照合を行うようにした例を、実施の形態1との相違点を中心に説明する。
<構成>
まず、実施の形態3に係る仮想計算機システム1200の構成について説明する。
図9は、仮想計算機システム1200のシステム構成図である。
仮想計算機システム1200は、同図に示すように、実施の形態1に係る仮想計算機システム1000が備えるハイパバイザ100に代えて、ハイパバイザ300を備える。
ハイパバイザ300は、ハイパバイザ100が備える領域管理部130に代えて、領域割当部311及び領域解放部312を有する領域管理部310を備える。
ここで、領域割当部311は、実施の形態1に係る領域割当部131と同様に、対象仮想計算機が書込を行おうとしたページが基本領域である場合に、対象仮想計算機の割当を基本領域から複製領域に変更し、変更後の状態を示すようにページテーブル5を更新する機能を有するが、この複製領域についての書込禁止設定を行わず(つまり、書込禁止設定部120への指示を行わない)、非共用基本領域の書込禁止設定も解除する点で、領域割当部131とは異なる。
また、領域解放部312は、一方の仮想計算機に割り当てられている各非共用領域(複製領域又は非共用基本領域)について、その非共用領域の内容と、他方の仮想計算機の対応領域の内容とを定期的に照合する機能を有する。照合の結果、内容が一致する場合には、他方の仮想計算機の割当を、対応領域から一方の仮想計算機に割り当てられている非共用領域に変更し、対応領域を解放し、変更後の状態を示すようにページテーブル5を更新する。
なお、領域解放部312は、定期的に上記照合を行うために、この実施の形態では、一定時間を繰り返し計時するタイマ(周辺モジュール7に含まれる)からの割り込みを利用するものとする。
<動作>
次に、仮想計算機システム1200の動作について、図10及び図11を用いて説明する。
まず、書込禁止違反が発生した際のハイパバイザ300による例外処理について説明する。
図10は、書込禁止違反が発生した際のハイパバイザ300による例外処理を示すフローチャートである。
ここで、同図に示すステップS16の処理以外の処理(ステップS2、S3、S5、S6の処理)は、図3に示す実施の形態1に係るハイパバイザ100による例外処理と同様のものであるため、ステップS16の処理を中心に説明する。
書込禁止違反が発生すると、この実施の形態では、対象仮想計算機が書込を行おうとしたページは必ず基本領域であるので、ハイパバイザ300における領域管理部310の領域割当部311は、その基本領域を複製し(ステップS2)、ページテーブル5の対象エントリを、複製した領域を示すように更新する(ステップS3)。なお、この際、実施の形態1で説明したように、対象エントリの書込禁止フラグを「0」に更新しておく。
また、領域割当部311は、上記基本領域を非共用基本領域に変更すると共に、書込禁止設定を解除する(ステップS16)。より詳細には、ページテーブル5における対応エントリの共用フラグを「0」に更新すると共に、書込禁止フラグを「0」に更新する。
また、領域割当部311は、対象仮想計算機が、基本領域に行おうとした書込を、ステップS2で複製した領域に行い(ステップS5)、対象仮想計算機が実行中のプログラムにおいて、書込禁止違反を発生させた書込命令の次に実行すべき命令を指すように、プログラムカウンタを設定し(ステップS6)、例外処理を終了する。
次に、タイマからの割込が発生した際のハイパバイザ300による割込処理について説明する。
図11は、タイマからの割込が発生した際のハイパバイザ300による割込処理を示すフローチャートである。
ここで、同図に示すステップS21、S22及びS23の処理以外の処理(ステップS11〜S14の処理)は、図3に示す実施の形態1に係るハイパバイザ100による例外処理と同様のものであるため、ステップS21、S22及びS23の処理を中心に説明する。
タイマからの割込が発生すると、ハイパバイザ300における領域管理部130の領域解放部312は、一方の仮想計算機(例えば、仮想計算機10Aとする)に割り当てられている非共用領域(複製領域又は非共用基本領域)のうち、以下説明するステップS22以降の処理を行っていない領域があるか否かを判定する(ステップS21)。
未処理の非共用領域がある場合には(ステップS21:Yes)、領域解放部312は、1つの未処理の非共用領域を選択し(ステップS22)、選択した非共用領域の内容と対応領域の内容とを照合し(ステップS11)、一致するか否かを判定する(ステップS12)。
領域解放部312は、選択した非共用領域の内容と対応領域の内容とが一致しない場合には(ステップS12:No)、再びステップS21から処理を行い、一致する場合には(ステップS12:yes)、対応領域を解放、即ち、未使用の領域とする(ステップS13)。
また、領域解放部312は、ステップS22で選択した非共用領域を基本領域に変更し(ステップS14)、その基本領域に書込禁止設定を行い(ステップS23)、再びステップS21から処理を行う。
ステップS21において、未処理の領域がない場合には(ステップS21:No)、領域解放部312は、割込処理を終了する。
≪実施の形態4≫
実施の形態3では、ハイパバイザ300における領域管理部310の領域解放部312が、一方の仮想計算機(上述の例では、仮想計算機10A)に割り当てられている各非共用領域について、その複製領域の内容と対応領域の内容とを定期的に照合する例を説明した。
一般的な多重系システムにおいては、早期にハードウェア故障やソフトウェアの不具合を検出するために、チェックポイントを用いて中間結果を照合することが行われている。
そこで、以下では、各仮想計算機が特定処理を行うためのプログラムに1つ以上のチェックポイントを予め設定しておき、各チェックポイントについて、そのチェックポイントに各仮想計算機における特定処理の実行が到達するのを待って、照合を行うようにした例を、実施の形態3との相違点を中心に説明する。
<構成>
まず、実施の形態4に係る仮想計算機システム1300の構成について説明する。
図12は、仮想計算機システム1300のシステム構成図である。
仮想計算機システム1300は、同図に示すように、実施の形態3に係る仮想計算機システム1200が備えるハイパバイザ300に代えて、ハイパバイザ400を備える。
ハイパバイザ400は、ハイパバイザ300における領域管理部310の領域解放部312に代えて、領域管理部410の領域解放部411を備えるものである。
ここで、領域解放部411は、実施の形態3に係る領域解放部312と同様に、一方の仮想計算機に割り当てられている各非共用領域(複製領域又は非共用基本領域)について、その非共用領域の内容と、他方の仮想計算機の対応領域の内容とを照合する機能を有するが、全ての仮想計算機における特定処理の実行が、同一のチェックポイントに到達した際、この照合を行う点で、領域解放部312とは異なる。
なお、チェックポイントでは、実施の形態2で説明したものと同様に、そのチェックポイントに予め設定されている実行進度を示すデータをパラメータとした、以下説明する図13に示す処理ルーチンの呼出が行われるものとする。このパラメータにより、領域管理部410は、ある仮想計算機における特定処理の実行が、いずれのチェックポイントに到達したかを知ることができる。
<動作>
次に、仮想計算機システム1300の動作について、図13を用いて説明する。
図13は、各仮想計算機における特定処理の実行がチェックポイントに到達した際のハイパバイザ400による処理を示すフローチャートである。
ここで、同図に示すステップS31の処理以外の処理(ステップS21、S22、S11〜S14、S23の処理)は、図11に示す実施の形態3に係るハイパバイザ300による割込処理と同様のものであるため、ステップS31の処理を中心に説明する。
一方の仮想計算機における特定処理の実行がチェックポイントに到達すると、ハイパバイザ400の領域管理部410は、他方の仮想計算機における特定処理の実行がそのチェックポイントに到達しているか否かを判定する(ステップS31)。
他方の仮想計算機における特定処理の実行が、そのチェックポイントに到達していない場合には(ステップS31:No)、領域管理部410は、特定処理の実行がチェックポイントに到達した際の処理を終了する。なお、一方の仮想計算機における特定処理の実行は、他方の仮想計算機がこのチェックポイントに到達し(ステップS31:Yes)、以下説明するステップS21、S22、S11〜S14、S23の処理が完了するまで、このチェックポイントの位置で停止(中断)することになる。
他方の仮想計算機における特定処理の実行がそのチェックポイントに到達している場合には(ステップS31:Yes)、領域管理部410の領域解放部411は、ステップS21〜S23の処理を繰り返し、ステップS21で、未処理の非共用領域がなくなると(ステップS21:No)、特定処理の実行がチェックポイントに到達した際の処理を終了する。
以降、各仮想計算機は、特定処理におけるチェックポイントの直後の命令から実行を行うことになる。
≪補足≫
以上、本発明に係る仮想計算機システムを、各実施の形態に基づいて説明したが、以下のように変形することも可能であり、本発明は上述した各実施の形態で示した通りの仮想計算機システムに限られないことは勿論である。
(1)実施の形態1では、図3のステップS7で説明したように、複製領域について書込禁止設定を行うものとして説明したが、このステップS7の処理を行わないようにしてもよい。
実施の形態1では、仮想計算機システム1000は、2つの仮想計算機(10A、10B)を備え、各仮想計算機は、同一の特定処理を行うものとして説明したため、特定処理の実行進度が進んでいる仮想計算機に複製領域が割り当てられ、特定処理の実行進度が遅れている仮想計算機には非共用になった基本領域(非共用基本領域)が割り当てられることになる。
ここで、非共用基本領域には、書込禁止設定がなされているため、上述のステップS7の処理を行わなくても、特定処理の実行進度が遅れている仮想計算機が非共用基本領域に書込を行おうとした場合に書込禁止違反が発生し、図3のステップS11で照合が行われることになる。
このように、複製領域について書込禁止設定を行わないように変形した場合には、書込禁止違反の発生頻度が低下するため、各仮想計算機における特定処理の実行速度をある程度維持しつつ、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることが可能になる。
(2)各実施の形態では特に説明していなかったが、仮想計算機システム1000、1100、1200、1300を実現するコンピュータ上で実行されている、各仮想計算機による特定処理以外の処理においても、書込禁止違反が発生する可能性がある。
そのような場合、各実施の形態に係るハイパバイザは、その書込禁止違反を発生させた書込を行ったものが、第1仮想計算機10A又は第2仮想計算機10Bであるかを、例えば、VMIDに基づいて判定し、第1仮想計算機10A又は第2仮想計算機10Bである場合にのみ、書込禁止違反が発生した際の例外処理(図3、図10参照)を行うようにすればよい。なお、書込禁止違反を発生させた書込を行ったものが、第1仮想計算機10A及び第2仮想計算機10Bのいずれでもない場合には、その例外を発生させた他の仮想計算機等に応じて予め定義されている処理を行うことになる。
(3)実施の形態1の例では、仮想計算機システム1000は、2つの仮想計算機(10A、10B)を備えるため、一方の仮想計算機(対象仮想計算機)が基本領域に書込を行おうとした際に、図3のステップS4に示すように、基本領域を非共用基本領域に変更するものとして説明した。
しかしながら、3つ以上の仮想計算機を備える場合には、順次、対象仮想計算機の割当が基本領域から複製領域に変更されることで、基本領域が割り当てられている仮想計算機の数が1つになった場合にのみ、図3のステップS4の処理を行うようにする必要がある。
このために、基本領域毎に、割り当てられている仮想計算機の数を管理するようにし、図3のステップS3の処理の直後に、ステップS1の対象の基本領域に割り当てられている仮想計算機の数を減少させる処理を行い、この処理後の仮想計算機の数が1つの場合にのみ、図3のステップS4の処理を行うようにしてもよい。
また、別の方法として、図3のステップS3の処理の直後に、ページテーブル5において、ステップS3の対象エントリと同一の論理アドレスを有する各対応エントリの中に、同一の物理アドレスを有するエントリが存在するか否かを判定する処理を行い、同一の物理アドレスを有するエントリが存在する場合にのみ、図3のステップS4の処理を行うようにしてもよい。
(4)実施の形態1では、図3のステップS13に示すように、照合対象となった非共用領域と対応領域とのうち、対応領域を解放するものとして説明したが、解放する領域を逆にしてもよい。即ち、対象仮想計算機の割当を非共用領域から対応領域に変更し、非共用領域の方を解放するようにしてもよい。
(5)各実施の形態では、書込禁止設定部120が書込禁止設定を行うものとして説明したが、領域割当部及び領域解放部が直接、書込禁止設定を行うようにしてもよい。
また、各実施の形態では、領域割当部及び領域解放部が書込禁止設定の解除を直接行うものとして説明したが、書込禁止設定部120が行うようにしてもよい。即ち、書込禁止設定及びその解除を行う機能は、書込禁止設定部120と、領域割当部及び領域解放部とのいずれが有してもよい。
(6)実施の形態2では、図8(b)に示すように周波数及び割当率の両方がプロセッサ1とプロセッサ8とで異なる場合を例に説明したが、これらの一方又は両方がプロセッサ1とプロセッサ8とで同一であってもよい。
また、実施の形態2では、2つのプロセッサ(プロセッサコア)を用いた例を説明したが、3つ以上のプロセッサを用いてもよく、その際、各プロセッサのクロック周波数及び特定処理の実行に割り当てることが可能な割合は、同一でも異なっていてもよい。
また、実施の形態2では、2つのプロセッサを用いて、2つの仮想計算機を実行する例を説明したが、プロセッサの個数を上回る数の仮想計算機を実行するようにしてもよく、その際の各仮想計算機へのプロセッサの割当を以下のように行ってもよい。
即ち、例えば、3つの仮想計算機を2つのプロセッサを用いて実行する場合に、特定処理の実行進度が最も遅れている仮想計算機に1つのプロセッサ(プロセッサコア)を独占的に割り当てて、他の2つの仮想計算機に、残りの1つのプロセッサ(プロセッサコア)を時分割で割り当てるように変形してもよい。また、この残りの1つのプロセッサを、他の2つの仮想計算機に割り当てる際に、この2つの仮想計算機における特定処理の実行進度に応じて、このプロセッサの割当時間を変えるように変形してもよい。
なお、ここでは、一例として、プロセッサの数が2つで、仮想計算機の数が3つの場合を説明したが、プロセッサの数(但し2つ以上)より、仮想計算機の数が多ければ、プロセッサの数及び仮想計算機の数はこの例に限らず、この変形を適用することができる。
また、例えば、2つ以上の仮想計算機を1つのプロセッサを用いて実行する場合に、各仮想計算機における特定処理の実行進度に応じて、このプロセッサの割当時間を変えるようにしてもよい。つまり、特定処理の実行進度が遅れている仮想計算機に、優先的にプロセッサを割り当てるようにしてもよい。
(7)実施の形態2では、図8(b)に示す周波数と割当率との積によりプロセッサの性能を評価する例を説明したが、他の指標を用いてプロセッサの性能を評価してもよいし、仮想計算機システムの設計者が、プロセッサの性能の優劣を予め定義しておいてもよい。
(8)図2に示すページテーブル5及び図8(a)に示す進度管理テーブル20の例では、各仮想計算機のVMIDを「1」と「2」を用いて説明したが、これは一例であり、VMIDは、各仮想計算機を識別可能な情報であればその形式は問わず、例えば、同図に示す値と異なる値であってもよいし、文字や、文字列等であってもよい。
また、図2に示すページテーブル5では、共用フラグ及び書込禁止フラグとして、ぞれぞれ「0」と「1」を用いて説明したが、これについても、上記VMIDと同様、2つの状態を識別可能な情報であればその形式は問わない。
また、このページテーブル5の例では、1ページのサイズが、4KBである場合を例に説明したが、1ページのサイズはこれに限らず、これより小さくても、大きくてもよい。
また、図8(b)に示す割当管理テーブル30の例では、各プロセッサのプロセッサIDを「1」と「2」を用いて説明したが、これは一例であり、上記VMIDと同様、各プロセッサを識別可能な情報であればその形式は問わない。
また、この割当管理テーブル30は、プロセッサ毎に、プロセッサID31と、周波数32と、割当率33と、VMID34とを対応付けて構成される場合を例に説明したが、割当管理テーブル30として必須のデータ項目は、プロセッサID31とVMID34であり、周波数32と、割当率33とについては、プロセッサIDと対応付けて、別のテーブルで管理するようにしてもよい。
(9)各仮想計算機(10A、10B)が実行する特定処理は、2つのタスク(タスクA11、B12)により実現される処理であるとして説明したが、このタスクの数はこれより少なくても多くてもよい。
(10)実施の形態3では、図10のステップS5、S6の処理を行うものとして説明したが、これらの処理を行うことなく、書込禁止違反が発生した際のハイパバイザ300による例外処理を終了するようにしてもよい。
この場合、上記例外を発生させる書込命令を実行した仮想計算機は、再度同じ書込命令を実行するが、ステップS2で複製された領域には、書込禁止設定がなされていないので、書込禁止違反を発生させることなく書込を完了できるためである。
(11)各実施の形態におけるハイパバイザの処理を、第1仮想計算機10A、第2仮想計算機10B以外の仮想計算機を動作させ、その処理として実現するようにしてもよいし、OS13を改良し、OSの処理として実現するようにしてもよい。
(12)各実施の形態において説明した各構成要素のうち、全部又は一部を1チップ又は複数チップの集積回路で実現してもよいし、コンピュータのプログラムで実現してもよいし、その他どのような形態で実現してもよい。
また、各実施の形態において説明した各構成要素は、仮想計算機システムが有するプロセッサと協働することにより、その機能を実現する。
(13)各実施の形態において説明したハイパバイザの処理(図3、図10、図11、図13参照)をプロセッサに実行させるためのプログラムを、記録媒体に記録し又は各種通信路等を介して、流通させ頒布することもできる。このような記録媒体には、ICカード、光ディスク、フレキシブルディスク、ROM、フラッシュメモリ等がある。流通、頒布されたプログラムは、機器におけるプロセッサで読み取り可能なメモリ等に格納されることにより利用に供され、そのプロセッサがそのプログラムを実行することにより各実施の形態で示したハイパバイザの各機能が実現される。
(14)各実施の形態に係る仮想計算機システムに、上記(1)〜(13)の一部又は全部の変形を組み合わせて適用してもよい。
(15)以下、更に本発明の一実施形態に係る仮想計算機システムの構成及びその変形例と各効果について説明する。
(a)本発明の実施の形態に係る仮想計算機システムは、メモリ上のプログラムをプロセッサが実行することで構成される複数の仮想計算機を備える仮想計算機システムであって、前記メモリ上の一の領域である基本領域が、前記複数の仮想計算機に共に割り当てられている場合において、当該基本領域に対し、一の仮想計算機が書込を行おうとしたときに、当該一の仮想計算機の割当を、前記基本領域から、当該基本領域の内容を複製し当該書込後の状態とした複製領域に変更し、当該一の仮想計算機以外の他の仮想計算機に対する前記基本領域の割当は維持する領域割当手段と、前記基本領域及び前記複製領域の内容の照合の契機を定める所定条件を満たす場合に、当該照合を行い、前記基本領域及び少なくとも1つの前記複製領域の内容が一致したときには、内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を、当該他の領域から当該一の領域に変更し、当該他の領域を解放する領域解放手段とを備える。
この仮想計算機システムによれば、内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を、他の領域から一の領域に変更し、他の領域は解放されるので、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
(b)また、前記基本領域及び各複製領域それぞれは、前記メモリ上に記憶されているページテーブルにおいて管理されている、異なる物理アドレスで示されるページであり、各仮想計算機は、同一のプログラムに基づく特定処理を実行することとしてもよい。
この仮想計算機システムによれば、各仮想計算機は共に、同一のプログラムに基づく特定処理を実行するので、各仮想計算機における特定処理の実行進度が同程度である場合には、基本領域の内容と少なくとも1つの複製領域の内容とが一致する可能性が高くなり、内容が一致した各領域のうちの一の領域以外の他の領域が解放されることで、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
(c)また、前記所定条件は、割り当てられている仮想計算機の数が1つである前記基本領域及び各複製領域のうちのいずれか一の領域に対する書込命令を、当該一の領域が割り当てられている仮想計算機が実行したことであることとしてもよい。
この仮想計算機システムによれば、一の領域に対する書込命令が実行された結果、一の領域の内容が変化するため、基本領域の内容と少なくとも1つの複製領域の内容とが一致する可能性あるタイミングで効率的な照合を実現できる。
(d)また、前記領域割当手段は、前記一の仮想計算機の割当を前記複製領域に変更する際に、前記ページテーブルにおいて、当該複製領域への書込を禁止する設定を行い、前記領域解放手段は、前記複製領域が割り当てられている仮想計算機が、当該複製領域に対し書込を行おうとして、書込禁止違反が発生したことを前記所定条件として、当該複製領域に当該書込を行った後で、前記照合を行うこととしてもよい。
この仮想計算機システムによれば、仮想計算機が複製領域への書込を行おうとしたことを、書込禁止違反による割込(例外)という従来からある仕組みを用いて検出し、書込が行われてその内容が変化した複製領域の内容と基本領域の内容とが一致する可能性があるタイミングで照合を行うことができる。
(e)また、前記仮想計算機システムは、更に前記ページテーブルにおいて、前記基本領域への書込を禁止する設定を行う書込禁止設定手段を備え、前記領域解放手段は、割り当てられている仮想計算機の数が1つである前記基本領域に対し、当該仮想計算機が書込を行おうとして、書込禁止違反が発生したことを前記所定条件として、当該基本領域に当該書込を行った後で、前記照合を行うこととしてもよい。
この仮想計算機システムによれば、書込が行われてその内容が変化した、割り当てられている仮想計算機の数が1つである基本領域の内容と複製領域の内容との照合を、書込禁止違反による割込(例外)という従来からある仕組みを用いて行うことができる。
(f)また、前記ページテーブルにおいて、複数の仮想計算機に共に割り当てられている前記基本領域は、2つ以上の仮想計算機に割り当てられていることを示す共用状態に設定されており、前記領域割当手段は、前記一の仮想計算機の割当を前記複製領域に変更する際に、前記ページテーブルにおいて、当該複製領域を非共用状態に設定し、前記一の仮想計算機以外の他の仮想計算機の数が1つになった場合には、前記基本領域を、前記ページテーブルにおいて非共用状態に設定し、前記領域解放手段は、前記ページテーブルにおいて非共用状態に設定されている領域に対し、いずれかの仮想計算機が書込を行おうとしたことを前記所定条件として、当該領域に当該書込を行った後で、前記照合を行い、前記内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を当該一の領域に変更する際に、前記ページテーブルにおいて、当該一の領域を共用状態に設定することとしてもよい。
この仮想計算機システムによれば、非共用状態に設定されている領域、つまり、複製領域、又は非共用状態に設定されている基本領域に書込が行われてその内容が変化したときに照合を行うので、この基本領域及び少なくとも1つの複製領域の内容が一致する可能性のあるタイミングで効率的な照合を実現できる。
(g)また、前記仮想計算機システムは、更に前記ページテーブルにおいて、前記基本領域への書込を禁止する設定を行う書込禁止設定手段を備え、前記ページテーブルにおいて、複数の仮想計算機に共に割り当てられている前記基本領域は、2つ以上の仮想計算機に割り当てられていることを示す共用状態に設定されており、前記領域割当手段は、前記一の仮想計算機の割当を前記複製領域に変更する際に、前記ページテーブルにおいて、当該複製領域を非共用状態に設定し、前記一の仮想計算機以外の他の仮想計算機の数が1つになった場合には、前記基本領域を、前記ページテーブルにおいて非共用状態に設定し、前記領域解放手段は、前記ページテーブルにおいて非共用状態に設定されている前記基本領域が割り当てられている仮想計算機が、当該基本領域に書込を行おうとして、書込禁止違反が発生したことを前記所定条件として、非共用状態に設定されている前記基本領域に当該書込を行った後で、前記照合を行い、前記内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を当該一の領域に変更する際に、当該一の領域を前記ページテーブルにおいて共用状態に設定することとしてもよい。
この仮想計算機システムによれば、この非共用状態に設定されている基本領域に仮想計算機が書込を行おうとしたことを、書込禁止違反による割込(例外)という従来からある仕組みを用いて検出し、書込が行われてその内容が変化した非共用状態に設定されている基本領域の内容と少なくとも1つの複製領域の内容とが一致する可能性があるタイミングで照合を行うことができる。
(h)また、前記所定条件は、前回前記照合を行ってから、所定時間経過したことであることとしてもよい。
この仮想計算機システムによれば、所定時間毎に照合を行い、内容が一致した各領域のうちの一の領域以外の他の領域が解放され得るので、この所定時間を適切に設定することで、照合による特定処理の実行速度の低下を抑えつつ、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
(i)また、前記特定処理内の所定の実行位置には、中間結果を確認するためのチェックポイントが設定されており、前記所定条件は、各仮想計算機における前記特定処理の実行位置それぞれが、前記チェックポイントに到達したことであることとしてもよい。
ここで、各仮想計算機は共に、同一のプログラムに基づく特定処理を実行するので、ハードウェア故障やソフトウェアの不具合といった異常が発生していない限り、各仮想計算機における特定処理の実行位置がチェックポイントに達した際に、各複製領域の内容と基本領域の内容とは一致することになる。
従って、この仮想計算機システムによれば、各複製領域及び基本領域の内容が一致するはずであるタイミングで照合を行うので、照合による特定処理の実行速度の低下を抑えつつ、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
(j)また、前記領域解放手段は、前記複製領域が複数ある場合には、前記基本領域及び全ての複製領域の内容が一致した場合にのみ、前記一の領域に変更し、前記他の領域を解放することとしてもよい。
ここで、各仮想計算機は共に、同一のプログラムに基づく特定処理を実行するので、基本領域及び全ての複製領域の内容が一致しない場合には、その後に、これらの領域に対し再び書込が行われる可能性が高いと考えられる。即ち、基本領域及び一部の複製領域の内容が一致したタイミングで領域の解放を行った場合には、再び複製領域への割当の変更が生じる可能性が高いと考えられる。
この仮想計算機システムによれば、基本領域及び全ての複製領域の内容が一致したタイミングで領域の解放を行うので、割当の変更及び領域の解放の発生による特定処理の実行速度の低下を抑えつつ、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
(k)また、前記仮想計算機システムは、各仮想計算機のうち、前記特定処理の実行進度が最も遅れている仮想計算機を特定する進度管理手段と、各仮想計算機のうち、前記進度管理手段が特定した仮想計算機に、優先的に前記プロセッサを割り当てるプロセッサ割当手段とを備えることとしてもよい。
この仮想計算機システムによれば、特定処理の実行進度が最も遅れている仮想計算機に優先的にプロセッサを割り当てるため、各仮想計算機における特定処理の実行進度をそろえ、基本領域及び複製領域の内容が一致する可能性が高くすることができ、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
(l)また、前記プロセッサは、複数のプロセッサコアを有し、前記複数の仮想計算機の数は、3つ以上であり、前記プロセッサ割当手段は、各仮想計算機のうち、前記進度管理手段が特定した仮想計算機に、1つのプロセッサコアを独占的に割り当てることとしてもよい。
この仮想計算機システムによれば、特定処理の実行進度が最も遅れている仮想計算機が1つのプロセッサコアを独占して動作するため、各仮想計算機における特定処理の実行進度をそろえ、基本領域及び複製領域の内容が一致する可能性が高くすることができ、各仮想計算機の動作に必要なメモリ使用量の総量を抑えることができる。
(16)本発明に係る仮想計算機システムのメモリ及びプロセッサは、各実施の形態に係る仮想計算機システムのメモリ4、プロセッサ1、8に相当し、本発明に係る仮想計算機システムの複数の仮想計算機は、各実施の形態に係る仮想計算機システムの第1仮想計算機10A及び第2仮想計算機10Bに相当し、本発明に係る仮想計算機システムの領域割当手段、領域解放手段、書込禁止設定手段、進度管理手段、及びプロセッサ割当手段は、各実施の形態に係る仮想計算機システムのハイパバイザに相当する。
本発明に係る仮想計算機システムは、複数の仮想計算機を用いた多重系システムを実現する際に利用される。
1、8 プロセッサ
3、9 キャッシュ記憶装置
4 メモリ
5 ページテーブル
7 周辺モジュール
10A、10B 仮想計算機
100、200、300、400 ハイパバイザ
110、220 プロセッサ割当部
120 書込禁止設定部
130、310、410 領域管理部
131、311 領域割当部
132、312、411 領域解放部
210 進度管理部
1000、1100、1200、1300 仮想計算機システム
また、別の方法として、図3のステップS3の処理の直後に、ページテーブル5において、ステップS3の対象エントリと同一の論理アドレスを有する各対応エントリの中に、同一の物理アドレスを有するエントリが存在するか否かを判定する処理を行い、同一の物理アドレスを有するエントリが存在しない場合にのみ、図3のステップS4の処理を行うようにしてもよい。

Claims (14)

  1. メモリ上のプログラムをプロセッサが実行することで構成される複数の仮想計算機を備える仮想計算機システムであって、
    前記メモリ上の一の領域である基本領域が、前記複数の仮想計算機に共に割り当てられている場合において、当該基本領域に対し、一の仮想計算機が書込を行おうとしたときに、当該一の仮想計算機の割当を、前記基本領域から、当該基本領域の内容を複製し当該書込後の状態とした複製領域に変更し、当該一の仮想計算機以外の他の仮想計算機に対する前記基本領域の割当は維持する領域割当手段と、
    前記基本領域及び前記複製領域の内容の照合の契機を定める所定条件を満たす場合に、当該照合を行い、前記基本領域及び少なくとも1つの前記複製領域の内容が一致したときには、内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を、当該他の領域から当該一の領域に変更し、当該他の領域を解放する領域解放手段とを備える
    ことを特徴とする仮想計算機システム。
  2. 前記基本領域及び各複製領域それぞれは、
    前記メモリ上に記憶されているページテーブルにおいて管理されている、異なる物理アドレスで示されるページであり、
    各仮想計算機は、同一のプログラムに基づく特定処理を実行する
    ことを特徴とする請求項1記載の仮想計算機システム。
  3. 前記所定条件は、
    割り当てられている仮想計算機の数が1つである前記基本領域及び各複製領域のうちのいずれか一の領域に対する書込命令を、当該一の領域が割り当てられている仮想計算機が実行したことである
    ことを特徴とする請求項2記載の仮想計算機システム。
  4. 前記領域割当手段は、
    前記一の仮想計算機の割当を前記複製領域に変更する際に、前記ページテーブルにおいて、当該複製領域への書込を禁止する設定を行い、
    前記領域解放手段は、
    前記複製領域が割り当てられている仮想計算機が、当該複製領域に対し書込を行おうとして、書込禁止違反が発生したことを前記所定条件として、当該複製領域に当該書込を行った後で、前記照合を行う
    ことを特徴とする請求項3記載の仮想計算機システム。
  5. 前記仮想計算機システムは、更に
    前記ページテーブルにおいて、前記基本領域への書込を禁止する設定を行う書込禁止設定手段を備え、
    前記領域解放手段は、
    割り当てられている仮想計算機の数が1つである前記基本領域に対し、当該仮想計算機が書込を行おうとして、書込禁止違反が発生したことを前記所定条件として、当該基本領域に当該書込を行った後で、前記照合を行う
    ことを特徴とする請求項3記載の仮想計算機システム。
  6. 前記ページテーブルにおいて、複数の仮想計算機に共に割り当てられている前記基本領域は、2つ以上の仮想計算機に割り当てられていることを示す共用状態に設定されており、
    前記領域割当手段は、
    前記一の仮想計算機の割当を前記複製領域に変更する際に、前記ページテーブルにおいて、当該複製領域を非共用状態に設定し、前記一の仮想計算機以外の他の仮想計算機の数が1つになった場合には、前記基本領域を、前記ページテーブルにおいて非共用状態に設定し、
    前記領域解放手段は、
    前記ページテーブルにおいて非共用状態に設定されている領域に対し、いずれかの仮想計算機が書込を行おうとしたことを前記所定条件として、当該領域に当該書込を行った後で、前記照合を行い、前記内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を当該一の領域に変更する際に、前記ページテーブルにおいて、当該一の領域を共用状態に設定する
    ことを特徴とする請求項2記載の仮想計算機システム。
  7. 前記仮想計算機システムは、更に
    前記ページテーブルにおいて、前記基本領域への書込を禁止する設定を行う書込禁止設定手段を備え、
    前記ページテーブルにおいて、複数の仮想計算機に共に割り当てられている前記基本領域は、2つ以上の仮想計算機に割り当てられていることを示す共用状態に設定されており、
    前記領域割当手段は、
    前記一の仮想計算機の割当を前記複製領域に変更する際に、前記ページテーブルにおいて、当該複製領域を非共用状態に設定し、前記一の仮想計算機以外の他の仮想計算機の数が1つになった場合には、前記基本領域を、前記ページテーブルにおいて非共用状態に設定し、
    前記領域解放手段は、
    前記ページテーブルにおいて非共用状態に設定されている前記基本領域が割り当てられている仮想計算機が、当該基本領域に書込を行おうとして、書込禁止違反が発生したことを前記所定条件として、非共用状態に設定されている前記基本領域に当該書込を行った後で、前記照合を行い、前記内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を当該一の領域に変更する際に、当該一の領域を前記ページテーブルにおいて共用状態に設定する
    ことを特徴とする請求項2記載の仮想計算機システム。
  8. 前記所定条件は、
    前回前記照合を行ってから、所定時間経過したことである
    ことを特徴とする請求項2記載の仮想計算機システム。
  9. 前記特定処理内の所定の実行位置には、中間結果を確認するためのチェックポイントが設定されており、
    前記所定条件は、各仮想計算機における前記特定処理の実行位置それぞれが、前記チェックポイントに到達したことである
    ことを特徴とする請求項2記載の仮想計算機システム。
  10. 前記領域解放手段は、
    前記複製領域が複数ある場合には、前記基本領域及び全ての複製領域の内容が一致した場合にのみ、前記一の領域に変更し、前記他の領域を解放する
    ことを特徴とする請求項2記載の仮想計算機システム。
  11. 前記仮想計算機システムは、
    各仮想計算機のうち、前記特定処理の実行進度が最も遅れている仮想計算機を特定する進度管理手段と、
    各仮想計算機のうち、前記進度管理手段が特定した仮想計算機に、優先的に前記プロセッサを割り当てるプロセッサ割当手段とを備える
    ことを特徴とする請求項2記載の仮想計算機システム。
  12. 前記プロセッサは、複数のプロセッサコアを有し、
    前記複数の仮想計算機の数は、3つ以上であり、
    前記プロセッサ割当手段は、
    各仮想計算機のうち、前記進度管理手段が特定した仮想計算機に、1つのプロセッサコアを独占的に割り当てる
    ことを特徴とする請求項11記載の仮想計算機システム。
  13. メモリ上のプログラムをプロセッサが実行することで構成される複数の仮想計算機を備える仮想計算機システムにおける当該メモリ上の領域管理方法であって、
    前記メモリ上の一の領域である基本領域が、前記複数の仮想計算機に共に割り当てられている場合において、当該基本領域に対し、一の仮想計算機が書込を行おうとしたときに、当該一の仮想計算機の割当を、前記基本領域から、当該基本領域の内容を複製し当該書込後の状態とした複製領域に変更し、当該一の仮想計算機以外の他の仮想計算機に対する前記基本領域の割当は維持する領域割当ステップと、
    前記基本領域及び前記複製領域の内容の照合の契機を定める所定条件を満たす場合に、当該照合を行い、前記基本領域及び少なくとも1つの前記複製領域の内容が一致したときには、内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を、当該他の領域から当該一の領域に変更し、当該他の領域を解放する領域解放ステップとを含む
    ことを特徴とする領域管理方法。
  14. メモリ上のプログラムをプロセッサが実行することで構成される複数の仮想計算機を備える仮想計算機システムにおいて、当該メモリ上の領域管理処理を当該プロセッサに行わせるプログラムであって、
    前記領域管理処理は、
    前記メモリ上の一の領域である基本領域が、前記複数の仮想計算機に共に割り当てられている場合において、当該基本領域に対し、一の仮想計算機が書込を行おうとしたときに、当該一の仮想計算機の割当を、前記基本領域から、当該基本領域の内容を複製し当該書込後の状態とした複製領域に変更し、当該一の仮想計算機以外の他の仮想計算機に対する前記基本領域の割当は維持する領域割当ステップと、
    前記基本領域及び前記複製領域の内容の照合の契機を定める所定条件を満たす場合に、当該照合を行い、前記基本領域及び少なくとも1つの前記複製領域の内容が一致したときには、内容が一致した各領域のうちの一の領域以外の他の領域が割り当てられている仮想計算機の割当を、当該他の領域から当該一の領域に変更し、当該他の領域を解放する領域解放ステップとを含む
    ことを特徴とするプログラム。
JP2012517003A 2010-05-24 2010-12-13 仮想計算機システム、領域管理方法、及びプログラム Active JP5612681B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012517003A JP5612681B2 (ja) 2010-05-24 2010-12-13 仮想計算機システム、領域管理方法、及びプログラム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2010118613 2010-05-24
JP2010118613 2010-05-24
JP2012517003A JP5612681B2 (ja) 2010-05-24 2010-12-13 仮想計算機システム、領域管理方法、及びプログラム
PCT/JP2010/007226 WO2011148447A1 (ja) 2010-05-24 2010-12-13 仮想計算機システム、領域管理方法、及びプログラム

Publications (2)

Publication Number Publication Date
JPWO2011148447A1 true JPWO2011148447A1 (ja) 2013-07-25
JP5612681B2 JP5612681B2 (ja) 2014-10-22

Family

ID=45003457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012517003A Active JP5612681B2 (ja) 2010-05-24 2010-12-13 仮想計算機システム、領域管理方法、及びプログラム

Country Status (4)

Country Link
US (1) US9063868B2 (ja)
JP (1) JP5612681B2 (ja)
CN (1) CN102597972B (ja)
WO (1) WO2011148447A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014053159A1 (en) * 2012-10-01 2014-04-10 Abb Technology Ltd Symmetric multi-processor arrangement, safety critical system, and method therefor
WO2016135809A1 (ja) * 2015-02-23 2016-09-01 株式会社日立製作所 計算機システムおよび計算機システムのキャッシュ管理方法
GB2539436B (en) 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB2539428B (en) * 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539435B8 (en) * 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69113181T2 (de) 1990-08-31 1996-05-02 Ibm Verfahren und Gerät zur Querteilungssteuerung in einer verteilten Verarbeitungsumgebung.
JP3557026B2 (ja) 1996-01-12 2004-08-25 株式会社東芝 仮想記憶管理方法
JPH10240556A (ja) 1997-02-28 1998-09-11 Hitachi Ltd 共有メモリを持つ疎結合計算機システム
JP3546678B2 (ja) * 1997-09-12 2004-07-28 株式会社日立製作所 マルチos構成方法
US6996828B1 (en) 1997-09-12 2006-02-07 Hitachi, Ltd. Multi-OS configuration method
US6772419B1 (en) 1997-09-12 2004-08-03 Hitachi, Ltd. Multi OS configuration system having an interrupt process program executes independently of operation of the multi OS
US6718482B2 (en) 1997-09-12 2004-04-06 Hitachi, Ltd. Fault monitoring system
JP4072271B2 (ja) 1999-02-19 2008-04-09 株式会社日立製作所 複数のオペレーティングシステムを実行する計算機
US6789156B1 (en) * 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US9043194B2 (en) 2002-09-17 2015-05-26 International Business Machines Corporation Method and system for efficient emulation of multiprocessor memory consistency
JP2005275629A (ja) 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
JP2006155272A (ja) 2004-11-30 2006-06-15 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US20060143517A1 (en) * 2004-12-22 2006-06-29 Microsoft Corporation Replicated virtual machine
JP4585463B2 (ja) 2006-02-15 2010-11-24 富士通株式会社 仮想計算機システムを機能させるためのプログラム
US7610464B2 (en) 2006-02-22 2009-10-27 Sony Computer Entertainment Inc. Methods and apparatus for providing independent logical address space and access management
US8145760B2 (en) * 2006-07-24 2012-03-27 Northwestern University Methods and systems for automatic inference and adaptation of virtualized computing environments
US8060703B1 (en) * 2007-03-30 2011-11-15 Symantec Corporation Techniques for allocating/reducing storage required for one or more virtual machines
US7882198B2 (en) * 2007-07-02 2011-02-01 Oracle America, Inc. Shared JAVA JAR files
JP2009175960A (ja) 2008-01-23 2009-08-06 Panasonic Corp 仮想マルチプロセッサシステム
JP4783392B2 (ja) 2008-03-31 2011-09-28 株式会社東芝 情報処理装置および障害回復方法
US7567188B1 (en) * 2008-04-10 2009-07-28 International Business Machines Corporation Policy based tiered data deduplication strategy
US8359593B2 (en) * 2008-04-21 2013-01-22 Vmware, Inc. Computer machine migration of file system images using a redo-log file
JP5268469B2 (ja) * 2008-07-23 2013-08-21 株式会社東芝 高可用システム及び実行状態制御方法
US10437865B1 (en) * 2009-01-21 2019-10-08 Vmware, Inc. Computer storage deduplication

Also Published As

Publication number Publication date
CN102597972B (zh) 2016-06-08
JP5612681B2 (ja) 2014-10-22
WO2011148447A1 (ja) 2011-12-01
US20120226849A1 (en) 2012-09-06
US9063868B2 (en) 2015-06-23
CN102597972A (zh) 2012-07-18

Similar Documents

Publication Publication Date Title
JP5612681B2 (ja) 仮想計算機システム、領域管理方法、及びプログラム
US10552337B2 (en) Memory management and device
US10248322B2 (en) Memory system
RU2602793C2 (ru) Способ модификации разрешений на доступ к памяти в защищенной процессорной среде
US9454317B2 (en) Tiered storage system, storage controller and method of substituting data transfer between tiers
US8479198B2 (en) Hypervisor and server apparatus capable of restoring data inside a failure area
US10019276B2 (en) Dynamic non-uniform memory architecture (NUMA) locality for remote direct memory access (RDMA) applications
TWI614669B (zh) 遷移異構處理器之間不同大小的分頁
TW201502781A (zh) 解決記憶體存取錯誤時重播記憶體交易
Kwon et al. {DC-Store}: Eliminating noisy neighbor containers using deterministic {I/O} performance and resource isolation
CN112579251B (zh) 虚拟机内存管理的方法及设备
US10430221B2 (en) Post-copy virtual machine migration with assigned devices
US7734842B2 (en) Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages
US8006055B2 (en) Fine granularity hierarchiacal memory protection
US11188365B2 (en) Memory overcommit by speculative fault
JPWO2010097925A1 (ja) 情報処理装置
JP6123388B2 (ja) フォールトトレラントサーバ
US10216529B1 (en) Method and system for sharing driver pages
CN110032526B (zh) 一种基于非易失性介质的页缓存方法、系统及设备
US20190324868A1 (en) Backup portion of persistent memory
US20150269092A1 (en) Information processing device and shared memory management method
US7831963B2 (en) Method for tracing a program executed on a system comprising a plurality of processing units, and a system comprising a plurality of processing units
US10628056B2 (en) Information processing apparatus and shared memory management method
JP6202026B2 (ja) データ管理装置、データ管理方法およびデータ管理プログラム
JP2017182446A (ja) 情報処理装置、情報処理方法、およびプログラム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140402

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20140606

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140904

R150 Certificate of patent or registration of utility model

Ref document number: 5612681

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S131 Request for trust registration of transfer of right

Free format text: JAPANESE INTERMEDIATE CODE: R313133

SZ02 Written request for trust registration

Free format text: JAPANESE INTERMEDIATE CODE: R313Z02

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250