JP2007334572A - Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム - Google Patents

Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム Download PDF

Info

Publication number
JP2007334572A
JP2007334572A JP2006164829A JP2006164829A JP2007334572A JP 2007334572 A JP2007334572 A JP 2007334572A JP 2006164829 A JP2006164829 A JP 2006164829A JP 2006164829 A JP2006164829 A JP 2006164829A JP 2007334572 A JP2007334572 A JP 2007334572A
Authority
JP
Japan
Prior art keywords
guest
host
new
information
management information
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
JP2006164829A
Other languages
English (en)
Other versions
JP4743529B2 (ja
Inventor
Riyoujin Obika
亮仁 小比賀
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2006164829A priority Critical patent/JP4743529B2/ja
Publication of JP2007334572A publication Critical patent/JP2007334572A/ja
Application granted granted Critical
Publication of JP4743529B2 publication Critical patent/JP4743529B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】ゲストOSを再起動しないで、ハードウェアアクセスについて、ゲストOSとホストOSの依存関係を切り替える。
【解決手段】OS切り替えシステムは、ホストOSとゲストOSとを具備する。ゲストOS300をホストに、ホストOS200をゲストに切替えるとき、ゲストOS300が、ゲストOS300のゲストメモリ管理情報とホストOS200のホストメモリ管理情報とに基づいて、切り替え後のホストOS200のメモリ管理情報となる新規ゲストメモリ管理情報と、切り替え後のゲストOS300のメモリ管理情報となる新規ホストメモリ管理情報とを生成する。ゲストOS300が、ゲストメモリ管理情報を新規ホストメモリ管理情報に置き換える。ホストOS200が、ホストメモリ管理情報を新規ゲストメモリ管理情報に置き換える。ホストOS200及びゲストOS300が、実行命令を切り替える。【選択図】図12

Description

本発明は、OS切り替えシステム、仮想計算機システム、OS切り替え方法及びOS切り替え用プログラムに関する。
仮想計算機システムとは、物理的に1台の計算機を複数台の計算機に見せる技術である。言い換えると、仮想計算機システムは、物理的に1台の計算機上で、複数のOS(例示:Windows(登録商標)、Linux)を同時に実行させることにより、ユーザに複数台の計算機が存在しているように見せる技術である。
図1は、仮想計算機システムの概要を示す構成図である。仮想計算機システム10aは、ホストOS200a、ゲストOS300a及びハードウェア100aを備える。ホストOS200aは、ハードウェア100aを制御するプログラムである。ホストOS200a上では、ホストOS200aのアプリケーションであるホストOSアプリケーション201−1〜201−m(mは自然数)が動作する。ゲストOS300a上では、ゲストOSのアプリケーションであるゲストOSアプリケーション301−1〜301−n(nは自然数)が動作する。ゲストOS300aは、ホストOS200aのアプリケーションの一種である。これらは、CPU(図示されず)により制御される。ホストOS200aは、時分割でCPU資源をホストOSアプリケーション201−1〜201−m及びゲストOS300aに割り当てる。ホストOSアプリケーション201−1〜201−m及びゲストOS300aは、割り当てられたCPU時間を使って、自身の処理を進める。ゲストOS300aはゲストOS300a自身が管理するゲストOSアプリケーション301−1〜301−nを所有している。そして、ホストOS300aから割り当てられたCPU時間をさらに細かく分割してゲストOSアプリケーション301−1〜301−nに割り当てる。以上のように、時分割でCPU資源を各アプリケーションに割り当てることによって、ホストOSアプリケーション201−1〜201−m、ゲストOS300a、ゲストOSアプリケーション301−1〜301−nを実行することができる。
以下、最初にゲストOS300aとホストOS200aとが切り替わる仕組みを説明し、次にゲストOS300aとホストOS200aの入出力の仕組みを説明する。
最初にゲストOS300aとホストOS200aが切り替わる仕組みを説明する。ゲストOS300aは、ホストOS200a上で動作する。言い換えると、ゲストOS300aはホストOSアプリケーションの一つと考えることができる。時分割でハードウェア資源をアプリケーションに割り当てるには、ハードウェア資源を占有しているプログラムを入れ替える、つまり、アプリケーションの切り替えが必要となる。ホストOSアプリケーション201−1〜201−mならびにゲストOS300aは、ホストOS200aのコンテキストスイッチという仕組みを使って切り替えられる。
図2は、ホストOSのコンテキストスイッチのを示す図である。ある瞬間にCPU上で実行できるプログラムは一つだけである。よって、複数のプログラムを並行に実行するために、時分割でそれぞれのプログラムにCPUを与える。CPU上で実行しているプログラムを変更する契機を与えるのがタイマー割り込みなどの各種割り込み信号である。割り込み信号を受け取ったCPUは、ホストOSによって登録されている割り込み信号ハンドラを呼び出して実行する。図の例では、初めにタイマーがセットされる。そしてホストOSアプリケーション201−1が実行される。タイマーによってセットされた時間が経過すると、タイマーはタイマー割り込み信号をCPUに送信する。割り込み信号を受け取ったCPUは予め登録されている割り込み信号ハンドラを呼び出して実行する。割り込み信号ハンドラは、ホストOSアプリケーション201−1のレジスタ情報やプログラムカウンタのような、プログラムを中断したときの状態情報を所定のメモリに保存する。そして、ゲストOS300aの状態情報(例示:レジスタ情報、プログラムカウンタ)を所定のメモリから読み出してセットする。それにより、ゲストOS300aが実行される。このようにホストOS200aはコンテキストスイッチを繰り返すことによって、複数のプログラムを並行に動作させることができる。
通常のコンテキストスイッチはタイマー割り込み信号を利用する。しかし、ゲストOS300aからホストOS200aへのコンテキストスイッチはホストOS200aへの入出力割込み信号を利用する。図3は、ゲストOS300aからホストOS200aへのコンテキストスイッチの仕組みを説明する図である。ホストOS200aと同様に、ゲストOS300aでも複数のアプリケーションを並行に実行するために、タイマー割り込みによるコンテキストスイッチを行う。一つの割り込み信号に登録することのできる割り込み信号ハンドラは一つである。ゲストOS300aはタイマー割り込みを利用して、ゲストOSアプリケーション301−1〜301−nのコンテキストスイッチをしている。そのため、ホストOS200aへ戻るには、タイマー割り込み以外の割り込み信号を実行する必要がある。言い換えると、タイマー割り込み以外の割り込み信号ハンドラにホストOS200aへの切り替え命令を記述しておいて、それを実行する必要がある。それがホストOS200aへの入出力割込みである。入出力割込みとは、デバイスからの処理完了の通知である。例としてハードディスクを上げる。CPUは、ハードディスクに対して、ある領域からある領域までの書き込みを要求するが、メモリ上に存在するデータを逐次ディスクに対して渡しているわけではない。領域だけが指定されると、補助演算装置がCPUの代わりにメモリ上のデータをディスクへ渡して書き込みを行う。補助演算装置が書き込みを行っている間、CPUは別の処理を行う。そして、ディスクへの書き込みが終了した時点で、補助演算装置は入出力割り込み信号を送信し、入出力割込み信号を受けとったCPUはディスクへの書き込みが完了したことをアプリケーションに通知する。ゲストOS300aは、予めホストOS200aによって出された入出力要求が完了したときに発行される入出力割込み信号か、キーボードやマウスなどを操作したときに発生する入出力割込み信号を受け取ったときに、それらの入出力割込み信号ハンドラを実行してホストOS200aに切り替わる。
次に、ゲストOS300aとホストOS200aの入出力の仕組みを説明する。ホストOS200aは、ホストOSアプリケーション201からの入出力要求を受け取って、ハードウェア100aに処理をさせる。ホストOSアプリケーション201がハードウェア100aでの処理にホストOS200aを仲介させる理由は、ホストOSアプリケーション201同士の競合を避けるためである。ホストOS200aは複数のホストOSアプリケーション201からの要求を整理し、順番にハードウェア100aに処理をさせる。ゲストOS300a上にはゲストOSアプリケーション301が動作している。ゲストOS300aは、ゲストOSアプリケーション301からの入出力要求を受け取って、その入出力要求をホストOS200aに転送する。ゲストOS300aはホストOSアプリケーションの一種である。よって、ゲストOS300aを複数実行し、入出力要求をホストOS200aで処理させることで、仮想計算機システム10では、物理的に1台の計算機上で、複数のOS(例示:Windows(登録商標)、Linux)を同時に実行させることができる。このような仮想計算機の例としては、非特許文献1や非特許文献2があげられる。
以上の説明の通り、ゲストOS300aのハードウェア100aでの処理はホストOS200aに依存する。ホストOS200aが行うハードウェア100aの管理は、メモリ管理とデバイス管理に大きく分けられる。ゲストOS300aはメモリ管理とデバイス管理について、ホストOS200aに依存している。以下、図4〜図6を用いて仮想計算機システムのメモリ管理について説明し、図7〜図10を用いて仮想計算機システムのデバイス管理について説明する。
まず、仮想計算機システムのメモリ管理について説明する。図4は、仮想計算機システムにおけるメモリ管理を説明する図である。ハードウェア100aは、物理メモリ101を備え、物理メモリ101は、ゲストOS領域102を含む。ゲストOS領域102は、ゲストOS300a起動時にホストOS200aによって割り当てられた物理メモリ領域であり、ゲストOS300aからはこの領域しか見ることができない。
まず、ホストOS200a側のメモリ管理について説明する。ホストOS200aは、メモリ管理用に、メモリ取得部206、空き領域管理部207、空き領域リスト208、論理アドレステーブル203、ページ情報テーブル204、アドレス変換部205を備える。
論理アドレステーブル203は、論理アドレスと物理アドレスの組を格納するテーブルである。論理アドレステーブルは、ホスト(ゲスト)OSアプリケーション毎に作成される。論理アドレス一つにつき、物理アドレス一つが、ホストOS200aによって割り当てられ、ホストOSアプリケーション201がメモリの読み書きを行う際は、論理アドレスを使用する。例えば、論理アドレスAと物理アドレスAが関連づけられている状態を考える。ホストOSアプリケーション201は、論理アドレスAへのデータ書き込み命令を実行する。この書き込み命令は、ホストOS200aが受け取る。ホストOS200aは論理アドレステーブル203を参照し、論理アドレスAを物理アドレスAに変換し、物理アドレスAへデータを書き込む。ページ情報テーブル204は物理メモリの使用状況を管理するテーブルである。物理メモリはページという単位で管理される(例示:通常、Linuxでは1ページ4キロバイト)。ページ情報テーブル204は、ページ番号と使用中フラグとを対とするエントリによって構成される。あるページが使用される場合は、使用中フラグを立て、使用されなくなった場合は、使用中フラグをおろす。
アドレス変換部205は、論理アドレステーブル203を参照し、論理アドレスを物理アドレスに変換する。空き領域管理部207は、ページ情報テーブル204を参照し、空いている物理メモリを空き領域リストとして持つ。メモリ取得部206は、ホスト(ゲスト)OSアプリケーションが新たなメモリを必要としたときに空き領域管理部207から空き領域を取得し、ユーザへ空き領域情報を返す。
これらの部、テーブルは以下のように動作する。ホストOSアプリケーション201が論理アドレスをアクセスすると、ホストOS200aは、アドレス変換部205を使って、論理アドレスを物理アドレスに変換する。よって、ホストOS200aから物理アドレスは直接参照されることはない。複数の論理アドレスを一つの物理アドレスに関連付けることによって、すべてのホストOSアプリケーションは同じ量の物理メモリを利用することができる。
例として、ホストOSアプリケーション201−1の論理アドレス1とホストOSアプリケーション201−2の論理アドレス1が物理アドレス1に関連付けられている場合を考える。物理アドレス1には、ホストOSアプリケーション201−1のデータが格納されており、ホストOSアプリケーション201−2のデータはその他の場所(例示:ディスク)に退避されている。このような場合に、ホストOSアプリケーション201−2からのアクセスがあれば、物理アドレス1に格納されているホストOSアプリケーション201−1のデータをその他の場所(例示:ディスク)に退避させて、ホストOSアプリケーション201−2のデータをその他の場所(例示:ディスク)から物理アドレス1にコピーし、コピーが完了後にホストOSアプリケーション201−2に物理アドレス1をアクセスさせる。図5は、ホストOSにおける論理アドレステーブルと、物理メモリ、及びページ情報テーブルの関係を表す図である。ページ情報テーブル204の使用中フラグは、当該ページ107が使用中か否かを表すフラグである。
次に、ゲストOS300a側のメモリ管理について説明する。図4を参照して、ゲストOS300aは、メモリ管理用に、メモリ取得部308、空き領域管理部309、空き領域リスト310、論理アドレステーブル303、ページ情報テーブル304、及びアドレス変換部305を備える。これらは、それぞれメモリ取得部206、空き領域管理部207、空き領域リスト208、論理アドレステーブル203、ページ情報テーブル204、及びアドレス変換部205に対応する。ゲストOS300aは、更に、メモリ管理用に、物理アドレス変換表306及び物理アドレス変換部307を新たに備える。
ここで、ゲストOS300aのメモリ管理を説明する前に、ゲストOS300aがホストOS200aからメモリをどのように割り当てられるかを説明する。ホストOSアプリケーション201は、メモリ取得部206を用いて、ホストOS200aに新規メモリの割り当てを要求する。要求を受け取ったホストOS200aは、空き領域リスト208を参照し、まだ割り当てられていないページを、要求を出したホストOSアプリケーション201に割り当てる。ホストOS200aは、割り当てた領域の先頭の論理アドレスをホストOSアプリケーション201に回答する。通常はこのようにメモリが割り当てられる。しかし、ゲストOS300aは、上記の割り当て方法とは違った方法を用いて、物理メモリを、直接、ホストOS200aから割り当ててもらう。ゲストOS300aがホストOS200aにメモリ割り当てを要求すると、ホストOS200aの空き領域リスト208を参照し、割り当てられていないページをゲストOS300aに割り当てる。この後、通常のホストOSアプリケーション201なら、割り当てた領域の先頭の論理アドレスが回答されるが、要求がゲストOS300aの場合は、割り当てた領域の先頭の「物理アドレス」が回答される。また、割り当てられた領域(以下、ゲストOS領域102)は、常に物理メモリ101上に存在する。ホストOS200aのメモリ管理でも説明したとおり、論理アドレスと物理アドレスの変換は、物理メモリだけではなく、ディスクなど、物理メモリ以外の領域もメモリとして使用している場合に、必要な仕組みである。割り当てられた領域が常に物理メモリ101上に存在する場合には、論理アドレスと物理アドレスの変換は必要ない。よって、ホストOS200a上に存在するゲストOS300aのための論理アドレステーブル203は使用されず、ホストOS200aのページ情報テーブル204にのみ、使用中を示す使用中フラグが立てられる。
物理アドレス変換表306は、仮想物理アドレスを物理アドレスに変換するために使用される表である。ゲストOS300aにおける論理アドレステーブル303には物理アドレスの代わりに仮想物理アドレスが格納されている。仮想物理アドレスとは、ゲストOS300a用の物理アドレスである。OSではメモリ管理のいたるところで、メモリアドレスが0番地から始まり、連番であることが暗黙の了解事項となっていることが多い。ホストOS200aによって割り当てられた物理メモリアドレスは必ずしも連番になっているとは限らず、また0番地から始まらない。よって、仮想物理アドレスという0番地から始まる連番の整数をゲストOSの物理アドレスとして使用することによって、上記暗黙の了解事項を踏襲している。仮想物理アドレスと物理アドレスは一対一に対応付けられている。物理アドレス変換部307は、物理アドレス変換表306を参照して、仮想物理アドレスを物理アドレスに変換する。
これらの表、部は以下のように動作する。ゲストOS300aにおける論理アドレスと仮想物理アドレスの変換は、ホストOS200aの論理アドレスと物理アドレスの変換と同じである。ゲストOS300aでは、仮想物理アドレスにアクセスするとき、物理アドレス変換部307が物理アドレス変換表306を元に仮想物理アドレスを物理アドレスに変換する。この変換によって、ゲストOSアプリケーション301は、ホストOS200aの管理するゲストOS領域102にアクセスすることができる。図6は、ゲストOSにおける論理アドレステーブル、ページ情報テーブル、物理アドレス変換表、及びゲストOS領域の関係を表す図である。
次に、仮想計算機システムのデバイス管理について説明する。図7は仮想計算機システムにおけるデバイス管理を説明する図である。ハードウェア100aは、DMAC(Direct Memory Access Controller)106、デバイスインターフェイス103、デバイスコントローラ104、デバイス1〜N_105が配置されている。
まず、ホストOS200a側のデバイス管理について説明する。ホストOS200aは、デバイス管理用に、デバイス一覧209、デバイス情報テーブル210、デバイス入出力受信部211、デバイス抽象化部212、デバイスドライバ1〜N_213、リソース構造体215、リソース管理部216、I/Oポート214を備える。
デバイス一覧209は、ホストOS200aによって認識されているデバイス105の一覧である。図8は、デバイス一覧を示す表である。デバイス一覧209はテーブルであり、デバイス番号221、デバイス名223、デバイス操作関数222をエントリとして含む。図7を参照して、デバイス情報テーブル210は、利用されているデバイス105の情報を格納したテーブルである。図9は、デバイス情報テーブルを示す表である。デバイス情報テーブル210は、デバイス番号221、利用カウンタ225、デバイス状態210、使用者情報224をエントリとして含む。デバイス情報テーブル210内のエントリは、デバイス105が使用される度に作成され、常に存在するものではない。ホスト(ゲスト)OSアプリケーションがデバイス105を使用するときにエントリが作成され、利用カウンタ225がインクリメントされる。当該デバイス105の利用者が0になったとき、当該デバイス105に対応するエントリは削除される。
図7を参照して、デバイス入出力受信部211は、ゲストOS300aからのデバイス入出力要求を受け取り、ホストOS200aへデバイス入出力を転送する。デバイス抽象化部212は、各デバイス105へのアクセス方法を抽象化する。各デバイス105は、用途により操作方法が異なる。デバイス抽象化部212は、各デバイス105の操作関数を「read」、「write」のようなインターフェイスと関連付けることによって、各デバイス105へのアクセス方法を抽象化している。例として、デバイス1への書き込み関数が「dev1_write」である場合を考える。「dev1_write」のようなデバイス操作関数は、後述のデバイスドライバ1_213に記述されており、デバイスドライバ1_213の登録により、「dev1_write」がデバイス抽象化部のもつ「write」関数に関連付けられる。ユーザは、デバイス1に書き込みを行う場合は、「デバイス1へwrite」とホストOS200aに命令することによって、デバイスドライバ登録時に関連付けられた「dev1_write」が実行されることになる。デバイスドライバ1〜N_213は、デバイス1〜N_105を操作するデバイス操作関数が記述されたプログラムである。ユーザからの入出力要求を受け取ったデバイスドライバ1〜N_213は、I/Oポート214を通して、デバイス1〜N_105に処理を実行させる。リソース構造体215は、後述するI/Oポート214を管理するための構造体である。リソース構造体215は、デバイス名とI/Oポートの組をエントリとして含む。リソース管理部216は、I/Oポート214を各デバイスに割り当てる。I/Oポート214は、各デバイス1〜N_105へ割り当てられてアドレスである。
DMAC106は、ハードウェアであり、CPUからの要求を受けて、CPUの代わりにデバイス1〜N_105での処理結果を受け取り、結果を適切な物理メモリ101上に保存する。デバイスインターフェイス103は、デバイスドライバから受け取った入出力要求を、より詳細に分割するハードウェア回路である。具体例としてディスクアクセスがある。デバイスドライバ213は、入出力命令を「セクタへの書き込み」という粒度で要求する。デバイスインターフェイス103は、「セクタへの書き込み」のようなデバイスドライバからの命令を、「適切な位置までディスクアームを移動させ」や「データをその位置へ書き込む」というようなより具体的な命令に翻訳する。デバイスコントローラ104は、上記デバイスインターフェイス103によって翻訳された命令列を実行するハードウェア回路である。デバイス1〜N_105は、デバイスコントローラ104によって制御されるデバイスとしての主体である。上記デバイスインターフェイス103の説明におけるディスクアクセスの例では、ディスクアームであり、データを書き込むディスクそのものである。
これらの部、テーブルは以下のように動作する。最初にデバイスドライバ1〜N_105がホストOS200aに登録される動作について説明する。登録は、デバイス一覧209へのエントリ追加とリソース管理部216によるI/Oポート214の割り当てを指す。これにより、ユーザはデバイス抽象化部212を通して、デバイス1〜N_105にアクセスすることが可能となる。次にユーザからデバイス(1〜N_)105への入出力要求がデバイス105で処理されるまでを説明する。デバイス入出力要求を受け取ったデバイス抽象化部212は、デバイス情報テーブル210を確認し、すでにデバイス105へのアクセスがあり、デバイス情報テーブル210に当該デバイス105のエントリがあるかどうかを確認する。エントリがある場合は、入出力要求を出したユーザをデバイス情報テーブル210の使用者情報に追加する。エントリが無い場合は、新たに当該デバイス105に対するエントリをデバイス情報テーブル210に登録する。使用者情報追加、またはエントリ追加後、デバイス一覧209のデバイス操作関数を使ってデバイス105にアクセスする。
次にゲストOS300a側のデバイス管理について説明する。ゲストOS300aは、デバイス管理用に、デバイス一覧311、デバイス情報テーブル312、デバイス対応テーブル313、デバイス抽象化部314、デバイスドライバ1〜M_315、デバイス入出力送信部316を備える。デバイス一覧311、デバイス情報テーブル312、デバイス抽象化部314は、ホストOS200aのデバイス一覧209、デバイス情報テーブル210、デバイス抽象化部212と同一である。デバイス対応テーブル313は、ゲストOS300aのデバイスとホストOS200aのデバイスとの対応を表すテーブルである。図10は、ゲストOSのデバイス対応テーブルを示す表である。ホストOSデバイス名322とゲストOSデバイス名323とが対応付けられている。図7を参照して、デバイスドライバ1〜M_315には、ホストOSのデバイスドライバ1〜N_213と同様にデバイス操作関数が記述されている。ただし、ゲストOS300aのデバイスドライバ1〜M_315のデバイス操作関数は、デバイスに対して処理を要求せず、デバイス入出力送信部316に入出力要求を転送する処理が記述されている。デバイス入出力送信部316は、ホストOS200aのデバイス入出力受信部211へデバイス入出力要求を転送する。
これらの部、テーブルは以下のように動作する。最初にデバイスドライバ1〜M_315がホストOS200aに登録される動作について説明する。ゲストOS300aにおけるデバイス登録はデバイス一覧311へのエントリ追加のみであり、リソース管理部216によるI/Oポート214の割り当ては行われない。次にユーザからデバイス1〜M_105(M≦N)への入出力要求がデバイスで処理されるまでを説明する。デバイス入出力要求を受け取ったデバイス抽象化部314は、デバイス情報テーブル312を確認し、すでにデバイス105へのアクセスがあり、デバイス情報テーブル312に当該デバイス105のエントリがあるかどうかを確認する。エントリがある場合は、入出力要求を出したユーザをデバイス情報テーブル312の使用者情報に追加する。エントリが無い場合は、新たに当該デバイス105に対するエントリをデバイス情報テーブル312に登録する。使用者情報追加、またはエントリ追加後、デバイス入出力要求は、ホストOS200aのデバイス105へデバイス入出力送信部316を経由して転送される。ホストOS200aへデバイス入出力要求を転送する際は、「ホストOS200aのどのデバイス105への要求か」を明確にするため、デバイス対応テーブル313を参照し、当該デバイス105のデバイス名に対応する「ホストOSのデバイス名」がデバイス入出力要求に付加される。
以上が仮想計算機システム10におけるメモリ管理およびデバイス管理の概要である。
関連する技術として、特開平2−297636号公報にOS制御方式が開示されている。このOS制御方式は、実計算機上で動作する親OS、この親OS上で動作するVMモニタ及び前記親OS上で前記VMモニタを介して動作する子OSを備えたビギーバック方式の仮想計算機システムにおいて、前記親OSが何らかの原因で停止する場合に、前記親OSから制御を受けて実計算機上で動作し前記子OSの一つが前記実計算機上で動作可能なように環境を整えて当該子OSに制御を移す親・子OS切換手段を有することを特徴とする。
Dan Aloni,"Cooperative Linux",Proceedings of he Linux Symposium,pp23−32,Ottawa Ontario Canada,July21th−24th,2004 Jeff Dike,"A user−mode port of the Linux kernel1",http://user−mode−linux.sourceforge.net/als2000/index.html Daniel P.Bovet,Marco Cesati."詳解Linux カーネル"O’REILLY JAPAN, Feb,2004 特開平2−297636号公報
仮想計算機システムが持つ問題点は、ホストOSを停止すると、ゲストOSも停止しなければならないということである。その理由は、ハードウェアアクセスについて、ゲストOSがホストOSに依存しているためである。上述のように、ゲストOSのメモリへのアクセスならびに、デバイスへのアクセスは、ホストOSを通して行われる。よって、ホストOSが停止した場合、ゲストOSはメモリならびにデバイスにアクセス出来なくなる。
特開平2−297636号公報には、親OSと子OSとの間の関係を切り替えるOS制御方式が記載されているが、その具体的手法は明示されておらず、具体的にどのようにすれば子OSが実計算機上で動作可能なように環境を整えられるのかが不明である。例えば、ホストOS及びゲストOSのメモリ管理情報及びデバイス管理情報を単に入れ替えただけでは、ホストOSで使用しているアプリケーションとゲストOSデ使用しているアプリケーションが異なるため、エラーとなり正確な動作を行うことが不可能である。
従って、本発明の目的は、ホストOSに障害が発生しても、ゲストOSを操作可能とするOS切り替えシステム、仮想計算機システム、OS切り替え方法及びOS切り替え用プログラムを提供することにある。
本発明の他の目的は、ゲストOSを再起動しないで、ハードウェアアクセスについて、ゲストOSとホストOSの依存関係を切り替えることのできるOS切り替えシステム、仮想計算機システム、OS切り替え方法及びOS切り替え用プログラムを提供することにある。
以下に、発明を実施するための最良の形態で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、特許請求の範囲の記載と発明を実施するための最良の形態との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
上記課題を解決するために、本発明のOS切り替えシステムは、ホストOS(200)と、ホストOS(200)上で動作するゲストOS(300)とを具備する。ゲストOS(300)をホストに、ホストOS(200)をゲストにそれぞれ切り替えるとき、ゲストOS(300)が、ゲストOS(300)のゲストメモリ管理情報(303、304、306)とホストOS(200)のホストメモリ管理情報(203、204)とに基づいて、切り替え後のホストOS(200)のメモリ管理情報となる新規ゲストメモリ管理情報(203a、611、612)と、切り替え後のゲストOS(300)のメモリ管理情報となる新規ホストメモリ管理情報(303a、304a)とを生成する。ゲストOS(300)が、ゲストメモリ管理情報(303、304、306)を新規ホストメモリ管理情報(303a、304a)に置き換える。ホストOS(200)が、ホストメモリ管理情報(203、204)を新規ゲストメモリ管理情報(203a、611、612)に置き換える。ホストOS(200)及びゲストOS(300)が、実行命令を切り替える。
上記のOS切り替えシステムにおいて、ゲストOS(300)が、ゲストOS(300)のゲストデバイス管理情報(311、313)とホストOS(200)のホストデバイス管理情報(209)とに基づいて、切り替え後のホストOS(200)のデバイス管理情報となる新規ゲストデバイス管理情報(613、614)と、切り替え後のゲストOS(300)のデバイス管理情報となる新規ホストデバイス管理情報(311a)を生成する。ゲストOS(300)が、ゲストデバイス管理情報(311、313)を新規ゲストデバイス管理情報(613、614)に置き換える。ホストOS(200)が、ホストデバイス管理情報(209)を新規ホストデバイス管理情報(311a)に置き換える。
上記のOS切り替えシステムにおいて、ゲストOS(300)は、ホストメモリ管理情報(203、204)に含まれるホストページ情報テーブル(204)とホスト論理アドレステーブル(203)とに基づいて、新規ゲストメモリ管理情報(203a、611、612)に含まれる新規ゲストページ情報テーブル(612)、新規ゲスト物理アドレス変換表(611)及び新規ゲスト論理アドレステーブル(203a)を生成するメモリ情報変換部540を備える。ホストページ情報テーブル(204)は、物理アドレスと当該物理アドレスの使用状況との対応を示す。ホスト論理アドレステーブル(203)は、論理アドレスと物理アドレスとの対応を示す。新規ゲストページ情報テーブル(612)は、ホストページ情報テーブル(204)におけるホストOS(200)の使用可能な物理アドレスと当該物理アドレスの使用状況との対応を示す。新規ゲスト物理アドレス変換表(611)は、新規ゲストページ情報テーブル(612)における物理アドレスと仮想物理アドレスとの対応を示す。
新規ゲスト論理アドレステーブル(203a)は、ホスト論理アドレステーブル(203)における論理アドレスと新規ゲスト物理アドレス変換表(611)における仮想物理アドレスとの対応を示す。
上記のOS切り替えシステムにおいて、メモリ情報変換部540は、更に、ホストページ情報テーブル(204)と、ゲストメモリ管理情報(303、304、306)に含まれるゲスト論理アドレステーブル(303)及びゲスト物理アドレス変換表(306)とに基づいて、新規ホストメモリ管理情報(303a、304a)に含まれる新規ホスト論理アドレステーブル(303a)及び新規ホストページ情報テーブル(304a)を生成する。ゲスト論理アドレステーブル(303)は、ゲストOS(300)における論理アドレスと仮想物理アドレスとの対応を示す。ゲスト物理アドレス変換表(306)は、ゲストOS(300)における仮想物理アドレスと物理アドレスとの対応を示す。新規ホスト論理アドレステーブル(303a)は、ゲスト論理アドレステーブル(303)における論理アドレスとゲスト物理アドレス変換表(306)における物理アドレスとの対応を示す。新規ホストページ情報テーブル(304a)は、ホストページ情報テーブル(204)をゲストOS(300)用に変更したものである。
上記のOS切り替えシステムにおいて、ゲストOS(300)は、更に、ゲストデバイス管理情報(311、313)に含まれるゲストデバイス対応テーブル(313)及びゲストデバイス一覧(311)と、ホストデバイス管理情報(209、210)に含まれるホストデバイス一覧(209)とに基づいて、新規ゲストデバイス管理情報(613、614)に含まれる新規ゲストデバイス対応テーブル(613)及び新規ゲストデバイス一覧(614)を生成するデバイス情報変換部550を備える。ゲストデバイス対応テーブル(313)は、ゲストOS(300)の認識するデバイスとホストOS(200)の認識するデバイスとの対応を示す。ゲストデバイス一覧(311)は、ゲストOS(300)の使用可能なデバイスに関する情報を示す。ホストデバイス一覧(209)は、ホストOS(200)の使用可能なデバイスに関する情報を示す。新規ゲストデバイス一覧(614)は、ホストデバイス一覧(209)のデバイスのうち、ゲストデバイス対応テーブル(313)にあるものについて、当該デバイスのデバイスに関する情報(デバイス名223、デバイス操作関数222)で、ゲストデバイス一覧(311)を更新し、更新されたゲストデバイス一覧(311)に、ホストデバイス一覧(209)の残りのデバイスのデバイスに関する情報を追加したものである。新規ゲストデバイス対応テーブル(613)は、ゲストデバイス対応テーブル(313)におけるゲストOS(300)の認識するデバイスとホストOS(200)の認識するデバイスとを入れ替えたものである。
上記のOS切り替えシステムにおいて、ゲストOS(300)は、ゲストOS(300)のプロセスのプロセス情報をホストOS(200)のプロセスのプロセス情報とし、ホストOS(200)のプロセスのメモリ情報を新規ゲストメモリ管理情報(203a、611、612)に基づいて書き換え、ホストOS(200)のプロセスのレジスタ情報をホストOS(200)のレジスタ情報に書き換え、スケジューリングキューにホストOS(200)のプロセスを登録するホストプロセス生成部(570)を備える。
上記のOS切り替えシステム(20)と、OS切り替えシステム(20)に使用されるハードウェア(100)とを具備する仮想計算機システム。
上記課題を解決するために本発明のOS切り替え方法は、(a)ゲストOS(300)をホストに、ホストOS(200)をゲストにそれぞれ切り替えるとき、ゲストOS(300)が、ゲストOS(300)のゲストメモリ管理情報(303、304、306)及びホストOS(200)のホストメモリ管理情報(203、204)に基づいて、切り替え後のホストOS(200)のメモリ管理情報となる新規ゲストメモリ管理情報(203a、611、612)と、切り替え後のゲストOS(300)のメモリ管理情報となる新規ホストメモリ管理情報(303a、304a)とを生成するステップと、(b)ゲストOS(300)が、ゲストメモリ管理情報(303、304、306)を新規ホストメモリ管理情報(303a、304a)に置き換えるステップと、(c)ホストOS(200)が、ホストメモリ管理情報(203、204)を新規ゲストメモリ管理情報(203a、611、612)に置き換えるステップと、(d)ホストOS(200)及びゲストOS(300)が、実行命令を切り替えるステップとを具備する。
上記のOS切り替え方法において、(e)ゲストOS(300)が、ゲストOS(300)のゲストデバイス管理情報(311、313)とホストOS(200)のホストデバイス管理情報(209)とに基づいて、切り替え後のホストOS(200)のデバイス管理情報となる新規ゲストデバイス管理情報(613、614)と、切り替え後のゲストOS(300)のデバイス管理情報となる新規ホストデバイス管理情報(311a)を生成するステップと、(f)ゲストOS(300)が、ゲストデバイス管理情報(311、313)を新規ゲストデバイス管理情報(613、614)に置き換えるステップと、(g)ホストOS(200)が、ホストデバイス管理情報(209)を新規ホストデバイス管理情報(311a)に置き換えるステップとを更に具備する。
上記のOS切り替え方法において、(a)ステップは、(a1)ホストメモリ管理情報(203、204)に含まれるホストページ情報テーブル(204)とホスト論理アドレステーブル(203)とに基づいて、新規ゲストメモリ管理情報(203a、611、612)に含まれる新規ゲストページ情報テーブル(612)、新規ゲスト物理アドレス変換表(611)及び及び新規ゲスト論理アドレステーブル(203a)を生成するステップを備える。ホスト論理アドレステーブル(203)は、論理アドレスと物理アドレスとの対応を示す。新規ゲストページ情報テーブル(612)は、ホストページ情報テーブル(204)におけるホストOS(200)の使用可能な物理アドレスと当該物理アドレスの使用状況との対応を示す。新規ゲスト物理アドレス変換表(611)は、新規ゲストページ情報テーブル(612)における物理アドレスと仮想物理アドレスとの対応を示す。新規ゲスト論理アドレステーブル(203a)は、ホスト論理アドレステーブル(203)における論理アドレスと新規ゲスト物理アドレス変換表(611)における仮想物理アドレスとの対応を示す。
上記のOS切り替え方法において、(a)ステップは、(a2)ホストページ情報テーブル(204)と、ゲストメモリ管理情報(303、304、306)に含まれるゲスト論理アドレステーブル(303)及びゲスト物理アドレス変換表(306)とに基づいて、新規ホストメモリ管理情報(303a、304a)に含まれる新規ホスト論理アドレステーブル(303a)及び新規ホストページ情報テーブル(304a)を生成するステップを更に備える。ゲスト論理アドレステーブル(303)は、ゲストOS(300)における論理アドレスと仮想物理アドレスとの対応を示す。
ゲスト物理アドレス変換表(306)は、ゲストOS(300)における仮想物理アドレスと物理アドレスとの対応を示す。新規ホスト論理アドレステーブル(303a)は、ゲスト論理アドレステーブル(303)における論理アドレスとゲスト物理アドレス変換表(306)における物理アドレスとの対応を示す。新規ホストページ情報テーブル(304a)は、ホストページ情報テーブル(204)をゲストOS(300)用に変更したものである。
上記のOS切り替え方法において、(e)ステップは、(e1)ゲストデバイス管理情報(311、313)に含まれるゲストデバイス対応テーブル(313)及びゲストデバイス一覧(311)と、ホストデバイス管理情報(209、210)に含まれるホストデバイス一覧(209)とに基づいて、新規ゲストデバイス管理情報(613、614)に含まれる新規ゲストデバイス対応テーブル(613)及び新規ゲストデバイス一覧(614)を生成するステップを備える。ゲストデバイス対応テーブル(313)は、ゲストOS(300)の認識するデバイスとホストOS(200)の認識するデバイスとの対応を示す。ゲストデバイス一覧(311)は、ゲストOS(300)の使用可能なデバイスに関する情報を示す。ホストデバイス一覧(209)は、ホストOS(200)の使用可能なデバイスに関する情報を示す。新規ゲストデバイス一覧(614)は、ホストデバイス一覧(209)のデバイスのうち、ゲストデバイス対応テーブル(313)にあるものについて、当該デバイスのデバイスに関する情報(デバイス名223、デバイス操作関数222)で、ゲストデバイス一覧(311)を更新し、更新されたゲストデバイス一覧(311)に、ホストデバイス一覧(209)の残りのデバイスのデバイスに関する情報を追加したものである。新規ゲストデバイス対応テーブル(613)は、ゲストデバイス対応テーブル(313)におけるゲストOS(300)の認識するデバイスとホストOS(200)の認識するデバイスとを入れ替えたものである。
上記のOS切り替え方法において、(d)ステップは、(d1)ゲストOS(300)のプロセスのプロセス情報を、ホストOS(200)のプロセスのプロセス情報とするステップと、(d2)ホストOS(200)のプロセスのメモリ情報を新規ゲストメモリ管理情報(203a、611、612)に基づいて書き換えるステップと、(d3)ホストOS(200)のプロセスのレジスタ情報をホストOS(200)のレジスタ情報に書き換えるステップと、(d4)スケジューリングキューにホストOS(200)のプロセスを登録するステップとを備える。
上記課題を解決するために本発明のプログラムは、(a)ゲストOS(300)をホストに、ホストOS(200)をゲストにそれぞれ切り替えるとき、ゲストOS(300)が、ゲストOS(300)のゲストメモリ管理情報(303、304、306)及びホストOS(200)のホストメモリ管理情報(203、204)に基づいて、切り替え後のホストOS(200)のメモリ管理情報となる新規ゲストメモリ管理情報(203a、611、612)と、切り替え後のゲストOS(300)のメモリ管理情報となる新規ホストメモリ管理情報(303a、304a)とを生成するステップと、(b)ゲストOS(300)が、ゲストメモリ管理情報(303、304、306)を新規ホストメモリ管理情報(303a、304a)に置き換えるステップと、(c)ホストOS(200)が、ホストメモリ管理情報(203、204)を新規ゲストメモリ管理情報(203a、611、612)に置き換えるステップと、(d)ホストOS(200)及びゲストOS(300)が、実行命令を切り替えるステップとを具備するOS切り替え方法をコンピュータに実行させる。
上記のプログラムにおいて、(e)ゲストOS(300)が、ゲストOS(300)のゲストデバイス管理情報(311、313)とホストOS(200)のホストデバイス管理情報(209)とに基づいて、切り替え後のホストOS(200)のデバイス管理情報となる新規ゲストデバイス管理情報(613、614)と、切り替え後のゲストOS(300)のデバイス管理情報となる新規ホストデバイス管理情報(311a)を生成するステップと、(f)ゲストOS(300)が、ゲストデバイス管理情報(311、313)を新規ゲストデバイス管理情報(613、614)に置き換えるステップと、(g)ホストOS(200)が、ホストデバイス管理情報(209)を新規ホストデバイス管理情報(311a)に置き換えるステップとを更に具備する。
上記のプログラムにおいて、(a)ステップは、(a1)ホストメモリ管理情報(203、204)に含まれるホストページ情報テーブル(204)とホスト論理アドレステーブル(203)とに基づいて、新規ゲストメモリ管理情報(203a、611、612)に含まれる新規ゲストページ情報テーブル(612)、新規ゲスト物理アドレス変換表(611)及び及び新規ゲスト論理アドレステーブル(203a)を生成するステップを備える。ホスト論理アドレステーブル(203)は、論理アドレスと物理アドレスとの対応を示す。新規ゲストページ情報テーブル(612)は、ホストページ情報テーブル(204)におけるホストOS(200)の使用可能な物理アドレスと当該物理アドレスの使用状況との対応を示す。新規ゲスト物理アドレス変換表(611)は、新規ゲストページ情報テーブル(612)における物理アドレスと仮想物理アドレスとの対応を示す。新規ゲスト論理アドレステーブル(203a)は、ホスト論理アドレステーブル(203)における論理アドレスと新規ゲスト物理アドレス変換表(611)における仮想物理アドレスとの対応を示す。
上記のプログラムにおいて、(a)ステップは、(a2)ホストページ情報テーブル(204)と、ゲストメモリ管理情報(303、304、306)に含まれるゲスト論理アドレステーブル(303)及びゲスト物理アドレス変換表(306)とに基づいて、新規ホストメモリ管理情報(303a、304a)に含まれる新規ホスト論理アドレステーブル(303a)及び新規ホストページ情報テーブル(304a)を生成するステップを更に備える。ゲスト論理アドレステーブル(303)は、ゲストOS(300)における論理アドレスと仮想物理アドレスとの対応を示す。ゲスト物理アドレス変換表(306)は、ゲストOS(300)における仮想物理アドレスと物理アドレスとの対応を示す。新規ホスト論理アドレステーブル(303a)は、ゲスト論理アドレステーブル(303)における論理アドレスとゲスト物理アドレス変換表(306)における物理アドレスとの対応を示す。新規ホストページ情報テーブル(304a)は、ホストページ情報テーブル(204)をゲストOS(300)用に変更したものである。
上記のプログラムにおいて、(e)ステップは、(e1)ゲストデバイス管理情報(311、313)に含まれるゲストデバイス対応テーブル(313)及びゲストデバイス一覧(311)と、ホストデバイス管理情報(209、210)に含まれるホストデバイス一覧(209)とに基づいて、新規ゲストデバイス管理情報(613、614)に含まれる新規ゲストデバイス対応テーブル(613)及び新規ゲストデバイス一覧(614)を生成するステップを備える。ゲストデバイス対応テーブル(313)は、ゲストOS(300)の認識するデバイスとホストOS(200)の認識するデバイスとの対応を示す。ゲストデバイス一覧(311)は、ゲストOS(300)の使用可能なデバイスに関する情報を示す。ホストデバイス一覧(209)は、ホストOS(200)の使用可能なデバイスに関する情報を示す。新規ゲストデバイス一覧(614)は、ホストデバイス一覧(209)のデバイスのうち、ゲストデバイス対応テーブル(313)にあるものについて、当該デバイスのデバイスに関する情報(デバイス名223、デバイス操作関数222)で、ゲストデバイス一覧(311)を更新し、更新されたゲストデバイス一覧(311)に、ホストデバイス一覧(209)の残りのデバイスのデバイスに関する情報を追加したものである。新規ゲストデバイス対応テーブル(613)は、ゲストデバイス対応テーブル(313)におけるゲストOS(300)の認識するデバイスとホストOS(200)の認識するデバイスとを入れ替えたものである。
上記のプログラムにおいて、(d)ステップは、(d1)ゲストOS(300)のプロセスのプロセス情報を、ホストOS(200)のプロセスのプロセス情報とするステップと、(d2)ホストOS(200)のプロセスのメモリ情報を新規ゲストメモリ管理情報(203a、611、612)に基づいて書き換えるステップと、(d3)ホストOS(200)のプロセスのレジスタ情報をホストOS(200)のレジスタ情報に書き換えるステップと、(d4)スケジューリングキューにホストOS(200)のプロセスを登録するステップとを備える。
本発明では、仮想計算機システムにおいて、ゲストOS(300)をホストにしホストOS(200)をゲストにそれぞれ切り替えるとき、ホストOS(200)及びゲストOS(300)の切り替え前のメモリ管理情報/デバイス管理情報に基づいて、切り替え後に用いるメモリ管理情報/デバイス管理情報を新たに生成している。そのため、切り替え前後でメモリ管理情報/デバイス管理情報に矛盾が発生すること無く、ゲストOSを再起動しないでスムーズな切り替えが可能となる。そして、ゲストOSを再起動しないで、ハードウェアアクセスについて、ゲストOSとホストOSの依存関係を切り替えることが可能となる。
以下、本発明のOS切り替えシステム、仮想計算機システム、OS切り替え方法及びOS切り替え用プログラムの実施の形態に関して、添付図面を参照して説明する。
図11は、本発明のOS切り替えシステムを適用した仮想計算機システムの実施の形態を示す概略構成図である。仮想計算機システム10は、ホストOS200、ゲストOS300及びハードウェア100を備える。ホストOS200は、ハードウェア100を制御するプログラムである。ホストOS200上では、ホストOS200のアプリケーションであるホストOSアプリケーション201−1〜201−mが動作する。ゲストOS300上では、ゲストOSのアプリケーションであるゲストOSアプリケーション301−1〜301−nが動作する。ゲストOS300は、ホストOS200のアプリケーションの一種である。これらは、CPU(図示されず)により制御される。ホストOS200、ゲストOS300及びハードウェア100は、それぞれ、図1〜図10に関連して説明されたホストOS200a、ゲストOS300a及びハードウェア100aの機能を含む。
本発明のOS切り替えシステムは、ホストOS200をゲストに、ゲストOS300をホストに切り替える。すなわち、ホストOS200を新規ゲストOSに、ゲストOS300を新規ホストOSに、それぞれ切り替える。
図12は、本発明のOS切り替えシステムの実施の形態の構成を示すブロック図である。は、OS切り替えシステム20は、ゲストOS300側にメモリ情報退避部500、デバイス情報退避部510、メモリ情報取得部520、デバイス情報取得部530、メモリ情報変換部540、デバイス情報変換部550、実行命令切り替え部560、ホストプロセス生成部570、コンテキスト情報取得部580、プロセス情報取得部590を備える。加えて、ホストOS200側に、メモリ情報退避部400、デバイス情報退避部410、メモリ情報取得部420、デバイス情報取得部430、メモリ情報入れ替え部440、デバイス情報入れ替え部450、実行命令切り替え部460、コンテキスト情報退避部470、プロセス情報取得部480を備える。これらの各構成は、ソフトウェアの他、ハードウェア、又は、ソフトウェア及びハードウェアの組み合わせにより実施することも可能である。OS切り替えシステム20は、更に、ハードウェア100の主記憶装置110上にOS状態退避領域600を備える。主記憶装置110は、例えば物理メモリである。
OS状態退避領域600は、ゲストOS300とホストOS200のメモリ管理情報とデバイス管理情報、ホストOS200のコンテキスト情報を格納しておくための領域である。図13は、OS状態退避領域600を示すブロック図である。OS状態退避領域600は物理メモリ上に配置される。OS状態退避領域600は、ゲストOS状態退避領域610とホストOS状態退避領域620を備える。ゲストOS状態退避領域610はゲストOS300が作成した新規ゲストOS用のメモリ管理情報とデバイス管理情報を格納する。ここで、メモリ管理情報は、新規ゲストOS用物理アドレス変換表611及び新規ゲストOS用ページ情報テーブル612を含む。デバイス管理情報は、新規ゲストOS用デバイス対応テーブル613及び新規ゲストOS用デバイス一覧614を含む。ホストOS状態退避領域620は、ホストOS200で使用しているメモリ管理情報、デバイス管理情報及びコンテキスト情報227を格納する。ここで、メモリ管理情報は、ページ情報テーブル204を含む。デバイス管理情報は、デバイス情報テーブル210及びデバイス一覧209を含む。
図12を参照して、メモリ情報退避部400はホストOS200に、メモリ情報退避部500はゲストOS300にそれぞれ配置される。メモリ情報退避部400は、ホストOS200自身の使用しているページ情報テーブル204を、OS状態退避領域600内のホストOS状態退避領域620に格納する。メモリ情報退避部500は、ゲストOS300が作成した新規ゲストOS用物理アドレス変換表611、新規ゲストOS用ページ情報テーブル612をOS状態退避領域600内のゲストOS状態退避領域610に格納する。
デバイス情報退避部410はホストOS200に、デバイス情報退避部510はゲストOS300にそれぞれ配置される。デバイス情報退避部410は、ホストOS200自身の使用しているデバイス情報テーブル210、デバイス一覧209をOS状態退避領域600内のホストOS状態退避領域620に格納する。デバイス情報退避部510は、ゲストOS300が作成した新規ゲストOS用デバイス対応テーブル613、新規ゲストOS用デバイス一覧614をゲストOS状態退避領域610に格納する。
メモリ情報取得部420はホストOS200に、メモリ情報取得部520はゲストOS300にそれぞれ配置される。メモリ情報取得部420は、ゲストOS300が作成した新規ゲストOS用物理アドレス変換表611、新規ゲストOS用ページ情報テーブル612を、OS状態退避領域内600のゲストOS状態退避領域610から取得する。メモリ情報取得部520は、ホストOS200によって格納されたページ情報テーブル204をOS状態退避領域600内のホストOS状態退避領域620から取得する。
デバイス情報取得部430はホストOS200に、デバイス情報取得部530はゲストOS300にそれぞれ配置される。デバイス情報取得部430は、ゲストOS300が作成した新規ゲストOS用デバイス対応テーブル613、新規ゲストOS用デバイス一覧614をゲストOS状態退避領域610から取得する。デバイス情報取得部530は、ホストOS200によって格納されたデバイス情報テーブル210、デバイス一覧209をOS状態退避領域600内のホストOS状態退避領域620から取得する。
メモリ情報変換部540は、ゲストOS300に配置される。メモリ情報取得部520によって取得したホストOS200のページ情報テーブル204に基づいて、ページ情報テーブル304を新規ホストOS用ページ情報テーブル304aに書き換える。また、新規ホストOS用ページ情報テーブル304aと論理アドレステーブル303及び物理アドレス変換表306とに基づいて、論理アドレステーブル303を新規ホストOS用論理アドレステーブル303aに書き換える。それとともに、新規ホストOS用ページ情報テーブル304aに基づいて、新たに新規ゲストOS用ページ情報テーブル612を生成する。加えて、新規ホストOS用ページ情報テーブル304a及び論理アドレステーブル203に基づいて、新たに新規ゲストOS用物理アドレス変換表611を作成するとともに、論理アドレステーブル203を新規ゲストOS用論理アドレステーブル203aに書き換える。新規ゲストOS用ページ情報テーブル612は、OS切り替え前に使用していたページ情報テーブル204からゲストOS300が使用しているページを削除したものに相当する。新規ゲストOS用物理アドレス変換表611は、ゲストOS300が使用している物理メモリアドレスを除いた物理メモリアドレスに連番を割り当てていくことによって作成する。
デバイス情報変換部550は、ゲストOS300に配置される。デバイス情報取得部530によって取得したホストOS200のデバイス情報テーブル210及びデバイス一覧209と、ゲストOS300が使用しているデバイス対応テーブル313及びデバイス一覧311とに基づいて、ホストOS200のデバイスドライバをゲストOS300に登録し、新規ホストOS用デバイス一覧311aを生成する。同様に、ゲストOS300のデバイスドライバをホストOS200に登録し、新たに新規ゲストOS用デバイス一覧614を作成する。加えて、デバイス対応テーブル313のホスト側のデータ322とゲスト側のデータ323を入れ替えて、新たに新規ゲストOS用デバイス対応テーブル613を生成する。
メモリ情報入れ替え部440は、ホストOS200に配置される。ホストOS200のメモリ情報取得部520によって取得した新規ゲストOS用ページ情報テーブル612と新規ゲストOS用物理アドレス変換表611を使って、ホストOS200の論理アドレステーブル203に記載された物理アドレス218を仮想物理アドレス318に入れ替える。それとともに、ページ情報テーブル204を新規ゲストOS用ページ情報テーブル612に置き換える。
デバイス情報入れ替え部450は、ホストOS200のデバイス情報取得部430によって取得した新規ゲストOS用デバイス一覧614と新規ゲストOS用デバイス対応テーブル613を使って、新たにデバイスドライバを登録していく。
コンテキスト情報退避部470は、ホストOS200に配置される。ホストOSアプリケーションのレジスタ情報をOS状態退避領域600の中のホストOS状態退避領域620に格納する。背景技術におけるコンテキストスイッチにおいて説明したとおり、ホストOS200がゲストOSに、ゲストOS300がホストOSに切り替わる際、それまで動作させていたホストOSアプリケーションのレジスタ情報や、次に実行すべき命令の格納されたメモリアドレス(以下、プログラムカウンタと呼ぶ。)が、アプリケーションの実行中断状態(コンテキスト情報227)として、ホストOS200の管理するデータ領域に格納される。すなわち、コンテキスト情報退避部470は、プログラムカウンタやレジスタ情報などの実行中断状態(コンテキスト情報227)を退避させる。
コンテキスト情報取得部580は、ゲストOS300に配置される。コンテキスト情報退避部470によって格納されたコンテキスト情報227を取得する。ホストプロセス生成部570は、ゲストOS300に配置される。ゲストOS300上でホストOS200の主体となるプロセスを生成する。
実行命令切り替え部460はホストOS200に、実行切り替え部560はゲストOS300にそれぞれ配置される。実行命令切り替え部460、560は、上記各部の動作が終了した時点で、ゲストOS300とホストOS200で使用していたメモリならびにデバイス操作関数を切り替える。ゲストOS300は、通常(ホストOS)のメモリ管理とは異なり、物理アドレス変換表306を持ち、物理アドレス変換部307をメモリ操作関数として持っている。上記各部の実行後、ゲストOS300はホストOSとして振る舞うため、ホストOS200が使用していたメモリ操作関数に切り替える必要がある。デバイスについても同様である。ただし、これらの操作関数は、実行命令切り替え部460、560の両方が各々持っているものとする。
プロセス情報取得部480はホストOS200に、プロセス情報取得部590はゲストOS300にそれぞれ配置される。それぞれホストOS200及びゲストOS300において、プロセス情報のリストからプロセス情報を取得し、使用中デバイス105の有無を確認する。使用中デバイス105が有れば、当該デバイス105への要求を取り消してプロセスにエラーを返す。
次に、本発明のOS切り替えシステムの実施の形態の動作(OS切り替え方法の実施の形態)について説明する。図14〜図16は、本発明のOS切り替えシステムの実施の形態の動作を示すフローチャートである。
図14は、特に、ホストOS200の動作を表している。まず、プロセス情報取得部480は、プロセス情報のリストからプロセス情報を取得する(S1)。プロセス情報とはアプリケーションプログラム201の一つにつき一つ作成される実行中プログラムの状態を表すものである。プロセス情報には、当該アプリケーションプログラム201におけるプロセスが入出力要求を出しているデバイス105の情報が格納されている。すなわち、プロセス情報は、当該アプリケーションプログラムにおけるプロセスと、入出力要求を出しているデバイスとを関連付けている。そして、プロセス情報のリストは、アプリケーションプログラムとプロセス情報とを関連付けている。プロセス情報のリストはOS200が保持している。リストの終端、すなわちすべてのプロセスについてプロセス情報の取得が終了した時点で、次のステップ(S6)を実行する(S2:YES)。すべてのプロセスについてプロセス情報の取得が終了していない場合(S2:NO)、プロセス情報取得部480は、プロセス情報から使用中デバイス105の有無を確認する(S3)。使用中デバイス105が有れば(S4:YES)、プロセス情報取得部480は、当該デバイス105への要求を取り消してプロセスにエラーを返す(S5)。当該プロセスに関して、使用中のデバイス105が無ければ(S4:NO)、プロセス情報取得部480は、次のプロセス情報を取得する。ここまでの作業は、デバイス入出力中の状態をなくして、いつでもデバイスドライバ213を取り替えることのできるように準備する作業である。
次に、メモリ情報退避部400は、ページ情報テーブル204をホストOS状態退避領域620へコピーする(S6)。続いて、デバイス情報退避部410は、デバイス情報テーブル210をホストOS状態退避領域620へコピーし(S7)、デバイス一覧209をホストOS状態退避領域620へコピーする(S8)。そして、コンテキスト情報退避部470は、コンテキスト情報227をOS状態退避領域620へコピーする(S9)。その後、従来と同様な方法で、ゲストOS300へコンテキストスイッチする(S10)。
図15は、図14の続きであり、特に、ゲストOS300の動作を表している。まず、プロセス情報取得部590は、プロセス情報のリストからプロセス情報を取得する(S11)。プロセス情報とはアプリケーションプログラム301の一つにつき一つ作成される実行中プログラムの状態を表すものである。プロセス情報には、当該アプリケーションプログラム301におけるプロセスが入出力要求を出しているデバイス105の情報が格納されている。すなわち、プロセス情報は、当該アプリケーションプログラムにおけるプロセスと、入出力要求を出しているデバイスとを関連付けている。そして、プロセス情報のリストは、アプリケーションプログラムとプロセス情報とを関連付けている。プロセス情報のリストはOS300が保持している。リストの終端、すなわちすべてのプロセスについてプロセス情報の取得が終了した時点で、次のステップ(S16)を実行する(S12:YES)。すべてのプロセスについてプロセス情報の取得が終了していない場合(S12:NO)、プロセス情報取得部590は、プロセス情報から使用中デバイス105の有無を確認する(S13)。使用中デバイス105が有れば(S14:YES)、プロセス情報取得部590は、当該デバイス105への要求を取り消してプロセスにエラーを返す(S15)。当該プロセスに関して、使用中のデバイス105が無ければ(S14:NO)、プロセス情報取得部590は、次のプロセス情報を取得する。ここまでの作業は、デバイス入出力中の状態をなくして、いつでもデバイスドライバ315を取り替えることのできるように準備する作業である。
次に、メモリ情報取得部520はS6で保存されたページ情報テーブル204を、デバイス情報取得部530はS7で保存されたデバイス情報テーブル210及びS8で保存されたデバイス一覧209を、それぞれOS状態退避領域600のホストOS状態退避領域620から取得する(S16)。メモリ情報変換部540は、それらのホストOS200の情報(ページ情報テーブル204、デバイス情報テーブル210及びデバイス一覧209)に基づいて、自身のページ情報テーブル304を新規ホストOS用ページ情報テーブル304aに、論理アドレステーブル303を新規ホストOS用論理アドレステーブル303aにそれぞれ書き換える(S17)。その後、メモリ情報変換部540は、新規ホストOS用ページ情報テーブル304aに基づいて、新規ゲストOS用ページ情報テーブル612と新規ゲストOS用物理アドレス変換表611を作成する。そして、メモリ情報退避部500は、新規ゲストOS用ページ情報テーブル612と新規ゲストOS用物理アドレス変換表611をゲストOS状態退避領域610に格納する(S18)。S17とS18におけるメモリ情報変換部540の詳細な動作は後述する。
次に、デバイス情報変換部550は、ホストOS200のデバイス情報テーブル210及びデバイス一覧209と、ゲストOS300のデバイス対応テーブル313及びデバイス一覧311とに基づいて、新規ホストOS用デバイス一覧311aを生成する(S19)。そして、デバイス情報変換部550は、同様に、ゲストOS300のデバイスドライバをホストOS200に登録し、新たに新規ゲストOS用デバイス一覧614を作成する。加えて、デバイス対応テーブル313のホスト側のホストOSデバイス名322とゲスト側のゲストOSデバイス名323とを入れ替えて、新たに新規ゲストOS用デバイス対応テーブル613を生成する。デバイス情報退避部510は、新規ゲストOS用デバイス対応テーブル613と新規ゲストOS用デバイス一覧614をゲストOS状態退避領域610に格納する(S20)。S19とS20におけるデバイス情報変換部550の詳細な動作は後述する。
次に、ホストプロセス生成部570は、新たにホストOSとなるプロセスを生成する(S21)。ホストプロセスの生成の詳細については後述する。そして、実行命令切り替え部560は、実行命令を切り替える(S22)。ここまでの動作によって、ゲストOS300は新たなホストOSとして実行されることになる。すなわち、ゲストOS300が、元のホストOS200の機能を果たすことで、ゲストOS300は新たなホストOSとして動作することが出来る。その後、最後にホストOS200へコンテキストスイッチを行う(S23)。
図16は、特に、ホストOS200(新たなゲストOS)の動作を表している。まず、メモリ情報取得部420は新規ゲストOS用物理アドレス変換表611及び新規ゲストOS用ページ情報テーブル612を、デバイス情報取得部430は新規ゲストOS用デバイス対応テーブル613及び新規ゲストOS用デバイス一覧614を、それぞれゲストOS状態退避領域610から取得する(S24)。次に、メモリ情報入れ替え部440は、新規ゲストOS用物理アドレス変換表611を追加し、ページ情報テーブル204を新規ゲストOS用ページ情報テーブル612に入れ替え、論理アドレステーブル203を書き換える(S25)。具体的には、論理アドレステーブル203に記載されている物理アドレス218を仮想物理アドレスに書き換えて、新規ゲストOS用論理アドレステーブル203aとする作業を指す。この作業に新規ゲストOS用物理アドレス変換表611を用いる。そして、これまで使用していたページ情報テーブル204を新しく取得した新規ゲストOS用ページ情報テーブル612に置き換える。
次に、デバイス情報入れ替え部450は、新規ゲストOS用の情報を使ってデバイス105を入れ替える(S26)。具体的には、新規ゲストOS用デバイス対応テーブル613をホストOS200内に新たに設けるとともに、デバイス一覧209を新規ゲストOS用デバイス一覧614に入れ替えて、新規ゲストOS用デバイス一覧614に記載されているデバイスのデバイスドライバを新たに登録していく作業を指す。なお、使われなくなったデバイスドライバはこの作業にともない登録を抹消する。最後に、実行命令切り替え部460は、ホストOS200の実行命令を切り替える。ここまでの動作によって、ホストOS200は新たなゲストOSとして実行されることになる。
以上が本発明のOS切り替えシステムの実施の形態の全体の動作である。
次に、メモリ情報変換部540の動作の詳細について説明する。
図17は、S17、S18におけるメモリ情報変換部の動作を示すフローチャートである。図20は、S17における新規ホストOS用ページ情報テーブル304aの生成過程を示す一例である。図21は、S17における新規ホストOS用論理アドレステーブル303aの生成過程を示す一例である。図22は、S18における新規ゲストOS用ページ情報テーブルの生成過程を示す一例である。図23は、S18において生成される新規ゲストOS用物理アドレス変換表611を示す一例である。図24は、S18における新規ゲストOS用論理アドレステーブル203aの生成過程を示す一例である。
図17を参照して、メモリ情報変換部540は、ホストOS200から取得したページ情報テーブル204をコピーする(S31)。図20(a)におけるページ情報テーブル204を参照すると、ページ情報テーブル204は、ページ番号219と使用中フラグ220とを関連付けている。ページ番号219は、既述のように物理アドレスが関連付けられており、以下の説明では簡単のために、物理アドレスとページ番号とは1:1に対応しているとする。使用中フラグ220は、既述のように対応するページ番号219の示す物理アドレスの物理メモリが使用中か未使用かを示す。白地の「使用中」/「未使用」(例示:ページ番号2/ページ番号3)は、ホストOS200での使用/未使用を示す。色地の「使用中」/「未使用」(例示:ページ番号1/ページ番号m)は、ゲストOS300での使用/未使用を示す。
図17を参照して、メモリ情報変換部540は、ページ情報テーブル204中の白地の「使用中」と色地の「使用中」とを入れ替え、及び、白地の「未使用」と色地の「未使用」とを入れ替えて、新たな新規ホストOS用ページ情報テーブル304aを生成する(S32)。すなわち、ホストOS200が確保している(使用を許可されている)ページ情報を、ゲストOS300が確保している(使用を許可されている)ページ情報と入れ換える。図20(b)は、新たな新規ホストOS用ページ情報テーブル304aを示している。そして、ページ情報テーブル304を新規ホストOS用ページ情報テーブル304aに置き換える。
図17を参照して、メモリ情報変換部540は、論理アドレステーブル303と物理アドレス変換表306とに基づいて、論理アドレステーブル303の仮想物理アドレス318を物理アドレス変換表306の物理アドレス(ホストOS200の物理アドレス)に書き換える(S33)。図21(a)、(b)は、それぞれ論理アドレステーブル303と物理アドレス変換表306を示す。仮想物理アドレス318を物理アドレスに書き換えることで、新規ホストOS用論理アドレステーブル303a(図21(c))が生成される。
これにより、新規ホスト(ゲストOS300)用の新規ホストOS用ページ情報テーブル304a及び新規ホストOS用論理アドレステーブル303aが生成される(以上、S17に対応)。
次に、図17を参照して、メモリ情報変換部540は、新規ホストOS用ページ情報テーブル304aからホストOS200(新ゲストOS)用のエントリを抽出し、新規ゲストOS用ページ情報テーブル612を生成する(S34)。図22を参照して、図22(a)の新規ホストOS用ページ情報テーブル304aのうち、ホストOS用のエントリを示す白地の「使用中」/「未使用」(ぺージ番号1、6、8、…、m)を抽出して並べる。これにより、新規ゲストOS用ページ情報テーブル612(図22(b))が生成される。
図17を参照して、メモリ情報変換部540は、新規ゲストOS用ページ情報テーブル612の物理アドレスに連番の仮想物理アドレスを対応させることにより、新規ゲストOS用物理アドレス変換表611を生成する(S37)。図23を参照して、新規ゲストOS用ページ情報テーブル612の物理アドレス(この例ではページ番号に直接対応)1、6、8、…、mに対応して、連番の仮想物理アドレスA0、A1、A2、…、Anを対応させて、新規ゲストOS用物理アドレス変換表611が生成されている。
以上のようにして、新規ゲスト(ホストOS200)用の新規ゲストOS用物理アドレス変換表611及び新規ゲストOS用ページ情報テーブル612が完成する(以上、S18に対応)。
ここで、S25における、論理アドレステーブル203を書き換えて、新規ゲストOS用論理アドレステーブル203aとする工程について説明する。メモリ情報入れ替え部440は、論理アドレステーブル203に記載されている物理アドレス218を、新規ゲストOS用物理アドレス変換表611に記載されている仮想物理アドレスに書き換える。図24(a)、(b)は、それぞれ論理アドレステーブル203及び新規ゲストOS用物理アドレス変換表611を示す。ここで、論理アドレステーブル203の物理アドレスB0、B1、…、Bnを、新規ゲストOS用物理アドレス変換表611の仮想物理アドレスA0、A1、…、Anに書き換えることで、新規ゲストOS用論理アドレステーブル203a(図24(c))が生成される。
次に、デバイス情報変換部550の動作の詳細について説明する。
図18は、S19におけるデバイス情報変換部の動作を示すフローチャートである。図25は、S19における新規ホストOS用デバイス一覧311aの生成過程を示す一例である。図26は、S20において生成された新規ゲストOS用デバイス一覧614を示す一例である。
図18を参照して、デバイス情報変換部550は、S16で取得したホストOS200のデバイス一覧209(図25(a))からエントリを一つ取得する(S41)。エントリは、デバイス番号221デバイス名223及びデバイス操作関数222を含む。エントリを取得できた場合(S42:YES)、デバイス対応テーブル313(図25(b))から、そのエントリ中のデバイス名223と一致するホストOSデバイス名322を検索する(S43)。一致するものが発見されたら(S44:YES)、デバイス一覧311(図25(c))において、当該ホストOSデバイス名322に対応するゲストOSデバイス名323と等しいデバイス名328とデバイス操作関数327とを、デバイス一覧209における当該デバイス名221とデバイス操作関数222とに置き換える。図25の例では、デバイス一覧209のデバイス名(223)Lh2,Lh4が、デバイス対応テーブル313のホストOSデバイス名(322)Lh2,Lh4と一致する。従って、デバイス一覧311において、そのホストOSデバイス名(322)Lh2,Lh4に対応するゲストOSデバイス名(323)Lg2、Lg3と等しいデバイス名(328)Lg2、Lg3及び、デバイス操作関数(327)Fg2,Fg3を、当該デバイス名(223)Lh2,Lh4及びデバイス操作関数(222)Fh2,Fh4に置き換える。それと共に、デバイス名の一致したゲストOS300のデバイスドライバ315を削除し、新たにホストOS200のデバイスドライバ215をデバイスドライバ315として登録する(S45)。
ホストOS200のデバイスにおいて、デバイス名の一致するものが無ければ(S44:NO)、デバイス一覧311において、デバイス一覧209における一致するものが無いデバイス名221及びデバイス操作関数222を、それぞれデバイス名328及び対応するデバイス操作関数327に登録する。図25の例では、デバイス一覧209のデバイス名(223)Lh1、Lh3、Lhqについて、デバイス対応テーブル313に一致するものが無い。従って、デバイス一覧311において、一致するものが無いデバイス名(223)Lh1、Lh3、Lhq及びデバイス操作関数(222)Fh1、Fh3、Fhqを、それぞれデバイス名328a及び対応するデバイス操作関数327aに登録する。それと共に、新規にホストOS200のデバイスドライバ215をデバイスドライバ315として登録する(S46)。この作業をすべてのエントリに対して行った時点(S42:NO)で、ゲストOS300用のデバイス一覧311が新規ホストOS用デバイス一覧311aに書き換わる(以上、S19にに対応)。
S20についてもゲストとホストとを入れ替えて、図18の動作と同様にすれば、図26のような新規ゲストOS用デバイス一覧614を作成することが出来る。すなわち、デバイス情報変換部550は、デバイス一覧311のデバイス名(328)Lg2,Lg3が、デバイス対応テーブル313のゲストOSデバイス名(323)Lg2,Lg3と一致する。従って、デバイス一覧209において、そのゲストOSデバイス名(323)Lg2,Lg3に対応するホストOSデバイス名(322)Lh2、Lh4と等しいデバイス名(223)Lh2、Lh4及び、デバイス操作関数(222)Fh2,Fh4を、当該デバイス名(328)Lg2,Lg3及びデバイス操作関数(327)Fg2,Fg3に置き換える。このように、S16でホストOS状態退避領域620から取得したデバイス一覧209に置き換えを実行することで、新規ゲストOS用デバイス一覧614を生成する。それと共に、デバイス名の一致したホストOS200のデバイスドライバ215を削除し、新たにゲストOS300のデバイスドライバ315をデバイスドライバ215として登録する。
また、新規ゲストOS用デバイス対応テーブル613については、既述のようにデバイス対応テーブル313のホスト側のデータ322とゲスト側のデータ323を入れ替えることで新たにを生成する。
次に、ホストプロセス生成部570の動作の詳細について説明する。
図19は、S21におけるホストプロセス生成部の動作を示すフローチャートである。ホストプロセス生成部570は、新たにホストとなるゲストOS300の親プロセスのプロセス情報を、新たにゲストとなるホストOS200の子プロセスのプロセス情報としてコピーする(S51)。次に、子プロセスのメモリ情報(ページテーブル)を、ホストOS200のメモリ情報(新規ゲストOS用論理アドレステーブル203a、新規ゲストOS用物理アドレス変換表611、新規ゲストOS用ページ情報テーブル612)に基づいて書き換える(S52)。次に、子プロセスのレジスタ情報を、コンテキスト情報取得部580が取得したコンテキスト情報227に基づいて書き換える(S53)。最後に、スケジューリングキューに当該プロセスを登録する(S54)。
通常のプロセス生成手順は、S51と一緒に親プロセスのメモリ空間(メモリ情報)も子プロセスのメモリ空間(メモリ情報)としてコピーする。この動作によって、親プロセスとまったく同一の動作を行う子プロセスが生成されるが、親プロセスと子プロセス(新しく生成されたプロセス)では、プロセス情報の一部分が異なるため、親プロセスと子プロセスは違うプロセスとして認識することができる。プロセス生成後、子プロセスは新たにプログラムをメモリ上にロードすることによって、新たなプログラムを実行することができる。
しかし、本発明におけるホストプロセス生成部570は、新たなプログラムをメモリ上にロードする代わりに、既存のホストOSのメモリをマップすることによって、新たなプログラムをロードしたように見せかけるところが、通常のプロセス生成とは異なる点である。
本発明によれば、ゲストOSを停止せずに、ホストOSにセキュリティーパッチを充てるといった用途に適用できる。ホストOSにセキュリティーホールが発見された場合、セキュリティーホールを塞ぐためのパッチを当てなければならない。一方、ゲストOS上では、重要なアプリケーションを実行中でありゲストOS上のアプリケーションを停止するのは避けたい。このような場合に、本発明を使ってゲストOSとホストOSのハードウェア依存関係を切り替えることによって、ゲストOSは継続して動作し続け、ホストOSにパッチ適用後再起動することができる。
図1は、仮想計算機システムの概要を示す構成図である。 図2は、ホストOSのコンテキストスイッチのを示す図である。 図3は、ゲストOSからホストOSへのコンテキストスイッチの仕組みを説明する図である。 図4は、仮想計算機システムにおけるメモリ管理を説明する図である。 図5は、ホストOSにおける論理アドレステーブルと、物理メモリ、及びページ情報テーブルの関係を表す図である。 図6は、ゲストOSにおける論理アドレステーブル、ページ情報テーブル、物理アドレス変換表、及びゲストOS領域の関係を表す図である。 図7は仮想計算機システムにおけるデバイス管理を説明する図である。 図8は、デバイス一覧を示す表である。 図9は、デバイス情報テーブルを示す表である。 図10は、ゲストOSのデバイス対応テーブルを示す表である。 図11は、本発明のOS切り替えシステムを適用した仮想計算機システムの実施の形態を示す概略構成図である。 図12は、本発明のOS切り替えシステムの実施の形態の構成を示すブロック図である。 図13は、OS状態退避領域を示すブロック図である。 図14は、本発明のOS切り替えシステムの実施の形態の動作を示すフローチャートである。 図15は、本発明のOS切り替えシステムの実施の形態の動作を示すフローチャートである。 図16は、本発明のOS切り替えシステムの実施の形態の動作を示すフローチャートである。 図17は、S17、S18におけるメモリ情報変換部の動作を示すフローチャートである。 図18は、S19、S20におけるデバイス情報変換部の動作を示すフローチャートである。 図19は、S21におけるホストプロセス生成部の動作を示すフローチャートである。 図20は、S17における新規ホストOS用ページ情報テーブルの生成過程を示す一例である。 図21は、S17における新規ホストOS用論理アドレステーブルの生成過程を示す一例である。 図22は、S18における新規ゲストOS用ページ情報テーブルの生成過程を示す一例である。 図23は、S18において生成される新規ゲストOS用物理アドレス変換表を示す一例である。 図24は、S18における新規ゲストOS用論理アドレステーブルの生成過程を示す一例である。 図25は、S19における新規ホストOS用デバイス一覧の生成過程を示す一例である。 図26は、S20において生成された新規ゲストOS用デバイス一覧を示す一例である。
符号の説明
100、100a ハードウェア
200、200a ホストOS
300、300a ゲストOS
301−1〜301−n ゲストOSアプリケーション
201−1〜201−m ホストOSアプリケーション
303 論理アドレステーブル(ゲストOS)
303a 新規ホストOS用論理アドレステーブル
304 ページ情報テーブル(ゲストOS)
304a 新規ホストOS用ページ情報テーブル
305 アドレス変換部(ゲストOS)
306 物理アドレス変換表(ゲストOS)
307 物理アドレス変換部(ゲストOS)
308 メモリ取得部(ゲストOS)
309 空き領域管理部(ゲストOS)
310 空き領域リスト(ゲストOS)
203 論理アドレステーブル(ホストOS)
203a 新規ゲストOS用論理アドレステーブル
204 ページ情報テーブル(ホストOS)
205 アドレス変換部(ホストOS)
206 メモリ取得部(ホストOS)
207 空き領域管理部(ホストOS)
208 空き領域リスト(ホストOS)
101 物理メモリ
102 ゲストOS領域
311 デバイス一覧(ゲストOS)
311a 新規ホストOS用デバイス一覧
312 デバイス情報テーブル(ゲストOS)
313 デバイス対応テーブル(ゲストOS)
314 デバイス抽象化部(ゲストOS)
315 デバイスドライバ(ゲストOS)
316 デバイス入出力送信部(ゲストOS)
209 デバイス一覧(ホストOS)
210 デバイス情報テーブル(ホストOS)
211 デバイス入出力受信部(ホストOS)
212 デバイス抽象化部(ホストOS)
213 デバイスドライバ(ホストOS)
214 I/Oポート(ホストOS)
215 リソース構造体(ホストOS)
216 リソース管理部(ホストOS)
103 デバイスインターフェイス
104 デバイスコントローラ
105 デバイス
106 DMAC
217 論理アドレス(ホストOS)
218 物理アドレス(ホストOS)
219 ページ番号(ホストOS)
220 使用中フラグ(ホストOS)
107 ページ
317 論理アドレス(ゲストOS)
318 仮想物理アドレス(ゲストOS)
319 変換表エントリ(ゲストOS)
320 ページ番号(ゲストOS)
321 使用中フラグ(ゲストOS)
221 デバイス番号
222 デバイス操作関数
223 デバイス名
224 使用者情報
225 利用カウンタ
226 デバイス状態
322 ホストOSのデバイス名
323 ゲストOSのデバイス名
500 メモリ情報退避部
510 デバイス情報退避部
520 メモリ情報取得部
530 デバイス情報取得部
540 メモリ情報変換部
550 デバイス情報変換部
560 実行命令切り替え部
570 コンテキストスイッチ部
400 メモリ情報退避部
410 デバイス情報退避部
420 メモリ情報取得部
430 デバイス情報取得部
440 メモリ情報入れ替え部
450 デバイス情報入れ替え部
460 コンテキストスイッチ部
470 実行命令切り替え部
600 OS状態退避部
610 ゲストOS状態退避領域
620 ホストOS状態退避領域
611 新規ゲストOS用物理アドレス変換表
612 新規ゲストOS用ページ情報テーブル
613 新規ゲストOS用デバイス対応テーブル
614 新規ゲストOS用デバイス一覧

Claims (19)

  1. ホストOSと、
    前記ホストOS上で動作するゲストOSと
    を具備し、
    前記ゲストOSをホストに、前記ホストOSをゲストにそれぞれ切り替えるとき、
    前記ゲストOSが、前記ゲストOSのゲストメモリ管理情報と前記ホストOSのホストメモリ管理情報とに基づいて、前記切り替え後の前記ホストOSのメモリ管理情報となる新規ゲストメモリ管理情報と、前記切り替え後の前記ゲストOSのメモリ管理情報となる新規ホストメモリ管理情報とを生成し、
    前記ゲストOSが、前記ゲストメモリ管理情報を前記新規ホストメモリ管理情報に置き換え、
    前記ホストOSが、前記ホストメモリ管理情報を前記新規ゲストメモリ管理情報に置き換え、
    前記ホストOS及び前記ゲストOSが、実行命令を切り替える
    OS切り替えシステム。
  2. 請求項1に記載のOS切り替えシステムにおいて、
    前記ゲストOSが、前記ゲストOSのゲストデバイス管理情報と前記ホストOSのホストデバイス管理情報とに基づいて、前記切り替え後の前記ホストOSのデバイス管理情報となる新規ゲストデバイス管理情報と、前記切り替え後の前記ゲストOSのデバイス管理情報となる新規ホストデバイス管理情報を生成し、
    前記ゲストOSが、前記ゲストデバイス管理情報を前記新規ゲストデバイス管理情報に置き換え、
    前記ホストOSが、前記ホストデバイス管理情報を前記新規ホストデバイス管理情報に置き換える
    OS切り替えシステム。
  3. 請求項1に記載のOS切り替えシステムにおいて、
    前記ゲストOSは、
    前記ホストメモリ管理情報に含まれるホストページ情報テーブルとホスト論理アドレステーブルとに基づいて、前記新規ゲストメモリ管理情報に含まれる新規ゲストページ情報テーブル、新規ゲスト物理アドレス変換表及び新規ゲスト論理アドレステーブルを生成するメモリ情報変換部540を備え、
    前記ホストページ情報テーブルは、物理アドレスと当該物理アドレスの使用状況との対応を示し、
    前記ホスト論理アドレステーブルは、論理アドレスと前記物理アドレスとの対応を示し、
    前記新規ゲストページ情報テーブルは、前記ホストページ情報テーブルにおける前記ホストOSの使用可能な前記物理アドレスと当該物理アドレスの使用状況との対応を示し、
    前記新規ゲスト物理アドレス変換表は、前記新規ゲストページ情報テーブルにおける前記物理アドレスと仮想物理アドレスとの対応を示し、
    前記新規ゲスト論理アドレステーブルは、前記ホスト論理アドレステーブルにおける前記論理アドレスと前記新規ゲスト物理アドレス変換表における前記仮想物理アドレスとの対応を示す
    OS切り替えシステム。
  4. 請求項3に記載のOS切り替えシステムにおいて、
    前記メモリ情報変換部540は、更に、前記ホストページ情報テーブルと、前記ゲストメモリ管理情報に含まれるゲスト論理アドレステーブル及びゲスト物理アドレス変換表とに基づいて、前記新規ホストメモリ管理情報に含まれる新規ホスト論理アドレステーブル及び新規ホストページ情報テーブルを生成し、
    前記ゲスト論理アドレステーブルは、前記ゲストOSにおける論理アドレスと仮想物理アドレスとの対応を示し、
    前記ゲスト物理アドレス変換表は、前記ゲストOSにおける前記仮想物理アドレスと物理アドレスとの対応を示し、
    前記新規ホスト論理アドレステーブルは、前記ゲスト論理アドレステーブルにおける前記論理アドレスと前記ゲスト物理アドレス変換表における前記物理アドレスとの対応を示し、
    前記新規ホストページ情報テーブルは、前記ホストページ情報テーブルを前記ゲストOS用に変更したものである
    OS切り替えシステム。
  5. 請求項2に記載のOS切り替えシステムにおいて、
    前記ゲストOSは、更に、
    前記ゲストデバイス管理情報に含まれるゲストデバイス対応テーブル及びゲストデバイス一覧と、前記ホストデバイス管理情報に含まれるホストデバイス一覧とに基づいて、前記新規ゲストデバイス管理情報に含まれる新規ゲストデバイス対応テーブル及び新規ゲストデバイス一覧を生成するデバイス情報変換部550を備え、
    前記ゲストデバイス対応テーブルは、前記ゲストOSの認識するデバイスと前記ホストOSの認識するデバイスとの対応を示し、
    前記ゲストデバイス一覧は、前記ゲストOSの使用可能なデバイスに関する情報を示し、
    前記ホストデバイス一覧は、前記ホストOSの使用可能なデバイスに関する情報を示し、
    前記新規ゲストデバイス一覧は、前記ホストデバイス一覧のデバイスのうち前記ゲストデバイス対応テーブルにあるものについて、当該デバイスの前記デバイスに関する情報で、前記ゲストデバイス一覧を更新し、前記ホストデバイス一覧の残りのデバイスの前記デバイスに関する情報を追加したものであり、
    前記新規ゲストデバイス対応テーブルは、前記ゲストデバイス対応テーブルにおける前記ゲストOSの認識するデバイスと前記ホストOSの認識するデバイスとを入れ替えたものである
    OS切り替えシステム。
  6. 請求項1に記載のOS切り替えシステムにおいて、
    前記ゲストOSは、前記ゲストOSの第1プロセスのプロセス情報を前記ホストOSの第2プロセスのプロセス情報とし、前記第2プロセスのメモリ情報を新規ゲストメモリ管理情報に基づいて書き換え、前記第2プロセスのレジスタ情報を前記ホストOSのレジスタ情報に書き換え、スケジューリングキューに前記第2プロセスを登録するホストプロセス生成部を備える
    OS切り替えシステム。
  7. 請求項1乃至6のいずれか一項に記載のOS切り替えシステムと、
    前記OS切り替えシステムに使用されるハードウェアと
    を具備する
    仮想計算機システム。
  8. (a)ゲストOSをホストに、ホストOSをゲストにそれぞれ切り替えるとき、前記ゲストOSが、前記ゲストOSのゲストメモリ管理情報及び前記ホストOSのホストメモリ管理情報に基づいて、前記切り替え後の前記ホストOSのメモリ管理情報となる新規ゲストメモリ管理情報と、前記切り替え後の前記ゲストOSのメモリ管理情報となる新規ホストメモリ管理情報とを生成するステップと、
    (b)前記ゲストOSが、前記ゲストメモリ管理情報を前記新規ホストメモリ管理情報に置き換えるステップと、
    (c)前記ホストOSが、前記ホストメモリ管理情報を前記新規ゲストメモリ管理情報に置き換えるステップと、
    (d)前記ホストOS及び前記ゲストOSが、実行命令を切り替えるステップと
    を具備する
    OS切り替え方法。
  9. 請求項8に記載のOS切り替え方法において、
    (e)前記ゲストOSが、前記ゲストOSのゲストデバイス管理情報と前記ホストOSのホストデバイス管理情報とに基づいて、前記切り替え後の前記ホストOSのデバイス管理情報となる新規ゲストデバイス管理情報と、前記切り替え後の前記ゲストOSのデバイス管理情報となる新規ホストデバイス管理情報を生成するステップと、
    (f)前記ゲストOSが、前記ゲストデバイス管理情報を前記新規ゲストデバイス管理情報に置き換えるステップと、
    (g)前記ホストOSが、前記ホストデバイス管理情報を前記新規ホストデバイス管理情報に置き換えるステップと
    を更に具備する
    OS切り替え方法。
  10. 請求項8に記載のOS切り替え方法において、
    前記(a)ステップは、
    (a1)前記ホストメモリ管理情報に含まれるホストページ情報テーブルとホスト論理アドレステーブルとに基づいて、前記新規ゲストメモリ管理情報に含まれる新規ゲストページ情報テーブル、新規ゲスト物理アドレス変換表及び及び新規ゲスト論理アドレステーブルを生成するステップを備え、
    前記ホスト論理アドレステーブルは、論理アドレスと前記物理アドレスとの対応を示し、
    前記新規ゲストページ情報テーブルは、前記ホストページ情報テーブルにおける前記ホストOSの使用可能な前記物理アドレスと当該物理アドレスの使用状況との対応を示し、
    前記新規ゲスト物理アドレス変換表は、前記新規ゲストページ情報テーブルにおける前記物理アドレスと仮想物理アドレスとの対応を示し、
    前記新規ゲスト論理アドレステーブルは、前記ホスト論理アドレステーブルにおける前記論理アドレスと前記新規ゲスト物理アドレス変換表における前記仮想物理アドレスとの対応を示す
    OS切り替え方法。
  11. 請求項10に記載のOS切り替え方法において、
    前記(a)ステップは、
    (a2)前記ホストページ情報テーブルと、前記ゲストメモリ管理情報に含まれるゲスト論理アドレステーブル及びゲスト物理アドレス変換表とに基づいて、前記新規ホストメモリ管理情報に含まれる新規ホスト論理アドレステーブル及び新規ホストページ情報テーブルを生成するステップを更に備え、
    前記ゲスト論理アドレステーブルは、前記ゲストOSにおける論理アドレスと仮想物理アドレスとの対応を示し、
    前記ゲスト物理アドレス変換表は、前記ゲストOSにおける前記仮想物理アドレスと物理アドレスとの対応を示し、
    前記新規ホスト論理アドレステーブルは、前記ゲスト論理アドレステーブルにおける前記論理アドレスと前記ゲスト物理アドレス変換表における前記物理アドレスとの対応を示し、
    前記新規ホストページ情報テーブルは、前記ホストページ情報テーブルを前記ゲストOS用に変更したものである
    OS切り替え方法。
  12. 請求項9に記載のOS切り替え方法において、
    前記(e)ステップは、
    (e1)前記ゲストデバイス管理情報に含まれるゲストデバイス対応テーブル及びゲストデバイス一覧と、前記ホストデバイス管理情報に含まれるホストデバイス一覧とに基づいて、前記新規ゲストデバイス管理情報に含まれる新規ゲストデバイス対応テーブル及び新規ゲストデバイス一覧を生成するステップを備え、
    前記ゲストデバイス対応テーブルは、前記ゲストOSの認識するデバイスと前記ホストOSの認識するデバイスとの対応を示し、
    前記ゲストデバイス一覧は、前記ゲストOSの使用可能なデバイスに関する情報を示し、
    前記ホストデバイス一覧は、前記ホストOSの使用可能なデバイスに関する情報を示し、
    前記新規ゲストデバイス一覧は、前記ホストデバイス一覧のデバイスのうち前記ゲストデバイス対応テーブルにあるものについて、当該デバイスの前記デバイスに関する情報で、前記ゲストデバイス一覧を更新し、前記ホストデバイス一覧の残りのデバイスの前記デバイスに関する情報を追加したものであり、
    前記新規ゲストデバイス対応テーブルは、前記ゲストデバイス対応テーブルにおける前記ゲストOSの認識するデバイスと前記ホストOSの認識するデバイスとを入れ替えたものである
    OS切り替え方法。
  13. 請求項8に記載のOS切り替え方法において、
    前記(d)ステップは、
    (d1)前記ゲストOSの第1プロセスのプロセス情報を、前記ホストOSの第2プロセスのプロセス情報とするステップと、
    (d2)前記第2プロセスのメモリ情報を新規ゲストメモリ管理情報に基づいて書き換えるステップと、
    (d3)前記第2プロセスのレジスタ情報を前記ホストOSのレジスタ情報に書き換えるステップと、
    (d4)スケジューリングキューに前記第2プロセスを登録するステップと
    を備える
    OS切り替え方法。
  14. (a)ゲストOSをホストに、ホストOSをゲストにそれぞれ切り替えるとき、前記ゲストOSが、前記ゲストOSのゲストメモリ管理情報及び前記ホストOSのホストメモリ管理情報に基づいて、前記切り替え後の前記ホストOSのメモリ管理情報となる新規ゲストメモリ管理情報と、前記切り替え後の前記ゲストOSのメモリ管理情報となる新規ホストメモリ管理情報とを生成するステップと、
    (b)前記ゲストOSが、前記ゲストメモリ管理情報を前記新規ホストメモリ管理情報に置き換えるステップと、
    (c)前記ホストOSが、前記ホストメモリ管理情報を前記新規ゲストメモリ管理情報に置き換えるステップと、
    (d)前記ホストOS及び前記ゲストOSが、実行命令を切り替えるステップと
    を具備するOS切り替え方法をコンピュータに実行させるプログラム。
  15. 請求項14に記載のプログラムにおいて、
    (e)前記ゲストOSが、前記ゲストOSのゲストデバイス管理情報と前記ホストOSのホストデバイス管理情報とに基づいて、前記切り替え後の前記ホストOSのデバイス管理情報となる新規ゲストデバイス管理情報と、前記切り替え後の前記ゲストOSのデバイス管理情報となる新規ホストデバイス管理情報を生成するステップと、
    (f)前記ゲストOSが、前記ゲストデバイス管理情報を前記新規ゲストデバイス管理情報に置き換えるステップと、
    (g)前記ホストOSが、前記ホストデバイス管理情報を前記新規ホストデバイス管理情報に置き換えるステップと
    を更に具備する
    プログラム。
  16. 請求項14に記載のプログラムにおいて、
    前記(a)ステップは、
    (a1)前記ホストメモリ管理情報に含まれるホストページ情報テーブルとホスト論理アドレステーブルとに基づいて、前記新規ゲストメモリ管理情報に含まれる新規ゲストページ情報テーブル、新規ゲスト物理アドレス変換表及び及び新規ゲスト論理アドレステーブルを生成するステップを備え、
    前記ホスト論理アドレステーブルは、論理アドレスと前記物理アドレスとの対応を示し、
    前記新規ゲストページ情報テーブルは、前記ホストページ情報テーブルにおける前記ホストOSの使用可能な前記物理アドレスと当該物理アドレスの使用状況との対応を示し、
    前記新規ゲスト物理アドレス変換表は、前記新規ゲストページ情報テーブルにおける前記物理アドレスと仮想物理アドレスとの対応を示し、
    前記新規ゲスト論理アドレステーブルは、前記ホスト論理アドレステーブルにおける前記論理アドレスと前記新規ゲスト物理アドレス変換表における前記仮想物理アドレスとの対応を示す
    プログラム。
  17. 請求項16に記載のプログラムにおいて、
    前記(a)ステップは、
    (a2)前記ホストページ情報テーブルと、前記ゲストメモリ管理情報に含まれるゲスト論理アドレステーブル及びゲスト物理アドレス変換表とに基づいて、前記新規ホストメモリ管理情報に含まれる新規ホスト論理アドレステーブル及び新規ホストページ情報テーブルを生成するステップを更に備え、
    前記ゲスト論理アドレステーブルは、前記ゲストOSにおける論理アドレスと仮想物理アドレスとの対応を示し、
    前記ゲスト物理アドレス変換表は、前記ゲストOSにおける前記仮想物理アドレスと物理アドレスとの対応を示し、
    前記新規ホスト論理アドレステーブルは、前記ゲスト論理アドレステーブルにおける前記論理アドレスと前記ゲスト物理アドレス変換表における前記物理アドレスとの対応を示し、
    前記新規ホストページ情報テーブルは、前記ホストページ情報テーブルを前記ゲストOS用に変更したものである
    プログラム。
  18. 請求項15に記載のプログラムにおいて、
    前記(e)ステップは、
    (e1)前記ゲストデバイス管理情報に含まれるゲストデバイス対応テーブル及びゲストデバイス一覧と、前記ホストデバイス管理情報に含まれるホストデバイス一覧とに基づいて、前記新規ゲストデバイス管理情報に含まれる新規ゲストデバイス対応テーブル及び新規ゲストデバイス一覧を生成するステップを備え、
    前記ゲストデバイス対応テーブルは、前記ゲストOSの認識するデバイスと前記ホストOSの認識するデバイスとの対応を示し、
    前記ゲストデバイス一覧は、前記ゲストOSの使用可能なデバイスに関する情報を示し、
    前記ホストデバイス一覧は、前記ホストOSの使用可能なデバイスに関する情報を示し、
    前記新規ゲストデバイス一覧は、前記ホストデバイス一覧のデバイスのうち前記ゲストデバイス対応テーブルにあるものについて、当該デバイスの前記デバイスに関する情報で、前記ゲストデバイス一覧を更新し、前記ホストデバイス一覧の残りのデバイスの前記デバイスに関する情報を追加したものであり、
    前記新規ゲストデバイス対応テーブルは、前記ゲストデバイス対応テーブルにおける前記ゲストOSの認識するデバイスと前記ホストOSの認識するデバイスとを入れ替えたものである
    プログラム。
  19. 請求項14に記載のプログラムにおいて、
    前記(d)ステップは、
    (d1)前記ゲストOSの第1プロセスのプロセス情報を、前記ホストOSの第2プロセスのプロセス情報とするステップと、
    (d2)前記第2プロセスのメモリ情報を新規ゲストメモリ管理情報に基づいて書き換えるステップと、
    (d3)前記第2プロセスのレジスタ情報を前記ホストOSのレジスタ情報に書き換えるステップと、
    (d4)スケジューリングキューに前記第2プロセスを登録するステップと
    を備える
    プログラム。
JP2006164829A 2006-06-14 2006-06-14 Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム Expired - Fee Related JP4743529B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006164829A JP4743529B2 (ja) 2006-06-14 2006-06-14 Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006164829A JP4743529B2 (ja) 2006-06-14 2006-06-14 Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム

Publications (2)

Publication Number Publication Date
JP2007334572A true JP2007334572A (ja) 2007-12-27
JP4743529B2 JP4743529B2 (ja) 2011-08-10

Family

ID=38934007

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006164829A Expired - Fee Related JP4743529B2 (ja) 2006-06-14 2006-06-14 Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム

Country Status (1)

Country Link
JP (1) JP4743529B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009217395A (ja) * 2008-03-07 2009-09-24 Nec Corp 仮想サーバソフトウェア更新システム、仮想サーバソフトウェア更新方法、サーバ、及びサーバ用プログラム
WO2012001787A1 (ja) * 2010-06-30 2012-01-05 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム
CN101493786B (zh) * 2008-01-22 2012-07-04 联想(北京)有限公司 一种计算机的虚拟机系统及设备访问方法
WO2014076799A1 (ja) * 2012-11-15 2014-05-22 三菱電機株式会社 仮想計算機システム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02297636A (ja) * 1989-05-11 1990-12-10 Nec Corp 仮想計算機システムにおけるos制御方式
JPH0375832A (ja) * 1989-08-17 1991-03-29 Nec Corp 仮想計算機制御方式
JP2001216171A (ja) * 2000-01-31 2001-08-10 Toshiba Corp 仮想計算機システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02297636A (ja) * 1989-05-11 1990-12-10 Nec Corp 仮想計算機システムにおけるos制御方式
JPH0375832A (ja) * 1989-08-17 1991-03-29 Nec Corp 仮想計算機制御方式
JP2001216171A (ja) * 2000-01-31 2001-08-10 Toshiba Corp 仮想計算機システム

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101493786B (zh) * 2008-01-22 2012-07-04 联想(北京)有限公司 一种计算机的虚拟机系统及设备访问方法
JP2009217395A (ja) * 2008-03-07 2009-09-24 Nec Corp 仮想サーバソフトウェア更新システム、仮想サーバソフトウェア更新方法、サーバ、及びサーバ用プログラム
WO2012001787A1 (ja) * 2010-06-30 2012-01-05 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム
CN102971709A (zh) * 2010-06-30 2013-03-13 富士通株式会社 信息处理装置、信息处理方法以及信息处理程序
JPWO2012001787A1 (ja) * 2010-06-30 2013-08-22 富士通株式会社 情報処理装置、情報処理方法、および情報処理プログラム
WO2014076799A1 (ja) * 2012-11-15 2014-05-22 三菱電機株式会社 仮想計算機システム
CN104823171A (zh) * 2012-11-15 2015-08-05 三菱电机株式会社 虚拟计算机系统
JP5881852B2 (ja) * 2012-11-15 2016-03-09 三菱電機株式会社 仮想計算機システム

Also Published As

Publication number Publication date
JP4743529B2 (ja) 2011-08-10

Similar Documents

Publication Publication Date Title
JP5005111B2 (ja) 複数の論理パーティションと自己仮想化入出力デバイスとのインターフェース接続
US9836409B2 (en) Seamless application access to hybrid main memory
JP5214611B2 (ja) 仮想マシン環境におけるゲスト間での情報の共有
US7631147B2 (en) Efficient flushing of translation lookaside buffers in a multiprocessor environment
US8505006B1 (en) Resource management in virtual machines using dynamic table for performing resource queries
JP5405799B2 (ja) 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
JP4639233B2 (ja) プロセッサ・リソースの仮想化のためのシステムおよび方法
US20120254865A1 (en) Hypervisor replacing method and information processing device
JP5085180B2 (ja) 情報処理装置およびアクセス制御方法
US20120303913A1 (en) Transparent file system migration to a new physical location
US20130145086A1 (en) Processor-bus-connected flash storage module
JP2019016135A (ja) 情報処理システム、情報処理システムの制御プログラム及び情報処理システムの制御方法
US7558724B2 (en) Operation region describing a virtual device
US10162657B2 (en) Device and method for address translation setting in nested virtualization environment
JP2008146566A (ja) 計算機、仮想デバイスの制御方法およびそのプログラム
JP2004326801A (ja) ファイルのコピー・オン・ライトを実施する方法、システム、およびコンピュータ・プログラム
KR100515229B1 (ko) 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템
JP6242502B2 (ja) 仮想計算機システムの制御方法及び仮想計算機システム
JP4743529B2 (ja) Os切り替えシステム、仮想計算機システム、os切り替え方法及びos切り替え用プログラム
US10162663B2 (en) Computer and hypervisor-based resource scheduling method
US12086084B2 (en) IOMMU-based direct memory access (DMA) tracking for enabling live migration of virtual machines (VMS) using passthrough physical devices
JP5584811B2 (ja) 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
US20230214249A1 (en) Multiple reader/writer mode for containers in a virtualized computing environment
WO2017022014A1 (ja) 仮想計算機システムの制御方法及び仮想計算機システム
JP2000194668A (ja) 計算機システム及び同システムに適用される中間コ―ド実行装置並びに中間コ―ド実行方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090519

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101001

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101007

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110322

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110427

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

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4743529

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees