JP2008033392A - 仮想計算機システム及びその動作方法 - Google Patents
仮想計算機システム及びその動作方法 Download PDFInfo
- Publication number
- JP2008033392A JP2008033392A JP2006202870A JP2006202870A JP2008033392A JP 2008033392 A JP2008033392 A JP 2008033392A JP 2006202870 A JP2006202870 A JP 2006202870A JP 2006202870 A JP2006202870 A JP 2006202870A JP 2008033392 A JP2008033392 A JP 2008033392A
- Authority
- JP
- Japan
- Prior art keywords
- kernel image
- guest
- entry
- management table
- vmm
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 44
- 238000013507 mapping Methods 0.000 claims description 39
- 230000006870 function Effects 0.000 claims description 13
- 238000001994 activation Methods 0.000 description 35
- 230000004913 activation Effects 0.000 description 33
- 102100034033 Alpha-adducin Human genes 0.000 description 28
- 101000799076 Homo sapiens Alpha-adducin Proteins 0.000 description 28
- 101000629598 Rattus norvegicus Sterol regulatory element-binding protein 1 Proteins 0.000 description 28
- 238000010586 diagram Methods 0.000 description 17
- 101000971521 Homo sapiens Kinetochore scaffold 1 Proteins 0.000 description 15
- 102100021464 Kinetochore scaffold 1 Human genes 0.000 description 15
- 102100024348 Beta-adducin Human genes 0.000 description 6
- 101000689619 Homo sapiens Beta-adducin Proteins 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 101000578867 Homo sapiens Mis18-binding protein 1 Proteins 0.000 description 5
- 102100028344 Mis18-binding protein 1 Human genes 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 101100127381 Caenorhabditis elegans knl-2 gene Proteins 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】カーネルイメージの共有が可能か否かの判定を自動的に行う仮想計算機システムを提供すること。
【解決手段】本発明に係る仮想計算機システムは、物理メモリ601とVMM301とを備える。VMM301は、物理メモリ601上にロードされているカーネルイメージの状態を示す管理テーブル701を有する。ゲストOSの起動時、VMM301は、管理テーブル701を参照することによって、そのゲストOSのカーネルイメージと同一のカーネルイメージが物理メモリ601上に存在するか否かを判定する。
【選択図】図8
【解決手段】本発明に係る仮想計算機システムは、物理メモリ601とVMM301とを備える。VMM301は、物理メモリ601上にロードされているカーネルイメージの状態を示す管理テーブル701を有する。ゲストOSの起動時、VMM301は、管理テーブル701を参照することによって、そのゲストOSのカーネルイメージと同一のカーネルイメージが物理メモリ601上に存在するか否かを判定する。
【選択図】図8
Description
本発明は、仮想計算機システム及びその動作方法に関する。特に、本発明は、仮想計算機環境における資源管理技術に関する。
近年、計算機の仮想化技術が注目されている。その仮想化技術によれば、1台の実計算機上に複数の計算機を仮想的に構築し、複数のOSを独立に稼動させることが可能となる。実計算機(Real Machine)に対して、その仮想的な計算機は、「仮想計算機(VM: Virtual Machine)」と呼ばれている。VMは、実計算機上で動作するソフトウェアである「仮想マシンモニタ(VMM:Virtual Machine Monitor)」によって構築され、また、制御される。実計算機上で動作するOS(ホストOS)に対して、VMMによって提供されるVM上で稼動するOSは、「ゲストOS」と呼ばれる。
同一の実計算機上において、複数のVMはそれぞれ独立したマシンとして動作することを前提として構築される。複数のVMが互いに完全に隔離されるため、基本的には、VM毎にメモリ資源を準備する必要がある。
図1は、従来のVM環境におけるメモリ資源の割り当てを概念的に示している。同一の実計算機上で2つのVM(VM1,VM2)が動作している。VMMは、マッピングテーブルを用いることによって、VMが有する仮想メモリの物理アドレス空間と、実計算機が有する物理メモリの実物理アドレス空間とのマッピングを行う。例えば、VM1物理アドレス空間におけるカーネルテキスト部の先頭アドレス“xxx”は、実物理アドレス空間におけるアドレス“ADD1”にマッピングされている。一方、VM2物理アドレス空間におけるカーネルテキスト部の先頭アドレス“yyy”は、実物理アドレス空間におけるアドレス“ADD2”にマッピングされている。
このように、実物理アドレス空間において、VM1のカーネルテキスト部とVM2のカーネルテキスト部には別々の領域が割り当てられている。VM1とVM2上で稼動しているゲストOSが同じ場合、すなわち、VM1とVM2との間でカーネルテキスト部が同一である場合、そのカーネルテキスト部のメモリイメージが物理メモリ上で重複することになる。言い換えれば、複数のVM上に同一のカーネルテキストがロードされる場合、メモリ資源が有効に活用されない。
そこで、物理メモリ上の同一のメモリイメージを複数のVM間で共有させることが提案されている。図2は、メモリイメージの共有を概念的に示している。図2で示される例の場合、VM2に関するマッピングテーブルにおいて、VM2物理アドレス空間におけるアドレス“yyy”は、実物理アドレス空間におけるアドレス“ADD1”に対応付けられている。その結果、VM2がカーネルテキスト部を参照する際、VMMは、実物理アドレス空間のアドレス“ADD1”から始まる領域にアクセスする。つまり、VM1とVM2は、物理メモリ上のカーネルテキスト部を共有する。これにより、メモリ資源が節約される。
VM間でメモリイメージを共有させるための手法として、次のものが知られている。例えば、予めVMMにOSカーネルやアプリケーションプログラムのテンプレートが複数用意される。ユーザは、どのテンプレートを起動/実行させるかを選択し、同じテンプレートが用いられる場合はVM間でメモリイメージが共有される。
特許文献1に記載された技術によれば、複数のOSに関して、カーネルのロードを含むOSブートが全て完了した後、メモリイメージの共有化処理が行われる。つまり、複数のOSが稼動している最中のあるタイミングで、メモリ資源の共有化処理が行われる。そのために、専用のアプリケーション(共有メモリ化要求アプリケーション)が用意され、その専用アプリケーションが、複数のOSのそれぞれによって実行される。第1のOS上の専用アプリケーションは、メモリ領域をあるエントリで予め登録する。ユーザは、そのエントリと第2のOSを指定し、その第2のOS上の専用アプリケーションに対して共有化を指示する。ユーザの指示に応じて、第2のOS上の専用アプリケーションは、指定されたメモリ領域におけるメモリイメージを共有できるか否かをチェックする。このように、ユーザは、専用アプリケーションを用意し、また、共有にかかわるOS及び対象を指定する必要がある。また、特許文献1には、OSのシャットダウン時の処理は記載されていない。
上述の従来技術によれば、ユーザは、予めVMMにテンプレートを準備したり、共有にかかわるOSや対象を指定したりする必要があった。しかしながら近年、インターネットの普及に伴うウィルスの増加を受けて、OS/アプリケーションプログラムのアップデート頻度が高くなっている。また、OSリモートインストールやSAN(Storage Area Network)ブートの普及に伴い、様々な種別・バージョンのOSが混在するようなシステムも可能となってきている。そのような環境においては、VM間でメモリイメージを共有させるためにユーザが介入する必要があると、ユーザあるいはシステム構築者・管理者の負担が増大する懸念がある。
以下に、[発明を実施するための最良の形態]で使用される番号・符号を用いて、[課題を解決するための手段]を説明する。これらの番号・符号は、[特許請求の範囲]の記載と[発明を実施するための最良の形態]との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。
本発明に係る仮想計算機システムは、物理メモリ(601)とVMM(301)とを備える。VMM(301)は、物理メモリ(601)上にロードされているカーネルイメージの状態を示す管理テーブル(701)を有する。ゲストOSの起動時、VMM(301)は、管理テーブル(701)を参照することによって、そのゲストOSのカーネルイメージと同一のカーネルイメージが物理メモリ(601)上に存在するか否かを判定する。
このように、本発明によれば、現在物理メモリ(601)上にロードされているカーネルイメージの状態を示す管理テーブル(701)が設けられている。VMM(301)は、その管理テーブル(701)を参照することによって、ゲストOSの起動時に、カーネルイメージの共有の可否を自動的に判定することができる。
本発明に係る仮想計算機システムによれば、ゲストOSの起動時にVMMが、カーネルイメージの共有が可能か否かの判定を自動的に行う。ユーザは、予めVMMにテンプレートを準備したり、共有にかかわるOSや対象を指定したりする必要はない。従って、ユーザあるいはシステム構築者・管理者の負担が軽減される。
添付図面を参照して、本発明の実施の形態に係る仮想計算機システム及びその動作方法を説明する。
1.構成
1−1.全体構成
図3は、本実施の形態に係る仮想計算機システムを概略的に示すブロック図である。計算機1は、実計算機であり、ハードウェア資源(H/W)401を備えている。ハードウェア資源401には、物理ディスク501や物理メモリ(RAM)601が含まれる。実計算機1には、仮想マシンモニタ(VMM)301が実装されている。VMM301は、実計算機1上に複数の仮想計算機(VM)を構築し、また、それらの動作を制御することができる。
1−1.全体構成
図3は、本実施の形態に係る仮想計算機システムを概略的に示すブロック図である。計算機1は、実計算機であり、ハードウェア資源(H/W)401を備えている。ハードウェア資源401には、物理ディスク501や物理メモリ(RAM)601が含まれる。実計算機1には、仮想マシンモニタ(VMM)301が実装されている。VMM301は、実計算機1上に複数の仮想計算機(VM)を構築し、また、それらの動作を制御することができる。
例えば図3において、VMM301は、第1仮想計算機201と第2仮想計算機202を提供している。第1仮想計算機201にはゲストOS101がインストールされ、第2仮想計算機202にはゲストOS102がインストールされている。ゲストOS101及びゲストOS102のそれぞれのインストール先は、物理ディスク501上のディスク領域511及び512である。ディスク領域511及び512は、VMM301によって、それぞれの仮想計算機201、202に割り当てられている。
ゲストOS101の起動時、VMM301は、ディスク領域511からゲストOS101のカーネルイメージKNL1を読み出し、そのカーネルイメージKNL1を物理メモリ601にロードする。また、ゲストOS102の起動時、VMM301は、ディスク領域512からゲストOS102のカーネルイメージKNL2を読み出し、そのカーネルイメージKNL2を物理メモリ601にロードする。
1−2.VMM
本発明に係るVMM301は、ゲストOSの起動時に、カーネルイメージ(カーネルテキスト部)の共有が可能か否かの判定を自動的に行う。そのために、本発明に係るVMM301には、次のような機能が実装されている。
本発明に係るVMM301は、ゲストOSの起動時に、カーネルイメージ(カーネルテキスト部)の共有が可能か否かの判定を自動的に行う。そのために、本発明に係るVMM301には、次のような機能が実装されている。
(第1の機能)
ゲストOSのカーネルイメージを物理メモリ601にロードする際、VMM301は、ロード先の実物理アドレス(先頭アドレス)とカーネルイメージのサイズを記録する。
ゲストOSのカーネルイメージを物理メモリ601にロードする際、VMM301は、ロード先の実物理アドレス(先頭アドレス)とカーネルイメージのサイズを記録する。
(第2の機能)
あるVMのカーネルイメージが新規にロードされた際、VMM301は、他のVMのカーネルイメージが既にロードされているかどうか調べる。そして、他のVMのカーネルイメージのロードが既に完了していた場合、VMM301は、新規にロードされたカーネルイメージとロード済のカーネルイメージとの比較を行う。ここで、VMM301は、第1の機能により記録された情報を参照する。
あるVMのカーネルイメージが新規にロードされた際、VMM301は、他のVMのカーネルイメージが既にロードされているかどうか調べる。そして、他のVMのカーネルイメージのロードが既に完了していた場合、VMM301は、新規にロードされたカーネルイメージとロード済のカーネルイメージとの比較を行う。ここで、VMM301は、第1の機能により記録された情報を参照する。
(第3の機能)
新規にロードされたカーネルイメージがロード済のカーネルイメージと同一の場合、VMM301は、新規のカーネルイメージへのメモリマッピングを、ロード済のカーネルイメージへのメモリマッピングに変更する。そして、VMM301は、新規にロードされたカーネルイメージに対応するメモリ領域を解放する。
新規にロードされたカーネルイメージがロード済のカーネルイメージと同一の場合、VMM301は、新規のカーネルイメージへのメモリマッピングを、ロード済のカーネルイメージへのメモリマッピングに変更する。そして、VMM301は、新規にロードされたカーネルイメージに対応するメモリ領域を解放する。
図4は、本実施の形態に係るVMM301を示すブロック図である。VMM301は、OS起動処理部311及びシャットダウン処理部312を有している。OS起動処理部311は、ゲストOSの起動処理を行うモジュールであり、上述の第1〜第3の機能を提供する。シャットダウン処理部312は、ゲストOSのシャットダウン処理を行うモジュールである。各部の詳細な動作に関しては、後述される。
更に、VMM301は、テキスト部管理テーブル701及びマッピングテーブル702を有している。
図5は、テキスト部管理テーブル701の一例を示している。テキスト部管理テーブル701は、複数のエントリから構成されている。各エントリは、物理メモリ601上に展開されている各カーネルイメージ(カーネルテキスト部)の状態を示している。具体的には、各エントリは、ゲストOSのID、カーネルイメージがロードされている実物理アドレス(先頭アドレス)、カーネルイメージのサイズ、及び参照カウンタCNTを有している。
実物理アドレス及びサイズは、上述の第1の機能によって得られる。上述の第2の機能においては、このテキスト部管理テーブル701で示された情報に基づいて、新規のカーネルイメージとロード済のカーネルイメージとの比較が行われる。参照カウンタCNTは、当該カーネルイメージを使用しているゲストOSの数を表しており、参照カウンタCNTが“0”になった時点で、当該カーネルイメージに対応するメモリ領域が解放される。つまり、参照カウンタCNTは、上述の第3の機能において、当該カーネルイメージがロードされているメモリ領域の解放を行っても良いかどうかの判定に用いられるパラメータである。テキスト部管理テーブル701は、上述の第1〜第3の機能を実現するために不可欠である。逆に言えば、テキスト部管理テーブル701のおかげで、VMM301は、上述の第1〜第3の機能を提供することが可能となる。詳細については、後述される。
図6は、マッピングテーブル702の一例を示している。マッピングテーブル702は、VM物理アドレスと実物理アドレスとの変換を実現するためのテーブルである。マッピングテーブル702は、複数のエントリから構成されており、各エントリは、ゲストOSのID、VM物理アドレス、及び実物理アドレスの対応関係を示している。例えば図6において、VM物理アドレス空間上のVM物理アドレス“xxx”は、物理メモリ601上の実物理アドレス“ADD1”にマッピングされている。ゲストOS101がVM物理アドレス“xxx”にアクセスした時、VMM301はマッピングテーブル702を参照し、指定されたVM物理アドレス“xxx”に対応する実物理アドレス“ADD1”を得る。そして、VMM301は、物理メモリ601上の実物理アドレス“ADD1”にアクセスし、対象データを読み出す。VMM301は、読み出されたデータをゲストOS101に返す。
図7は、ゲストOS起動パラメータ801の内容を概念的に示している。このゲストOS起動パラメータ801は、VMM301のOS起動処理部311がゲストOSの起動処理を実行する際に必要な情報である。ゲストOS起動パラメータ801は、起動対象のゲストOSのID810、そのゲストOSに割り当てられているディスク領域811、及びそのゲストOSのカーネルイメージが格納されているファイルパスを示すカーネルファイルパス812を含んでいる。図7に示された例によれば、ゲストOS101にはディスク領域511がマウントされ、そのディスク領域511上のファイル“/boot/kernel.img”がカーネルイメージとして読み出される。
2.処理フロー
次に、本実施の形態に係るVMM301によるゲストOSの起動処理及びシャットダウン処理を、既出の図面及び次のフローチャートを参照して説明する。具体的な動作例に関しては、次の第3節において説明される。
次に、本実施の形態に係るVMM301によるゲストOSの起動処理及びシャットダウン処理を、既出の図面及び次のフローチャートを参照して説明する。具体的な動作例に関しては、次の第3節において説明される。
2−1.ゲストOSの起動(ブート)処理
図8は、本実施の形態におけるゲストOSの起動処理を示すフローチャートである。まず、ゲストOS起動パラメータ801(図7参照)が、VMM301のOS起動処理部311に入力される(ステップS10)。このゲストOS起動パラメータ801には、起動対象のゲストOSのID810、ディスク領域811、及びカーネルファイルパス812が示されている。ID810の入力に応答して、OS起動処理部311は、テキスト管理テーブル701を参照する(ステップS20)。そして、OS起動処理部311は、そのID810と一致するエントリをテキスト管理テーブル701から検索する(ステップS30)。
図8は、本実施の形態におけるゲストOSの起動処理を示すフローチャートである。まず、ゲストOS起動パラメータ801(図7参照)が、VMM301のOS起動処理部311に入力される(ステップS10)。このゲストOS起動パラメータ801には、起動対象のゲストOSのID810、ディスク領域811、及びカーネルファイルパス812が示されている。ID810の入力に応答して、OS起動処理部311は、テキスト管理テーブル701を参照する(ステップS20)。そして、OS起動処理部311は、そのID810と一致するエントリをテキスト管理テーブル701から検索する(ステップS30)。
もし、ID810と一致するエントリがテキスト管理テーブル701に含まれていれば(ステップS30;Yes)、それは、当該ゲストOSのカーネルイメージが物理メモリ601上に既に存在していることを意味する。この場合、通常のゲストOS起動処理は省略され、特別な処理が実行される(ステップS40)。一方、ID810と一致するエントリがテキスト管理テーブル701に含まれていない場合(ステップS30;No)、当該ゲストOSのカーネルイメージは物理メモリ601上に存在していない。従って、通常のゲストOS起動処理が実行される(ステップS50,ステップS60)。ゲストOSの起動処理が完了すると、制御は、VMM301からゲストOSカーネルに移行する(ステップS70)。
ステップS40:
図9は、ステップS40の詳細を示すフローチャートである。この時、ID810と一致するエントリがテキスト管理テーブル701に含まれている。よって、OS起動処理部311は、その一致エントリを参照することによって、対応するカーネルイメージがロードされている実物理アドレス(先頭アドレス)と、そのカーネルイメージのサイズを取得することができる(ステップS41)。
図9は、ステップS40の詳細を示すフローチャートである。この時、ID810と一致するエントリがテキスト管理テーブル701に含まれている。よって、OS起動処理部311は、その一致エントリを参照することによって、対応するカーネルイメージがロードされている実物理アドレス(先頭アドレス)と、そのカーネルイメージのサイズを取得することができる(ステップS41)。
次に、OS起動処理部311は、得られたサイズに基づいて、VM物理アドレス空間にメモリ領域を定義する(ステップS42)。これにより、実物理アドレスに対応するVM物理アドレス(先頭アドレス)が得られる。OS起動処理部311は、得られた実物理アドレスとVM物理アドレスとの対応関係を示すエントリを、マッピングテーブル702に追加する(ステップS43)。追加されるエントリのIDは、ゲストOS起動パラメータ801で指定されるID810である。これにより、マッピングの設定が完了する。
更に、OS起動処理部311は、テキスト管理テーブル701中の一致エントリの参照カウンタCNTをインクリメントする(ステップS44)。尚、インクリメントとは、参照カウントCNTの値に1を加える操作である。その後、処理はステップS70に移る。
ステップS50:
図10は、ステップS50の詳細を示すフローチャートである。今、ゲストOS起動パラメータ801が、OS起動処理部311に入力されている。そのゲストOS起動パラメータ801には、当該ゲストOSに割り当てられているディスク領域811、及びカーネルファイルパス812が含まれている。
図10は、ステップS50の詳細を示すフローチャートである。今、ゲストOS起動パラメータ801が、OS起動処理部311に入力されている。そのゲストOS起動パラメータ801には、当該ゲストOSに割り当てられているディスク領域811、及びカーネルファイルパス812が含まれている。
OS起動処理部311は、パラメータ801中のディスク領域811の指定に基づいて、物理ディスク501上のファイルシステムを認識することができる(ステップS51)。例えば、OS起動処理部311は、物理ディスク501上の指定されたディスク領域511のファイルシステムを認識する。次に、OS起動処理部311は、指定されたカーネルファイルパス812に基づいて、当該ゲストOSのカーネルイメージを読み出す(ステップS52)。このようにして、OS起動処理部311は、カーネルイメージとそのサイズを取得することができる。
次に、OS起動処理部311は、得られたカーネルイメージのサイズに基づいて、実物理アドレス空間及びVM物理アドレス空間にメモリ領域を確保する(ステップS53)。確保された(割り当てられた)メモリ領域の先頭アドレスが、それぞれ「実物理アドレス」及び「VM物理アドレス」として用いられる。そして、OS起動処理部311は、カーネルイメージを物理メモリ601上に展開する(ステップS54)。つまり、OS起動処理部311は、物理メモリ601上の割り当てられたメモリ領域に、カーネルイメージをロードする。
また、OS起動処理部311は、実物理アドレスとVM物理アドレスとの対応関係を示すエントリを、マッピングテーブル702に追加する(ステップS55)。追加されるエントリのIDは、ゲストOS起動パラメータ801で指定されるID810である。これにより、マッピングの設定が完了する。
更に、OS起動処理部311は、当該ゲストOSに対応するエントリを、テキスト部管理テーブル701に作成する(ステップS56)。そのエントリのIDは、ゲストOS起動パラメータ801で指定されるID810である。実物理アドレス及びサイズとしては、既出のステップで得られた値が書き込まれる。当該カーネルイメージを使用しているゲストOSの数を表す参照カウンタCNTは、“1”に設定される。その後、処理は、ステップS60に進む。
ステップS60:
図11は、ステップS60の詳細を示すフローチャートである。まず、OS起動処理部311は、テキスト部管理テーブル701を参照する。テキスト部管理テーブル701において、起動中のゲストOSに対応するエントリ、すなわちID810で指定されているエントリは「自エントリ」と参照される。一方、自エントリ以外のエントリは「他エントリ」と参照される。テキスト部管理テーブル701に他エントリが無い場合(ステップS61;No)、処理はステップS70に進む。一方、テキスト部管理テーブル701に他エントリが有る場合(ステップS61;Yes)、OS起動処理部311は、自エントリと他エントリとの比較を行う(ステップS62)。
図11は、ステップS60の詳細を示すフローチャートである。まず、OS起動処理部311は、テキスト部管理テーブル701を参照する。テキスト部管理テーブル701において、起動中のゲストOSに対応するエントリ、すなわちID810で指定されているエントリは「自エントリ」と参照される。一方、自エントリ以外のエントリは「他エントリ」と参照される。テキスト部管理テーブル701に他エントリが無い場合(ステップS61;No)、処理はステップS70に進む。一方、テキスト部管理テーブル701に他エントリが有る場合(ステップS61;Yes)、OS起動処理部311は、自エントリと他エントリとの比較を行う(ステップS62)。
まず、OS起動処理部311は、自エントリで示されるサイズと他エントリで示されるサイズとの比較を行う(ステップS63)。サイズが一致しない場合(ステップS63;No)、処理はステップS61に戻り、更に他のエントリに関して同じ処理が行われる。
一方、サイズが一致する場合(ステップS63;Yes)、OS起動処理部311は、自エントリに対応するカーネルイメージと他エントリに対応するカーネルイメージとの比較を行う(ステップS64)。その比較においては、エントリに示されている実物理アドレス(カーネルイメージの開始アドレス)とサイズが用いられる。すなわち、OS起動処理部311は、物理メモリ601上の開始アドレスからサイズ分のメモリイメージに関して比較を行うことができる。カーネルイメージが一致しない場合(ステップS65;No)、処理はステップS61に戻り、更に他のエントリに関して同じ処理が行われる。
カーネルイメージが一致する場合(ステップS65;Yes)、カーネルイメージの共有が可能である。従って、OS起動処理部311は、自エントリに関するマッピングを変更する(ステップS66)。具体的には、OS起動処理部311は、マッピングテーブル702中の自エントリの実物理アドレスを、テキスト部管理テーブル701中の他エントリの実物理アドレスに置き換える。これにより、当該ゲストOSがカーネルイメージにアクセスする際、他エントリに対応したカーネルイメージに対してマッピングが行われるようになる。すなわち、メモリ領域(カーネルイメージ)の共有が自動的に実現される。
また、OS起動処理部311は、テキスト部管理テーブル701中の他エントリの参照カウンタCNTをインクリメントする(ステップS67)。同時に、OS起動処理部311は、テキスト部管理テーブル701中の自エントリの参照カウンタCNTをデクリメントする(ステップS68)。尚、デクリメントとは、参照カウントCNTの値から1を引く操作である。上述のステップS56において、自エントリの参照カウンタCNTは、“1”に設定されていた。従って、このステップS68において、自エントリの参照カウンタCNTは“0”になる。参照カウンタCNTが“0”になることは、対応するカーネルイメージを使用しているゲストOSが無くなったことを意味する。従って、当該エントリは削除され、対応する実メモリ領域は解放される(ステップS69)。これにより、物理メモリ601のメモリ資源が節約される。
2−2.シャットダウン処理
図12は、本実施の形態におけるゲストOSのシャットダウン処理を示すフローチャートである。まず、VMM301のシャットダウン処理部312は、ゲストOSの動作を停止させる(ステップS80)。ゲストOSの停止直後、シャットダウン処理部312は、そのゲストOSが動作していたVMの解放処理を行う(ステップS90)。
図12は、本実施の形態におけるゲストOSのシャットダウン処理を示すフローチャートである。まず、VMM301のシャットダウン処理部312は、ゲストOSの動作を停止させる(ステップS80)。ゲストOSの停止直後、シャットダウン処理部312は、そのゲストOSが動作していたVMの解放処理を行う(ステップS90)。
まず、シャットダウン処理部312は、マッピングテーブル702を参照し、停止したゲストOSのIDに基づいて当該ゲストOSに対応するエントリを検索する。そして、シャットダウン処理部312は、検索されたエントリに示されている実物理アドレスを取得する(ステップS91)。次に、シャットダウン処理部312は、テキスト部管理テーブル701を参照し、ステップS91で得られた実物理アドレスが格納されているエントリを検索する(ステップS92)。その実物理アドレスが格納されているエントリは、一意に定まる。
次に、シャットダウン処理部312は、見つかったエントリの参照カウンタCNTをデクリメントする(ステップS93)。結果として参照カウンタCNTが“0”になった場合(ステップS94;Yes)、上記実物理アドレスにロードされているカーネルイメージを使用しているゲストOSが無くなったことを意味する。従って、シャットダウン処理部312は、当該エントリを削除し(ステップS95)、対応する実メモリ領域を解放する(ステップS96)。一方、参照カウンタCNTが“0”にならない場合(ステップS94;No)、当該カーネルイメージはまだ必要である。従って、エントリの削除や実メモリ領域の解放は行われない。
また、シャットダウン処理部312は、マッピングテーブル702の変更を行う。具体的には、シャットダウン処理部312は、マッピングテーブル702から、停止したゲストOSに対応するエントリを削除する(ステップS97)。このようにして、VMが解放される。
3.動作例
次に、既出のフローチャート及び図13〜図20を参照して、本実施の形態に係る仮想計算機システムの動作例を説明する。図13〜図20は、図3に対応する図であり、重複する説明は省略される。
次に、既出のフローチャート及び図13〜図20を参照して、本実施の形態に係る仮想計算機システムの動作例を説明する。図13〜図20は、図3に対応する図であり、重複する説明は省略される。
3−1.第1の例
図13は、以下に説明される動作例の初期状態を示している。まず、ユーザは、ゲストOS101の起動を要求する。その要求に応答して、VMM301には、ゲストOS起動パラメータ801が入力される(ステップS10)。そのゲストOS起動パラメータ801は、「ID:OS101,ディスク領域:511,カーネルファイルパス:所定のパス」を示している。VMM301は、テキスト部管理テーブル701を参照する(ステップS20)。現時点で、「ID:OS101」と一致するエントリは、テキスト管理テーブル701に含まれていない(ステップS30;No)。よって、処理はステップS50に進む。
図13は、以下に説明される動作例の初期状態を示している。まず、ユーザは、ゲストOS101の起動を要求する。その要求に応答して、VMM301には、ゲストOS起動パラメータ801が入力される(ステップS10)。そのゲストOS起動パラメータ801は、「ID:OS101,ディスク領域:511,カーネルファイルパス:所定のパス」を示している。VMM301は、テキスト部管理テーブル701を参照する(ステップS20)。現時点で、「ID:OS101」と一致するエントリは、テキスト管理テーブル701に含まれていない(ステップS30;No)。よって、処理はステップS50に進む。
図14は、ステップS50における状態を示している。VMM301は、指定されたディスク領域511上の指定されたカーネルファイルパスにアクセスし、カーネルイメージKNL1を取得する(ステップS51,S52)。そのカーネルイメージKNL1のサイズは、“SIZE1”で表される。次に、そのカーネルイメージKNL1に応じたメモリ領域が、ゲストOS101に割り当てられる(ステップS53)。例えば物理メモリ601において、実物理アドレス“ADD1”から始まるメモリ領域611が確保される。VM物理アドレス空間において、アドレス“xxx”から始まるメモリ領域が確保される。
次に、VMM301は、カーネルイメージKNL1を、物理メモリ601上の割り当てられたメモリ領域611にロードする(ステップS54)。また、VMM301は、マッピングテーブル702に、エントリ「ID:OS101,VM物理アドレス:xxx,実物理アドレス:ADD1」を追加する(ステップS55)。更に、VMM301は、テキスト部管理テーブル701に、新たなエントリ「ID:OS101,アドレス:ADD1,サイズ:SIZE1,参照カウンタ:1」を作成する(ステップS56)。
次に、処理はステップS60に進む。VMM301は、テキスト部管理テーブル701を参照する。現時点で、テキスト部管理テーブル701に他エントリは存在しない(ステップS61;No)。よって、処理はステップS70に進み、ゲストOS101の起動処理が完了する。
次に、ユーザは、ゲストOS102の起動を要求する。入力されるゲストOS起動パラメータ801は、「ID:OS102,ディスク領域:512,カーネルファイルパス:所定のパス」を示している(ステップS10)。現時点で、「ID:OS102」と一致するエントリは、テキスト管理テーブル701に含まれていない(ステップS30;No)。よって、処理はステップS50に進む。
図15は、ステップS50における状態を示している。VMM301は、ゲストOS101の場合と同様の処理を行う。ディスク領域512からカーネルイメージKNL2(サイズ=SIZE2)が得られる。物理メモリ601において、実物理アドレス“ADD2”から始まるメモリ領域612が確保される。VM物理アドレス空間において、アドレス“yyy”から始まるメモリ領域が確保される。カーネルイメージKNL2は、メモリ領域612にロードされる。マッピングテーブル702に、エントリ「ID:OS102,VM物理アドレス:yyy,実物理アドレス:ADD2」が追加される。更に、テキスト部管理テーブル701に、新たなエントリ「ID:OS102,アドレス:ADD2,サイズ:SIZE2,参照カウンタ:1」が作成される。
その後、処理はステップS60に進む。VMM301は、テキスト部管理テーブル701を参照する。今回は、テキスト部管理テーブル701に他エントリ(ID:OS101)が存在する(ステップS61;Yes)。よって、VMM301は、自エントリ(ID:OS102)と他エントリ(ID:OS101)との比較を行う(ステップS62)。サイズSIZE1とサイズSIZE2は一致するとする(ステップS63;Yes)。カーネルイメージKNL1とカーネルイメージKNL2は一致するとする(ステップS65;Yes)。
よって、図16に示されるように、VMM301は、マッピングテーブル702中の自エントリ(ID:OS102)の実物理アドレスを、“ADD2”から“ADD1”に変更する(ステップS66)。これにより、ゲストOS101及び102によるメモリ領域611の共有が自動的に実現される。
更に、VMM301は、テキスト部管理テーブル701中の参照カウンタCNTを変更する。具体的には、VMM301は、他エントリ(ID:OS101)の参照カウンタCNTをインクリメントする(ステップS67)。その結果、他エントリの参照カウンタCNTは“2”となる。これは、2つのゲストOS(101、102)がアドレスADD1に対応するカーネルイメージKNL1を使用していることを意味する。一方、VMM301は、自エントリ(ID:OS102)の参照カウンタCNTをデクリメントする(ステップS68)。その結果、自エントリの参照カウンタCNTは“0”になる。これは、アドレスADD2に対応するカーネルイメージKNL2を使用しているゲストOSが無くなったことを意味する。従って、自エントリは削除され、対応するメモリ領域612は解放される(ステップS69)。
そして、処理はステップS70に進み、ゲストOS102の起動処理が完了する。
次に、図16に示された状態で、ユーザは、ゲストOS102のシャットダウンを指示する。その指示に応答して、VMM301は、ゲストOS102の動作を停止させる(ステップS80)。更に、VMM301は、マッピングテーブル702から当該ゲストOS102に対応するエントリ「ID:OS102,VM物理アドレス:yyy,実物理アドレス:ADD1」を見つけ出す(ステップS91)。
次に、VMM301は、そのエントリに示される実物理アドレス“ADD1”を用いて、テキスト部管理テーブル701を検索する(ステップS92)。その結果、エントリ「ID:OS101,アドレス:ADD1,サイズ:SIZE1,参照カウンタ:2」が見つけ出される。よって、VMM301は、そのエントリの参照カウンタCNTをデクリメントする(ステップS93)。その結果、図17に示されるように、参照カウンタCNTが、“2”から“1”に変わる(ステップS94;No)。この場合、メモリ領域の解放は行われない。また、VMM301は、マッピングテーブル702から、停止したゲストOS102に対応するエントリ「ID:OS102,VM物理アドレス:yyy,実物理アドレス:ADD1」を削除する(ステップS97)。
次に、図17に示された状態で、ユーザは、ゲストOS101のシャットダウンを指示する。その指示に応答して、VMM301は、ゲストOS101の動作を停止させる(ステップS80)。更に、VMM301は、マッピングテーブル702から当該ゲストOS101に対応するエントリ「ID:OS101,VM物理アドレス:xxx,実物理アドレス:ADD1」を見つけ出す(ステップS91)。
次に、VMM301は、そのエントリに示される実物理アドレス“ADD1”を用いて、テキスト部管理テーブル701を検索する(ステップS92)。その結果、エントリ「ID:OS101,アドレス:ADD1,サイズ:SIZE1,参照カウンタ:1」が見つけ出される。よって、VMM301は、そのエントリの参照カウンタCNTをデクリメントする(ステップS93)。その結果、図18に示されるように、参照カウンタCNTが、“1”から“0”に変わる(ステップS94;Yes)。これは、アドレスADD1に対応するカーネルイメージKNL1を使用しているゲストOSが無くなったことを意味する。従って、VMM301は、当該エントリを削除し(ステップS95)、対応するメモリ領域611を解放する(ステップS96)。また、VMM301は、マッピングテーブル702から、停止したゲストOS101に対応するエントリ「ID:OS101,VM物理アドレス:xxx,実物理アドレス:ADD1」を削除する(ステップS97)。
3−2.第2の例
第1の例では、図16に示された状態から、ゲストOS102が最初にシャットダウンされた。第2の例では、図16に示された状態から、ゲストOS101が最初にシャットダウンされる場合を考える。
第1の例では、図16に示された状態から、ゲストOS102が最初にシャットダウンされた。第2の例では、図16に示された状態から、ゲストOS101が最初にシャットダウンされる場合を考える。
図16に示された状態で、ユーザは、ゲストOS101のシャットダウンを指示する。その指示に応答して、VMM301は、ゲストOS101の動作を停止させる(ステップS80)。更に、VMM301は、マッピングテーブル702から当該ゲストOS101に対応するエントリ「ID:OS101,VM物理アドレス:xxx,実物理アドレス:ADD1」を見つけ出す(ステップS91)。
次に、VMM301は、そのエントリに示される実物理アドレス“ADD1”を用いて、テキスト部管理テーブル701を検索する(ステップS92)。その結果、エントリ「ID:OS101,アドレス:ADD1,サイズ:SIZE1,参照カウンタ:2」が見つけ出される。よって、VMM301は、そのエントリの参照カウンタCNTをデクリメントする(ステップS93)。その結果、図19に示されるように、参照カウンタCNTが、“2”から“1”に変わる(ステップS94;No)。これは、1つのゲストOS(102)がまだカーネルイメージKNL1を参照していることを意味する。従って、ゲストOS101は停止したが、メモリ領域611の解放は行われない。VMM301は、マッピングテーブル702から、エントリ「ID:OS101,VM物理アドレス:xxx,実物理アドレス:ADD1」を削除する(ステップS97)。
次に、図19に示された状態で、ゲストOS101の起動が再度要求された場合を考える。入力されるゲストOS起動パラメータ801は、「ID:OS101,ディスク領域:511,カーネルファイルパス:所定のパス」を示している。VMM301は、テキスト部管理テーブル701を参照する(ステップS20)。今回は、ゲストOS101に対応するエントリ「ID:OS101,アドレス:ADD1,サイズ:SIZE1,参照カウンタ:1」が既に存在している(ステップS30;No)。すなわち、ゲストOS101のカーネルイメージKNL1が、物理メモリ601上に既に存在している。よって、処理はステップS40に進む。
VMM301は、当該エントリを参照して、実物理アドレス“ADD1”とサイズ“SIZE1”を取得する(ステップS41)。次に、VMM301は、サイズ“SIZE1”に基づいて、VM物理アドレス空間にメモリ領域を定義する(ステップS42)。次に、VMM301は、図20に示されるように、エントリ「ID:OS101,VM物理アドレス:xxx,実物理アドレス:ADD1」をマッピングテーブル702に追加する(ステップS43)。これにより、マッピングの設定が完了する。
更に、VMM301は、テキスト管理テーブル701中の当該エントリの参照カウンタCNTをインクリメントする(ステップS44)。その結果、参照カウンタCNTは“1”から“2”に変わる。これは、2つのゲストOS(101、102)がアドレスADD1に対応するカーネルイメージKNL1を共有していることを意味する。その後、処理はステップS70に進み、ゲストOS101の起動処理が完了する。
今回のゲストOS101の起動処理において、カーネルイメージKNL1のロード処理が省略されていることに着目されるべきである。これは、ゲストOSの起動処理時間の短縮を意味する。ロード処理が省略される理由は、ゲストOS101の起動時にカーネルイメージKNL1が既に物理メモリ601上にロードされているからである。VMMはそのことを、ゲストOSの起動時に、テキスト部管理テーブル701を参照することによって知ることができる。逆に言えば、物理メモリ601上の現在のカーネルイメージの状態を示すテキスト部管理テーブル701が設けられているからこそ、ゲストOSの起動時にその起動処理時間を短縮することが可能となる。
4.効果
本発明によれば、複数のVM間でカーネルイメージ(カーネルテキスト部)が同一である場合、カーネルイメージがロードされる実メモリ領域の共有が行われる。つまり、複数のVMが、物理メモリ上のカーネルイメージを共有する。その結果、メモリ資源が節約され、有効に活用される。またそれによって、プロセッサのキャッシュメモリも有効利用されるようになる。つまり、キャッシュメモリの利用効率が向上し、キャッシュ効果が増大する。従って、計算機システムの処理速度が向上する。
本発明によれば、複数のVM間でカーネルイメージ(カーネルテキスト部)が同一である場合、カーネルイメージがロードされる実メモリ領域の共有が行われる。つまり、複数のVMが、物理メモリ上のカーネルイメージを共有する。その結果、メモリ資源が節約され、有効に活用される。またそれによって、プロセッサのキャッシュメモリも有効利用されるようになる。つまり、キャッシュメモリの利用効率が向上し、キャッシュ効果が増大する。従って、計算機システムの処理速度が向上する。
また、本発明によれば、ゲストOSの起動時にVMMが、カーネルイメージの共有が可能か否かの判定を自動的に行う。ユーザは、カーネルイメージの共有を実現するために、予めVMMにテンプレートを準備したり、共有にかかわるOSや対象を指定したりする必要はない。従って、ユーザあるいはシステム構築者・管理者の負担が軽減される。
更に本発明によれば、物理メモリ601上に現在ロードされているカーネルイメージの状態を示すテキスト部管理テーブル701が設けられている。VMMは、このテキスト部管理テーブル701を利用することにより、カーネルイメージの共有の可否を容易に判定することができる。また、VMMは、このテキスト部管理テーブル701を参照することによって、ゲストOSの起動時に当該ゲストOSに対応するカーネルイメージが既に物理メモリ601上にロードされているかどうか調べることができる。もし、当該ゲストOSに対応するカーネルイメージが既に存在していれば、そのカーネルイメージのロード処理を省くことができる。従って、ゲストOSの起動処理時間を短縮できるという効果が得られる。
1 計算機
101,102 ゲストOS
201,202 仮想マシン(VM)
301 VMM
311 OS起動処理部
312 シャットダウン処理部
401 ハードウェア資源
501 物理ディスク
511,512 ディスク領域
601 物理メモリ
611,612 メモリ領域
701 テキスト部管理テーブル
702 マッピングテーブル
801 ゲストOS起動パラメータ
810 ID
811 ディスク領域
812 カーネルファイルパス
CNT 参照カウンタ
KNL1,KNL2 カーネルイメージ
101,102 ゲストOS
201,202 仮想マシン(VM)
301 VMM
311 OS起動処理部
312 シャットダウン処理部
401 ハードウェア資源
501 物理ディスク
511,512 ディスク領域
601 物理メモリ
611,612 メモリ領域
701 テキスト部管理テーブル
702 マッピングテーブル
801 ゲストOS起動パラメータ
810 ID
811 ディスク領域
812 カーネルファイルパス
CNT 参照カウンタ
KNL1,KNL2 カーネルイメージ
Claims (21)
- 物理メモリと、
前記物理メモリ上にロードされているカーネルイメージの状態を示す管理テーブルを有するVMM(Virtual Machine Monitor)と
を備え、
あるゲストOSの起動時、前記VMMは、前記管理テーブルを参照することによって、前記あるゲストOSのカーネルイメージと同一のカーネルイメージが前記物理メモリ上に存在するか否かを判定する
仮想計算機システム。 - 請求項1に記載の仮想計算機システムであって、
前記管理テーブルの各エントリは、前記ロードされているカーネルイメージの先頭アドレスとサイズを示す
仮想計算機システム。 - 請求項1又は2に記載の仮想計算機システムであって、
第1ゲストOSの起動時、前記VMMは、前記第1ゲストOSのカーネルイメージである第1カーネルイメージを前記物理メモリ上の第1メモリ領域にロードし、且つ、前記第1メモリ領域の先頭アドレスと前記第1カーネルイメージのサイズを示す第1エントリを前記管理テーブルに追加する
仮想計算機システム。 - 請求項3に記載の仮想計算機システムであって、
前記第1ゲストOSの起動時、前記VMMは、前記第1エントリが既に前記管理テーブルに存在しているか否かを判定し、
前記第1エントリが既に存在する場合、前記VMMは、前記第1カーネルイメージを前記物理メモリ上にロードすることなく、前記第1エントリに基づいて前記第1ゲストOSを起動する
仮想計算機システム。 - 請求項3に記載の仮想計算機システムであって、
第2ゲストOSの起動時、前記VMMは、前記第2ゲストOSのカーネルイメージである第2カーネルイメージを前記物理メモリ上の第2メモリ領域にロードし、且つ、前記第2メモリ領域の先頭アドレスと前記第2カーネルイメージのサイズを示す第2エントリを前記管理テーブルに追加し、
前記VMMは、前記第1エントリと前記第2エントリを比較することによって、前記第1カーネルイメージと前記第2カーネルイメージが同一か否かを判定する
仮想計算機システム。 - 請求項5に記載の仮想計算機システムであって、
前記第1カーネルイメージと前記第2カーネルイメージが同一である場合、
前記VMMは、前記第2カーネルイメージへのマッピングを、前記第1カーネルイメージへのマッピングに変更する
仮想計算機システム。 - 請求項6に記載の仮想計算機システムであって、
前記VMMは、前記第2エントリを前記管理テーブルから削除し、また、前記第2メモリ領域を解放する
仮想計算機システム。 - 請求項3乃至7のいずれかに記載の仮想計算機システムであって、
前記第1カーネルイメージを使用しているゲストOSのシャットダウン時、前記VMMは、前記第1カーネルイメージを使用中のゲストOSが他になければ、前記第1エントリを前記管理テーブルから削除し、また、前記第1メモリ領域を解放する
仮想計算機システム。 - 請求項2乃至8のいずれかに記載の仮想計算機システムであって、
前記管理テーブルの各エントリは、更に、前記ロードされているカーネルイメージを使用しているゲストOSの数を示し、
前記数がゼロになった場合、前記VMMは、当該エントリの前記先頭アドレス及び前記サイズで規定されるメモリ領域を解放し、また、当該エントリを前記管理テーブルから削除する
仮想計算機システム。 - 請求項6又は7に記載の仮想計算機システムであって、
前記管理テーブルの各エントリは、更に、前記ロードされているカーネルイメージを使用しているゲストOSの数を示し、
前記前記第2カーネルイメージへのマッピングが、前記第1カーネルイメージへのマッピングに変更された際、前記VMMは、前記第1エントリの前記数をインクリメントし、前記第2エントリの前記数をデクリメントする
仮想計算機システム。 - 請求項10に記載の仮想計算機システムであって、
前記第1カーネルイメージを使用しているゲストOSのシャットダウン時、前記VMMは、前記第1エントリの前記数をデクリメントする
仮想計算機システム。 - 請求項10又は11に記載の仮想計算機システムであって、
前記数がゼロになった場合、前記VMMは、当該エントリの前記先頭アドレス及び前記サイズで規定されるメモリ領域を解放し、また、当該エントリを前記管理テーブルから削除する
仮想計算機システム。 - 物理メモリを有する実計算機上に仮想計算機を構築するVMM(Virtual Machine Monitor)が搭載された仮想計算機システムの動作方法であって、
(A)前記物理メモリ上にロードされているカーネルイメージの状態を示す管理テーブルを提供するステップと、
(B)あるゲストOSの起動時、前記管理テーブルを参照することによって、前記あるゲストOSのカーネルイメージと同一のカーネルイメージが前記物理メモリ上に存在するか否かを判定するステップと
を有する
仮想計算機システムの動作方法。 - 請求項13に記載の仮想計算機システムの動作方法であって、
前記管理テーブルの各エントリは、前記ロードされているカーネルイメージの先頭アドレスとサイズを示す
仮想計算機システムの動作方法。 - 請求項13又は14に記載の仮想計算機システムの動作方法であって、
前記(B)ステップは、
(B1)第1ゲストOSの起動時、前記第1ゲストOSのカーネルイメージである第1カーネルイメージを前記物理メモリ上の第1メモリ領域にロードするステップと、
(B2)前記第1メモリ領域の先頭アドレスと前記第1カーネルイメージのサイズを示す第1エントリを前記管理テーブルに追加するステップと
を含む
仮想計算機システムの動作方法。 - 請求項15に記載の仮想計算機システムの動作方法であって、
前記(B)ステップにおいて、前記第1エントリが既に前記管理テーブルに存在している場合、前記第1カーネルイメージを前記物理メモリ上にロードすることなく、前記第1ゲストOSの起動が行われる
仮想計算機システムの動作方法。 - 請求項15に記載の仮想計算機システムの動作方法であって、
前記(B)ステップは、
(B3)第2ゲストOSの起動時、前記第2ゲストOSのカーネルイメージである第2カーネルイメージを前記物理メモリ上の第2メモリ領域にロードするステップと、
(B4)前記第2メモリ領域の先頭アドレスと前記第2カーネルイメージのサイズを示す第2エントリを前記管理テーブルに追加するステップと
(B5)前記第1エントリと前記第2エントリを比較することによって、前記第1カーネルイメージと前記第2カーネルイメージが同一か否かを判定するステップと
を更に含む
仮想計算機システムの動作方法。 - 請求項17に記載の仮想計算機システムの動作方法であって、
更に、
(C)前記(B5)ステップにおいて前記第1カーネルイメージと前記第2カーネルイメージが同一である場合、前記第2カーネルイメージへのマッピングを、前記第1カーネルイメージへのマッピングに変更するステップ
を有する
仮想計算機システムの動作方法。 - 請求項18に記載の仮想計算機システムの動作方法であって、
更に、
(D)前記第2エントリを前記管理テーブルから削除し、また、前記第2メモリ領域を解放するステップ
を有する
仮想計算機システムの動作方法。 - 請求項15乃至19のいずれかに記載の仮想計算機システムの動作方法であって、
更に、
(E)前記第1カーネルイメージを使用しているゲストOSをシャットダウンするステップと、
(F)前記第1カーネルイメージを使用中のゲストOSが他になければ、前記第1エントリを前記管理テーブルから削除し、また、前記第1メモリ領域を解放するステップと
を有する
仮想計算機システムの動作方法。 - 仮想計算機環境を提供するコンピュータで実行されるプログラムであって、
(A)前記コンピュータの物理メモリ上にロードされているカーネルイメージの状態を示す管理テーブルを提供する機能と、
(B)あるゲストOSの起動時、前記管理テーブルを参照することによって、前記あるゲストOSのカーネルイメージと同一のカーネルイメージが前記物理メモリ上に存在するか否かを判定する機能と
を前記コンピュータに実現させるための
プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006202870A JP2008033392A (ja) | 2006-07-26 | 2006-07-26 | 仮想計算機システム及びその動作方法 |
US11/878,576 US7797507B2 (en) | 2006-07-26 | 2007-07-25 | Virtual machine system and operating method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006202870A JP2008033392A (ja) | 2006-07-26 | 2006-07-26 | 仮想計算機システム及びその動作方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008033392A true JP2008033392A (ja) | 2008-02-14 |
Family
ID=38987731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006202870A Pending JP2008033392A (ja) | 2006-07-26 | 2006-07-26 | 仮想計算機システム及びその動作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7797507B2 (ja) |
JP (1) | JP2008033392A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077144A (ja) * | 2006-09-19 | 2008-04-03 | Ricoh Co Ltd | 仮想化システム、メモリ管理方法及び制御プログラム |
JP2010231684A (ja) * | 2009-03-30 | 2010-10-14 | Hitachi Ltd | 仮想計算機を有する物理計算機 |
WO2012111113A1 (ja) * | 2011-02-16 | 2012-08-23 | 富士通株式会社 | メモリ管理プログラム、メモリ管理方法、情報処理装置、及びメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体 |
JP2012527704A (ja) * | 2009-05-19 | 2012-11-08 | ヴイエムウェア インク | 仮想マシンシステムにおけるショートカット入出力 |
JP2014235644A (ja) * | 2013-06-04 | 2014-12-15 | 日本電信電話株式会社 | リソース提供装置、リソース提供方法、およびリソース提供システム |
CN110147266A (zh) * | 2019-04-29 | 2019-08-20 | 腾讯科技(深圳)有限公司 | 虚拟机启动方法和装置、存储介质及电子装置 |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8619771B2 (en) | 2009-09-30 | 2013-12-31 | Vmware, Inc. | Private allocated networks over shared communications infrastructure |
US8838756B2 (en) * | 2009-07-27 | 2014-09-16 | Vmware, Inc. | Management and implementation of enclosed local networks in a virtual lab |
US8924524B2 (en) * | 2009-07-27 | 2014-12-30 | Vmware, Inc. | Automated network configuration of virtual machines in a virtual lab data environment |
US8892706B1 (en) | 2010-06-21 | 2014-11-18 | Vmware, Inc. | Private ethernet overlay networks over a shared ethernet in a virtual environment |
US8205194B2 (en) * | 2007-06-29 | 2012-06-19 | Microsoft Corporation | Updating offline virtual machines or VM images |
US8307405B2 (en) * | 2008-04-28 | 2012-11-06 | International Business Machines Corporation | Methods, hardware products, and computer program products for implementing zero-trust policy in storage reports |
US8336099B2 (en) * | 2008-05-08 | 2012-12-18 | International Business Machines Corporation | Methods, hardware products, and computer program products for implementing introspection data comparison utilizing hypervisor guest introspection data |
US8195774B2 (en) | 2008-05-23 | 2012-06-05 | Vmware, Inc. | Distributed virtual switch for virtualized computer systems |
US8676809B1 (en) * | 2008-06-30 | 2014-03-18 | Symantec Corporation | Method and apparatus for mapping virtual machine incremental images |
US8819707B2 (en) * | 2009-06-18 | 2014-08-26 | Citrix Systems, Inc. | Methods and systems for importing a device driver into a guest computing environment |
KR101627273B1 (ko) * | 2009-06-23 | 2016-06-07 | 삼성전자주식회사 | 방송수신장치 및 그의 메모리 관리방법 |
CN102103515B (zh) * | 2009-12-22 | 2014-07-02 | 联想(北京)有限公司 | 一种内存管理方法、虚拟机监视器及计算机 |
CN101814038B (zh) * | 2010-03-23 | 2012-10-03 | 杭州顺网科技股份有限公司 | 一种加快计算机启动速度的方法 |
US8448169B2 (en) | 2010-07-12 | 2013-05-21 | International Business Machines Corporation | Managing unique electronic identification for kernel extensions in isolated virtual space |
US8527989B2 (en) | 2010-07-12 | 2013-09-03 | International Business Machines Corporation | Tracking loading and unloading of kernel extensions in isolated virtual space |
US8397245B2 (en) * | 2010-07-12 | 2013-03-12 | International Business Machines Corporation | Managing loading and unloading of shared kernel extensions in isolated virtual space |
US8949428B2 (en) | 2011-06-17 | 2015-02-03 | International Business Machines Corporation | Virtual machine load balancing |
US8966084B2 (en) | 2011-06-17 | 2015-02-24 | International Business Machines Corporation | Virtual machine load balancing |
US8843924B2 (en) | 2011-06-17 | 2014-09-23 | International Business Machines Corporation | Identification of over-constrained virtual machines |
US9075647B2 (en) | 2011-08-01 | 2015-07-07 | International Business Machines Corporation | Preemptive guest merging for virtualization hypervisors |
US9027020B2 (en) | 2012-01-06 | 2015-05-05 | Avaya Inc. | Data and state threading for virtualized partition management |
GB2502288A (en) | 2012-05-22 | 2013-11-27 | Ibm | Modifying the order of checking virtual machines for cached disc data |
CN103064797B (zh) * | 2012-12-21 | 2016-06-29 | 华为技术有限公司 | 数据处理方法和虚拟机管理平台 |
US9740857B2 (en) | 2014-01-16 | 2017-08-22 | Fireeye, Inc. | Threat-aware microvisor |
US10292894B2 (en) * | 2014-02-11 | 2019-05-21 | Tactile Systems Technology, Inc. | Compression therapy device and compression therapy protocols |
US9680862B2 (en) * | 2014-07-01 | 2017-06-13 | Fireeye, Inc. | Trusted threat-aware microvisor |
US9934376B1 (en) | 2014-12-29 | 2018-04-03 | Fireeye, Inc. | Malware detection appliance architecture |
US9912681B1 (en) | 2015-03-31 | 2018-03-06 | Fireeye, Inc. | Injection of content processing delay in an endpoint |
US10474813B1 (en) | 2015-03-31 | 2019-11-12 | Fireeye, Inc. | Code injection technique for remediation at an endpoint of a network |
US10454950B1 (en) | 2015-06-30 | 2019-10-22 | Fireeye, Inc. | Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks |
US10846117B1 (en) | 2015-12-10 | 2020-11-24 | Fireeye, Inc. | Technique for establishing secure communication between host and guest processes of a virtualization architecture |
US10447728B1 (en) | 2015-12-10 | 2019-10-15 | Fireeye, Inc. | Technique for protecting guest processes using a layered virtualization architecture |
US10108446B1 (en) | 2015-12-11 | 2018-10-23 | Fireeye, Inc. | Late load technique for deploying a virtualization layer underneath a running operating system |
US9952890B2 (en) * | 2016-02-29 | 2018-04-24 | Red Hat Israel, Ltd. | Kernel state data collection in a protected kernel environment |
US10191861B1 (en) | 2016-09-06 | 2019-01-29 | Fireeye, Inc. | Technique for implementing memory views using a layered virtualization architecture |
US10637800B2 (en) | 2017-06-30 | 2020-04-28 | Nicira, Inc | Replacement of logical network addresses with physical network addresses |
US10681000B2 (en) | 2017-06-30 | 2020-06-09 | Nicira, Inc. | Assignment of unique physical network addresses for logical network addresses |
CN110032870B (zh) * | 2019-03-29 | 2020-10-02 | 网御安全技术(深圳)有限公司 | 虚拟机监控器的安全引导方法、系统及硬件安全监控卡 |
US12079073B2 (en) * | 2021-03-26 | 2024-09-03 | VMware LLC | Verifying object file canisters using built-in reverse relocation integrity checking |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS628234A (ja) | 1985-07-03 | 1987-01-16 | Nec Corp | 共用プログラム制御方式 |
JP2967726B2 (ja) | 1996-05-30 | 1999-10-25 | 日本電気株式会社 | データベース手続き共有化方式 |
JP3473394B2 (ja) | 1998-04-20 | 2003-12-02 | 日本電気株式会社 | ホスト間資源共有排他制御装置及び方法及び記録媒体 |
JP2001256066A (ja) | 2000-02-29 | 2001-09-21 | Internatl Business Mach Corp <Ibm> | コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置 |
JP3874603B2 (ja) | 2000-11-21 | 2007-01-31 | 株式会社日立製作所 | 計算機システムの共有メモリ構築方法 |
US7035963B2 (en) * | 2000-12-27 | 2006-04-25 | Intel Corporation | Method for resolving address space conflicts between a virtual machine monitor and a guest operating system |
US6789156B1 (en) * | 2001-05-22 | 2004-09-07 | Vmware, Inc. | Content-based, transparent sharing of memory units |
JP2004258698A (ja) | 2003-02-24 | 2004-09-16 | Hitachi Ltd | マルチos計算機システムの制御方法 |
DE60323811D1 (de) * | 2003-04-09 | 2008-11-13 | Jaluna S A | Betriebssysteme |
JP2006048506A (ja) | 2004-08-06 | 2006-02-16 | Toshiba Corp | プロセッサ、メモリ管理システム及びメモリ管理プログラム |
WO2007036072A1 (en) * | 2005-09-29 | 2007-04-05 | Intel Corporation | Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment |
US9189291B2 (en) * | 2005-12-12 | 2015-11-17 | International Business Machines Corporation | Sharing a kernel of an operating system among logical partitions |
US7500048B1 (en) * | 2005-12-15 | 2009-03-03 | Vmware, Inc. | Transparent page sharing on commodity operating systems |
-
2006
- 2006-07-26 JP JP2006202870A patent/JP2008033392A/ja active Pending
-
2007
- 2007-07-25 US US11/878,576 patent/US7797507B2/en not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008077144A (ja) * | 2006-09-19 | 2008-04-03 | Ricoh Co Ltd | 仮想化システム、メモリ管理方法及び制御プログラム |
JP2010231684A (ja) * | 2009-03-30 | 2010-10-14 | Hitachi Ltd | 仮想計算機を有する物理計算機 |
JP2012527704A (ja) * | 2009-05-19 | 2012-11-08 | ヴイエムウェア インク | 仮想マシンシステムにおけるショートカット入出力 |
WO2012111113A1 (ja) * | 2011-02-16 | 2012-08-23 | 富士通株式会社 | メモリ管理プログラム、メモリ管理方法、情報処理装置、及びメモリ管理プログラムを記録したコンピュータ読取可能な記録媒体 |
JPWO2012111113A1 (ja) * | 2011-02-16 | 2014-07-03 | 富士通株式会社 | メモリ管理プログラム、メモリ管理方法、及び情報処理装置 |
JP2014235644A (ja) * | 2013-06-04 | 2014-12-15 | 日本電信電話株式会社 | リソース提供装置、リソース提供方法、およびリソース提供システム |
CN110147266A (zh) * | 2019-04-29 | 2019-08-20 | 腾讯科技(深圳)有限公司 | 虚拟机启动方法和装置、存储介质及电子装置 |
CN110147266B (zh) * | 2019-04-29 | 2024-03-15 | 腾讯科技(深圳)有限公司 | 虚拟机启动方法和装置、存储介质及电子装置 |
Also Published As
Publication number | Publication date |
---|---|
US20080028124A1 (en) | 2008-01-31 |
US7797507B2 (en) | 2010-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008033392A (ja) | 仮想計算機システム及びその動作方法 | |
US11157306B2 (en) | Faster access of virtual machine memory backed by a host computing device's virtual memory | |
JP6258940B2 (ja) | Bpramを使用したソフトウェア・アプリケーションのレイアウトおよび実行 | |
JP6259459B2 (ja) | Bpramを使用したオペレーティング・システムのレイアウトおよび実行 | |
US20100205604A1 (en) | Systems and methods for efficiently running multiple instances of multiple applications | |
JP2009145931A (ja) | 仮想計算機と物理計算機との間のマイグレーション方法及びその計算機システム | |
JP2008530706A (ja) | メモリを1台のバーチャル・マシンからもう一方へダイナミックに再割り当てする方法、装置及びシステム | |
JP2008033483A (ja) | 計算機システム、計算機および計算機動作環境の移動方法 | |
JP2005322242A (ja) | 仮想環境からのハードウェアへの直接アクセスの提供 | |
JP2014512593A (ja) | 仮想ディスクストレージ技術 | |
JP2010532527A (ja) | 物理イメージと仮想イメージの統合的な提供 | |
JP2016167143A (ja) | 情報処理システムおよび情報処理システムの制御方法 | |
JP5778296B2 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
US9864621B2 (en) | Virtual machine joiner | |
US20190310874A1 (en) | Driver management method and host | |
CN102662857B (zh) | 用于对于存储进行虚拟化的设备和方法 | |
JP5819350B2 (ja) | 計算機システム及び起動方法 | |
JP4692912B2 (ja) | リソース割り当てシステム、及びリソース割り当て方法 | |
US9158550B2 (en) | Caching based operating system installation | |
JP2015001757A5 (ja) | ||
US9292318B2 (en) | Initiating software applications requiring different processor architectures in respective isolated execution environment of an operating system | |
US9229643B2 (en) | Compatible virtual machine joiner | |
US20220374256A1 (en) | Information processing system, information processing apparatus, method of controlling the same, and storage medium | |
WO2013136457A1 (ja) | 仮想計算機システム、情報保存処理プログラム及び情報保存処理方法 | |
US12141588B2 (en) | Heterogeneous compute domains with an embedded operating system in an information handling system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071112 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080620 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080703 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20081203 |