JP5236010B2 - 効率的な協調型オペレーティングシステム切換えのためのシステム及び方法 - Google Patents

効率的な協調型オペレーティングシステム切換えのためのシステム及び方法 Download PDF

Info

Publication number
JP5236010B2
JP5236010B2 JP2010536897A JP2010536897A JP5236010B2 JP 5236010 B2 JP5236010 B2 JP 5236010B2 JP 2010536897 A JP2010536897 A JP 2010536897A JP 2010536897 A JP2010536897 A JP 2010536897A JP 5236010 B2 JP5236010 B2 JP 5236010B2
Authority
JP
Japan
Prior art keywords
operating system
resume
operating
pause
operating systems
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010536897A
Other languages
English (en)
Other versions
JP2011507070A (ja
Inventor
ドン ツォウ,
ジュン サン,
スティーブ ロンガービーム,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Publication of JP2011507070A publication Critical patent/JP2011507070A/ja
Application granted granted Critical
Publication of JP5236010B2 publication Critical patent/JP5236010B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

関連出願
[0001] 本出願は、同時係属出願、すなわち、本発明の共同譲受人に譲渡された、2007年3月13日に同時に出願された、Secure Operating System Switchingという名称の米国特許出願第11/724,016号明細書に関連する。
発明の分野
[0002] 本発明は、複数のOSの間の効率的な協調型切換えに関する。
発明の背景
[0003] 近年、人々が同一のコンピュータに複数のOSを載せる傾向が見られる。企業サーバの領域では、このような特徴により、IT部門は、1つのサーバを1つのVMに載せることができるようになり、はるかに管理がしやすくなっている。ソフトウェア開発では、様々なOS及び同一OSの様々なバージョンにおいてソフトウェア移植性を開発者がすぐに試すことが可能になる。パーソナルコンピューティングにおいてさえも、人々は、異なるアプリケーションをサポートし、新規OSバージョンを試すために、又は単にダウンロードされたソフトウェアを試すために、複数のOSを使うようになっている。スマートフォンなどの組込み装置上に、人々は、異なる目的のために2つのOSをもっている場合がある。すなわち、1つは私的な使用のためであり、1つは業務使用のためである。
[0004] マルチOSのための有力な技法は仮想マシン(VM)技術であるが、これは元々、メインフレームコンピュータ向けにIBMによって開発された。仮想化技術は一般に、OSとハードウェアとの間にある、しばしばVMM(仮想マシンモニタ)と呼ばれるソフトウェア層を利用する。VMMは、実際のハードウェアを管理し、その上で稼動するOSへの抽象又は仮想ハードウェアビューを提供する。VM技術の実装及び移植は、複雑な作業である。たとえば、ゲストOSをうまくサポートするためには、どの基底装置も、ゲストOSが装置にアクセスするために何らかのやり方で仮想化される必要がある。ますます多くの新規ハードウェアが日々発表されている状況で、この制約は、VMベースの手法の適用性を限定する可能性がある。VM手法により、切換え速度が非常に速くなる。他の手法と比較して、この手法は、多大な開発コストを招き、特にI/O集約型アプリケーションに関しては、ランタイム効率が比較的低い。
[0005] 同時に稼動する複数のOSをアプリケーションが要求しない場合に、こうした問題を克服するための簡易ソリューションが存在する。マルチブートソリューションというものがある。マルチブート手法は本質的に、分割されるハードディスクを除くハードウェア資源をすべて時分割多重化する。切換えは、リブートにより行われる。PowerQuest社製のBootMagicが、このような手法の例である。この製品は、ユーザが、同一のコンピュータ上ではあるが異なるハードディスクパーティション上又は異なるハードドライブ上に複数のOSをインストールすることを可能にする。コンピュータが起動すると、ユーザには、OS選択候補のリストがプロンプト表示される。ユーザは、1つの候補を選択し、コンピュータは、選択されたOSを稼動させる。ユーザは、別のOSを稼動させたい場合、コンピュータをリブートし、スタートアップ中に異なる選択を行う必要がある。Windowsなど、一部のOSは、他のOSインスタンスの存在を好まず、第1のハードドライブの第1のパーティション上に常駐することを強要し得る。Boot magicは、このような一部のOSにそのような錯覚を与えるために、ハードドライバ申請テーブルを修正し、一時的にBIOSさえも修正しなければならなくなる。リブートベースの全手法は、これと本質的に同様である。たとえば、何らかのコンピュータが、複数のOSをサポートすることができるようにするためのブート装置を選択することを可能にする。唯一の違いは、基底実装がハードウェアベースであるか、BIOSベースであるかである。
[0006] マルチブート手法は、開発コストをほとんど発生させず、そのランタイム効率は、単一OSソリューションのものと同程度に高い。マルチブート手法にはただし、極度に遅い切換え速度及び扱いにくい切換えオーバーヘッドという深刻な欠点がある。マルチブートソリューションにおいてあるOSから別のOSに切り換わるのに、数十秒かかることも珍しくない。したがって、このソリューションは、異なるOSの間の、比較的高速であり利便性の高い切換えを必要とするアプリケーションには適していない。
[0007] OS切換えの例が、「Computer system, operating system switching system, operating system mounting method, operating system switching method, storage medium, and program transmission apparatus」という名称の米国特許出願第US20010018717A1号に記載されている。上記出願に記載されているOS切換え手法は、複数のOSをサポートするために、どのハードウェア構成要素を仮想化することも試みない。OS切換えでは、全OSイメージが、分割されたシステムメモリに常駐する。小型OSスイッチャが、あるOSから別のOSへの切換えを可能にする。ハードウェア構成要素を仮想化するのではなく、OSは、稼動する際、システムのハードウェアすべてを見渡して、所有する(システムメモリ及び記憶装置のいくつかの部分のみを管理することを除く)。この編成での切換えは、マルチブート編成での場合よりもはるかに速い。OS1からOS2への切換えは、最初にOS1を休止し、次いで、OS2を再開することによって遂行される。OS切換えの実装では、OSに既に存在する休止/再開電源管理機能を用いる。休止プロセスは、装置状態を保存し、装置の電源を切り、再開プロセスは、装置の電源を入れ、装置状態を復元する。
[0008] 一方、OS切換えの実装は、OSとハードウェアとの間に仮想化層も抽象化層もないので、VMベースの技術よりはるかに簡単である。OSはすべて、固有の速度で効率的に稼動し、新規ハードウェアサポートの問題は、個々の各OS自体に委ねられ、OSスイッチャの一部ではない。
[0009] ただし、現在のOS切換え実装における切換え時間は依然として、VMシステムにおける切換え時間よりもはるかに長い。この長い切換え時間により、一定のアプリケーションシナリオでは、OS切換えの使用が実際的でなくなっている。たとえば、OS#1がOS#2に依拠して、暗号化されたデータを解読する場合、及びこのような復号リクエストが比較的頻繁に起こる場合、長い切換え待ち時間が原因で、OS切換えベースの実装を用いることが不可能である。
[0010] オペレーティングシステム(OS)の切換えを実施する方法及び機器を、本明細書で開示する。一実施形態では、当該方法は、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にするステップを含み、複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されているものであって、複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、第1のオペレーティングシステムと第2のオペレーティングシステムの間で情報を交換するステップと、休止操作を実施することによって第1のオペレーティングシステムを非アクティブにさせるステップと、第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、第2のオペレーティングシステムをアクティブにさせるステップであって、情報が、休止及び再開操作の一方又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含む。
[0011] 本発明は、以下に示す詳細な説明から、及び本発明の様々な実施形態を示す添付の図面から、より完全に理解されよう。ただし、こうした説明及び図面は、具体的な実施形態に本発明を限定するものと捉えるべきではなく、説明及び理解のためだけである。
複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にするプロセスの一実施形態を示すフロー図である。 オペレーティングシステム(OS)切換えシステムの一実施形態を示すブロック図である。 OS切換え中に使われるOS間通信機構の一実施形態の内容を示す図である。 相互通信メッセージの実施形態を示す図である。 相互通信メッセージの実施形態を示す図である。 相互通信メッセージの実施形態を示す図である。 相互通信メッセージの実施形態を示す図である。 相互通信メッセージの実施形態を示す図である。 OS間メッセージインタプリタによって実施される、メッセージを解釈するプロセスの一実施形態を示すフロー図である。 再開コントローラコード内部での装置再開プロセスの一実施形態を示すフロー図である。 装置を休止するプロセスの一実施形態を示すフロー図である。 OS間メッセージジェネレータでメッセージを生成するプロセスの一実施形態を示すフロー図である。 例示的なコンピュータシステムを示すブロック図である。
本発明の詳細な説明
[0012] 複数のOSの間を協調して切り換える方法及び機器について記載する。OS切換えのいくつかの使用法がある。一実施形態の使用例は、2つ以上のOSがインストールされた携帯電話である。1つは、携帯電話のオペレータによって信頼されるOSであり、他のOSは「オープンな」OSである。信頼されるOSと他のOSとの間の切換えは、優れたユーザ経験、及び復号などの特殊な機能性のサポートのために高速である。
[0013] 本明細書に記載する手法には、OS切換え時間の大幅な短縮を含むがそれに限定されない、数多くの利点があり、この利点により、OS切換えが、上述したような適用シナリオ向けの実用的な技術になる。
[0014] 以下の説明では、数多くの細部について記載して、本発明をより完全に説明する。ただし、本発明は、こうした具体的詳細なしで実施できることが、当業者には明らかであろう。他の事例では、公知の構造及び装置を、本発明を分かりにくくするのを避けるために、細部ではなくブロック図の形で示す。
[0015] 後に続く詳細な説明のいくつかの部分は、コンピュータメモリ内のデータビットに対する操作のアルゴリズム及び記号表現という観点で提示される。こうしたアルゴリズム記述及び表現は、データ処理分野の当業者によって、自身の作業の本質を他の当業者に最も効果的に伝えるために用いられる手段である。アルゴリズムとは、本明細書において、及び一般的には、所望の結果につながる、自己矛盾のない一連のステップであると考えられる。こうしたステップは、物理的数量の物理的処置を要求するものである。必ずしもそうではないが、普通、こうした量は、格納し、転送し、結合し、比較し、それ以外の処置をすることが可能な電気又は磁気信号の形をとる。時には、主として一般的使用のために、こうした信号をビット、値、要素、記号、キャラクタ、用語、数字などと呼ぶのが好都合であることが分かっている。
[0016] ただし、こうした用語及び同様の用語はすべて、適切な物理的数量に関連づけられるべきであり、こうした数量に付与される便宜上のラベルに過ぎないことを心に留めるべきである。以下の考察から明らかなように別段の記載のない限り、説明を通して、たとえば「処理」又は「計算」又は「算出」又は「判定」又は「表示」などの用語を使用する議論は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)数量として表されるデータを操作し、コンピュータシステムメモリ、レジスタ、他のこのような情報格納装置若しくは伝送又は表示装置内の物理的数量として同様に表される他のデータに変換するコンピュータシステム、又は同様の電子計算装置のアクション及びプロセスに言及していることを理解されたい。
[0017] 本発明は、本明細書における操作を実施する機器にも関する。この機器は、必要とされる目的のために特別に構築することができ、若しくはコンピュータに格納されたコンピュータプログラムによって選択的にアクティブ化され又は再構成される汎用コンピュータを備え得る。このようなコンピュータプログラムは、フロッピーディスク、光ディスク、CD−ROM、及び光磁気ディスクを含む任意のタイプのディスク、読出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気若しくは光学カード、又は電子命令の格納に適した任意のタイプの媒体などだが、それに限定されず、コンピュータシステムバスにそれぞれ結合されるコンピュータ可読記憶媒体に格納することができる。
[0018] 本明細書において提示するアルゴリズム及びディスプレイは元々、特定のどのコンピュータにも他の機器にも関するものではない。様々な汎用システムを、本明細書における教示に従ってプログラムとともに使うことができ、又は必要とされる方法ステップを実施するための、より専用の機器を構築することが好都合であることが分かるであろう。こうした様々なシステム用に必要とされる構造は、以下の説明から明らかになる。さらに、本発明は、特定のどのプログラミング言語も参照して記載されない。本明細書に記載する本発明の教示を実装するのに、様々なプログラミング言語を使うことができることが理解されよう。
[0019] マシン可読媒体は、マシン(たとえば、コンピュータ)によって可読な形の情報を格納し又は伝送する任意の機構も含む。たとえば、マシン可読媒体は、読出し専用メモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリ装置、電気、光学、音響又は他の形の伝播信号(たとえば、搬送波、赤外線信号、デジタル信号など)などを含む。
OS切換えの概要
[0020] 同一のコンピューティングシステム上で稼動する多数のオペレーティングシステムの間の効率的な協調型切換えをサポートするシステム及び関連方法。一実施形態では、このシステムは、OSスイッチャ、OS間通信機構、各OS内部の休止コントローラ及び再開コントローラからなる。一実施形態では、各休止コントローラは、OS間通信機構にメッセージを書き込むOS間メッセージジェネレータを含む。各再開コントローラは、OS間通信機構からメッセージを読み出すOS間メッセージインタプリタを含む。同一のコンピューティングシステム上のOSは、OS間メッセージを使って、装置休止/再開プロセスをカスタマイズし、部分に分けられ又は時分割多重化されたシステム資源の割振りを調整する。
[0021] 本明細書における目的のために、OS切換えシステムとは、インストールされた複数のオペレーションシステムを有するコンピューティングシステムである。複数のOSは、同時に活動し、時分割多重化方式で順に実行することができ、システムをリブートする必要なく、ユーザリクエストに、又は予め定義されたイベントに応答して、あるOSから別のOSに切り換えることができる。各OS内には、そのOSからの切換えの前にシステムを休止する休止コントローラ、及びそのOSへの切換えの前にシステムを再開する再開コントローラがある。
[0022] 上述したOS切換えシステムに勝る1つの改善点は、複数のOSの間で情報を交換するOS間通信機構を含むことである。一実施形態では、OS間通信機構とは、インストールされた全OSからアクセス可能であり、あるOSから別のOSへの切換え中に状態を失わないメモリ記憶装置である。
[0023] OS間通信プロトコルによって、OS間通信機構を介して交換される情報の形式が定義される。各OSの休止コントローラ内のOS間メッセージジェネレータは、OS間通信プロトコルに準拠するメッセージをOS間通信機構に書き込む。各OSの再開コントローラ内のOS間メッセージインタプリタは、OS間通信機構からメッセージを読み込む。
[0024] 各OS間メッセージは、メッセージのタイプ、目標装置又は資源、及びメッセージに特有の情報を含むが、それに限定されない情報を伝える。メッセージのタイプは、装置予約リクエストメッセージ、装置未使用メッセージ、装置状態転送メッセージ、資源再分割リクエストメッセージ、及び再分割応答メッセージを含むが、それに限定されない。こうしたメッセージについては、下でより詳しく説明する。
[0025] システム内のOSは、OS間メッセージを介して伝えられる情報を使って、OSの間を効率的に交互に切り換え、OSの間で分割される又は時分割多重化される資源について再交渉する。
[0026] 図1は、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にするプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア(たとえば、回路構成、専用論理など)、ソフトウェア(たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される)、又は両方の組合せを含み得る処理論理によって実施される。
[0027] 図1を参照すると、このプロセスは、複数のオペレーティングシステムのうち、アクティブに稼動されている第1のオペレーティングシステムから始まる(処理ブロック101)。第1のオペレーティングシステムが現時点でアクティブである間に、処理論理は、次にアクティブになるべきである第2のオペレーティングシステムを識別する(処理ブロック102)。
[0028] 処理論理は、両方のオペレーティングシステムによってアクセス可能な記憶エリア(たとえば、OS間通信機構)を使って、第1のオペレーティングシステムと第2のオペレーティングシステムの間で情報を交換する(処理ブロック103)。一実施形態では、情報は、1つ又は複数のメッセージ(たとえば、OS間メッセージ)を含み、少なくとも1つのこうしたメッセージは、メッセージタイプ、少なくとも1つのメッセージの対象である装置の指示、及びメッセージタイプに関するデータを含む。一実施形態では、メッセージタイプは、装置がオペレーティングシステムによる使用のために予約されることをリクエストするための第1のタイプ、装置がオペレーティングシステムによって決して使われないことを示すための第2のタイプ、2つ以上のオペレーティングシステムの間で装置状態を転送するための第3のタイプ、資源が2つ以上のオペレーティングシステムによって分割されることをリクエストするための第4のタイプ、資源が2つ以上のオペレーティングシステムによって分割されるというリクエストに応答するための第5のタイプからなる群の1つである。一実施形態では、第1及び第2のオペレーティングシステムの少なくとも一方が、この情報を使って、第1のオペレーティングシステムと第2のオペレーティングシステムの間で分割される又は時分割多重化される資源について再交渉する。
[0029] 次に、処理論理は、休止操作を実施することによって、第1のオペレーティングシステムを非アクティブにさせ(処理論理104)、処理論理は、第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、第2のオペレーティングシステムをアクティブにさせる(処理論理105)。情報は、どの操作が休止及び再開操作の一方又は両方の一部として実施されるかを制御する。
[0030] 一実施形態では、休止操作は複数の操作を含み、休止操作の実施は、装置が使われていない場合、こうした操作の1つ又は複数からなるセットを実施することなく起こる。一実施形態では、再開操作は、装置用の再開ルーチンを含み、アクティブになる予定のオペレーティングシステムによる装置の使用が検出されていない限り、再開操作の実施は、装置用の再開ルーチンを呼び出すことなく行われる。
[0031] 一実施形態では、情報は使用情報を含む。一実施形態では、使用情報は、現在アクティブなオペレーティングシステムが装置を使ったかどうかを指定し、ここで、現在アクティブなオペレーティングシステムが装置を使わなかったことを使用情報が示した場合、休止操作は、装置に対応する休止ルーチンを実施することなく完了される。一実施形態では、使用情報は、第2のオペレーティングシステムが装置を使うかどうか指定し、ここで、第2のオペレーティングシステムが装置を使わないことを使用情報が示した場合、再開操作は、装置に対応する再開ルーチンを実施することなく実施される。
[0032] 一実施形態では、情報は装置状態情報を備え、情報の交換は、第1のオペレーティングシステムから第2のオペレーティングシステムへの装置状態情報の送付を含み、装置状態情報は、第1及び第2のオペレーティングシステム両方によって使われると共に第1のオペレーティングシステムと第2のオペレーティングシステムの間を切り換える際に休止されない装置に対応する。
[0033] 一実施形態では、再開操作の実施は、第2のオペレーティングシステムの1つ又は複数のドライバが、ハードウェア装置状態を復元すること、第2のオペレーティングシステム内のカーネルが1つ又は複数のサブシステムの操作を復元し再開し、第2のオペレーティングシステムによる通常動作を再開することを含む。一実施形態では、休止操作の実施は、1つ又は複数のサブシステム及び1つ又は複数のハードウェア装置に関連づけられた状態の保存を備える。
[0034] 効率的な協調型OS切換えシステムの一実施形態。構成要素、OS間通信プロトコルの詳細及びプロトコルメッセージ形式、並びにOS間メッセージの取扱い及び使用法については、後で詳しく説明する。
OS及び切換えシステムの構成要素
[0035] 図2は、OS切換えシステムの一実施形態のブロック図である。構成要素はそれぞれ、ハードウェア(回路構成、専用論理など)、ソフトウェア(たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される)、又は両方の組合せで実装される。
[0036] 図2を参照すると、OSスイッチャ201は、あるOSから別のOSへの切換えを実施するために呼び出されることができる構成要素である。
[0037] 一実施形態では、OS間通信機構202は、1組のレジスタである。一実施形態では、こうしたレジスタの順序は固定され、この順序は、全OSの間で共有される。別の実施形態では、OS間通信機構202は、全OSにとってアクセス可能なメモリの一部分である。
[0038] 3つのOS論理メモリブロック2031〜3を示してあり、それぞれが、休止コントローラ(2041〜3)及び再開コントローラ(2061〜3)を有する。この図では3つのOSを示しているが、OS切換えシステムは、インストールされた2つ以上のOSを有してもよい。また、OSスイッチャ201は、OSから独立したメモリエリア内にあるものとして図示してあるが、OS切換えコードは、OSスイッチャを含む独立したメモリエリアが必要とされなくなるように、個々の各OSに統合することができることが、平均的な知識を有する当業者には容易に理解可能であろう。
[0039] 各OS内の休止コントローラ2041〜3はそれぞれ、OSから切り換える前にシステムを休止し、アプリケーション及び装置ドライバへの休止信号の送付、並びにいくつかの装置の電源オフなどのタスクを実施する。再開コントローラ2041〜3はそれぞれ、OS間通信機構202にOS間メッセージを書き込むOS間メッセージジェネレータ2051〜3をそれぞれ含む。
[0040] 各OS内の再開コントローラ(2061〜3)はそれぞれ、そのOSに切り換えた後でシステムを再開し、アプリケーション及び装置ドライバへの再開信号の送付、並びにいくつかの装置の電源オンなどのタスクを実施する。各再開コントローラ2061〜3は、OS間通信機構202からメッセージを読み込み、こうしたメッセージを取り扱うOS間メッセージインタプリタ(それぞれ2071〜3)を含む。
プロトコルメッセージ形式
[0041] OSの間で交換される情報は、OS間通信機構202を経由する。図3は、OS切換え中のOS間通信機構202の一実施形態の内容を示す。図3を参照すると、OS間通信機構の最初の2バイトは、2バイトの切換え記述ワード301を含む。このワードのSRCフィールド310(第1バイトの上位4ビット)は、現在切り換わり中のオペレーティングシステム(これ以降、SRC OS)のIDを示す。DSTフィールド311(第1バイトの下位4ビット)は、それに切り換えられる予定のオペレーティングシステム(これ以降、DST OS)のIDを示す。COUNTフィールド312(第2バイト)は、切換え記述ワードのすぐ後に続くメッセージの数を示す。
[0042] 一実施形態では、各OSのIDは、OSのインストール時に割り当てられる。たとえば、第1のインストールOSは、0というIDをもち、第2のOSは、1というIDをもち、以下同様になる。
[0043] 切換え記述ワード301に続く各OS間メッセージは続いて、OS間通信機構に格納され、メッセージはそれぞれ、1又は複数バイトを使って、メッセージのタイプ、メッセージによって目標とされる装置又は資源、及びメッセージのいくつかの任意選択パラメータを記述する。
[0044] 一実施形態では、互いに適切に通信するために、複数のOSは、合意命名方式を用いて、システムの装置及び資源を識別する。一実施形態では、システムの装置は、番号0〜62でラベルづけされ、このようなラベルづけ知識を、装置にインストールされたOSすべてに渡って共有する。一実施形態では、ID番号63は、「ALL DEVICES」用に予約される。装置には、本明細書に記載する技法の使用に先立って、開発者によって番号をつけることができる。
[0045] 資源に関して、番号0は、CPU時間用IDとして割り当てられ、番号1は、物理メモリ用に割り当てられる。たとえば、永続記憶装置及びネットワーク帯域幅など、他の再分割可能資源用のIDは、特定のプラットフォーム用OS切換えシステムの開発者によって割り当てられるために残される。
[0046] 一実施形態では、プロトコルは、5つのタイプのOS間メッセージ、すなわち装置予約リクエストメッセージ、装置非使用メッセージ、装置状態転送メッセージ、資源再分割リクエストメッセージ、及び再分割応答メッセージを定義する。図4A〜Eは、こうしたOS間メッセージの形式の一実施形態を示し、メッセージ形式については後で説明する。
一実施形態では、装置予約リクエストメッセージ401は、1バイトを使う。このバイトの最上位の2ビットは、「00」にセットされる。下位6ビットは、予約されるべき装置のIDを示すのに使われる。SRC OSは、装置上で休止(及びその後の再開)操作を実施したくないとき、装置予約リクエストメッセージ401を発行する。DST OSは、このリクエストを尊重するべきであり、この装置を使うべきではなく、制御の切換え先となっているOSにリクエストをフォワードするべきである。メッセージの装置IDが63にセットされたとき、DST OSは、どの装置も全く使うべきでない。
一実施形態では、装置未使用メッセージ402は、2バイトを使う。第1バイトの最上位の2ビットは、「01」にセットされる。下位6ビットは、現在のOSによって決して使われなかった装置のIDを示すのに使われる。第2バイトの下位4ビット(411)は、装置を最後に使ったOSのIDを示すのに使われる。
一実施形態では、装置状態転送メッセージ403は、2つより多いバイトを使う。第1バイトの最上位の2ビットは、「10」にセットされる。第1バイトの残りは、その状態が転送されている装置のIDを示すのに使われる。第2バイトの上位4ビット(412)は、装置を初期化しメッセージを作成したOSを示す。第2バイトの下位4ビット(413)は、第2バイトのすぐ後に続く、転送される状態の格納に使われる4バイト整数の数を示す(たとえば、state_byte_1、...、state_byte_n)。
一実施形態では、資源再分割リクエストメッセージ404は、3バイトを使う。第1バイトの最上位の3ビットは、「110」にセットされる。OS_IDフィールド414(第1バイトの下位4ビット)は、リクエストを行ったOSを示す。RESOURCE_IDフィールド415(メッセージの第2バイト)は、再分割されるべき資源のIDを示す。AMOUNTフィールド416(第3バイト)は、割当てし直されるべき資源の量を示す。一実施形態では、このフィールドの正確な意味は、OS切換えシステム移植チームの開発者によって定義される。たとえば、一実装形態では、割当てし直されるべき資源がCPU時間である場合、このバイトの値(v)は、リクエストを行うOS(OSr)が、毎(v*100)ミリ秒ごとにOSrに切り換わるよう、他のOSに依頼することを示す。別の実装形態では、再分割されるべき資源が物理メモリである場合、この値(v)は、OSrが他のOSに、OSrが連動するべきより多くの物理メモリをもつことができるように、物理メモリのvメガバイトを解放するよう依頼することを示す。
一実施形態では、再分割応答メッセージ405は、3又は4バイトを使う。第1バイトの最上位の3ビットは、「111」にセットされる。やはり、OS_IDフィールド417(第1バイトの下位4ビット)は、リクエストを行ったOSを示す。RESOURCE_IDフィールド418(メッセージの第2バイト)は、再分割されるべき資源のIDを示す。第3バイト(419)及び任意選択の第4バイト(420)は、リクエスト側OSに譲られるべき、現在のOSによって合意された資源の量を示す。上記のように、こうした2バイトの正確な意味は、開発者によって定義される。たとえば、一実装形態では、リクエストされた資源が物理メモリである場合、第2バイトは、リクエスト側OSに譲られるメモリエリアの(1MB境界上の)開始アドレスを示し、第3バイトは、そのメモリエリアの終了アドレスを示す。
OS間通信メッセージの取扱い
[0047] 各OS個々の再開コントローラ内側のOS間メッセージインタプリタ及び休止コントローラ内側のOS間メッセージジェネレータは、OS間メッセージを取り扱う。一実施形態では、再開コントローラ及び休止コントローラは、以下のデータ構造を含むメモリエリアへの共有アクセスをもつ。
・my_ID:現在のOSのIDを示す変数。
・last_OS:現在のOSにそこから切り換えられるOSのIDを示す変数。
・lazy_resume:現在のセッション中に現在のOSによって初めて使われるときにのみ状態が再開される装置のリスト。
・my_reserved_devices:現在のOSによって予約された装置のリストを含むリスト。
・reserve_requests:装置予約リクエストメッセージを含むリスト。
・state_transferred:装置状態転送メッセージを含むリスト。
・no_resume:再開される必要がない装置を含む一時リスト(これは部分リストである。一実施形態では、my_reserved_devicesリストにあるものなど、このリストにない装置も再開されなくてよい)。
・never_used:装置未使用メッセージのリスト。
・repartition_requests:資源再分割リクエストメッセージのリスト。
・repartition_responses:再分割応答メッセージのリスト。
[0048] 一実施形態では、OS間メッセージインタプリタは、装置再開プロセスの開始の際に呼び出される。図5は、OS間メッセージインタプリタによって実施される、メッセージを解釈するプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア(たとえば、回路構成、専用論理など)、ソフトウェア(たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される)、又は両方の組合せを含み得る処理論理によって実施される。
[0049] 図5を参照すると、プロセスは、処理論理がOS間通信機構から切換え記述ワードを読み込み、このワードのSRCフィールドをlast_OSに割り当て、一時変数message_countにCOUNTフィールドを割り当てることによって始まる(処理ブロック502)。次いで、処理論理は、read_countと呼ばれる一時変数に0を割り当てる(処理ブロック503)。
[0050] 次に、処理論理は、read_countがmessage_countに等しいかどうか調べる(処理ブロック504)。等しい場合、プロセスは終了する。等しくない場合、プロセスは処理ブロック505に続き、ここで、処理論理は次のメッセージを読み出す。次のメッセージを読み出した後、処理論理は、次のメッセージのタイプを調べる(処理ブロック506)。処理論理は、次のメッセージのタイプを取得し、次いで、以下のようにメッセージタイプに基づいて切り換える。
i.装置予約リクエストメッセージに対して、装置がmy_reserved_devicesリスト中にある場合、処理論理はメッセージを無視し、リストにない場合、処理論理は、装置をreserve_requestsリストに入れる(処理ブロック507)。
ii.装置未使用メッセージに対して、メッセージの「LAST_OS」フィールドがmy_IDに等しい場合、処理論理は、装置をno_resumeリストに入れ、等しくない場合、処理論理は、装置をnever_usedリストに入れる(処理ブロック508)。
iii.装置状態転送メッセージに対して、「ORIG_OS」フィールドがmy_IDに等しくない場合、処理論理は、メッセージをstate_transferredリストに入れる(処理ブロック509)。
iv.資源再分割リクエストメッセージに対して、メッセージの「OS_ID」フィールドがmy_IDに等しい場合、処理論理はメッセージを無視し、等しくない場合、処理論理は、repartition_requestsリストに入れる(処理ブロック510)。
v.再分割応答メッセージに対して、メッセージの「OS_ID」フィールドがmy_IDに等しい場合、処理論理はメッセージをnew_resourcesリストに入れ、等しくない場合、処理論理は、メッセージをrepartition_responsesリストに入れる(処理ブロック511)。
[0051] メッセージを処理した後、処理論理は、read_countを1だけ増分し、次のメッセージを読み出し(512)、処理ブロック504に遷移し、ここで、プロセスは繰り返す。
[0052] 図6は、再開コントローラコード内部の装置再開プロセスの一実施形態のフロー図である。このプロセスは、ハードウェア(たとえば、回路構成、専用論理など)、ソフトウェア(たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される)、又は両方の組合せを含み得る処理論理によって実施される。
[0053] 図6を参照すると、プロセスは、処理論理がOS間メッセージインタプリタプロセスを呼び出すことで始まる(処理ブロック601)。次いで、処理論理は、my_reserved_devicesリスト、reserve_requestsリスト、state_transferredリスト、lazy_resumeリスト、又はno_resumeリストのどれにもない装置を再開する(処理ブロック602)。一実施形態では、特殊なケースとして、my_reserved_devicesリスト、reserve_requestsリスト、lazy_resumeリスト、又はno_resumeリスト中の装置が63というID(「ALL DEVICES」)をもつとき、再開コードは、どの装置に対しても再開操作を指揮しない。2つのOSのケースでは、これは、第1のOSによって検出される。第2のOSの休止と再開との間で使われる複数のOSがあるとき、こうしたOSのいずれかが装置を使った場合、第2のOSは、装置を再開する必要がある。OSの1つが装置を使った場合、第2のOSは、第2のOSが、装置を使った最後のOSであることを示すDevice_never_usedメッセージを見る。それ以外の場合、第2のOSは、このようなメッセージを見ず、装置を再開する必要はない。
[0054] 再開される具体的装置に依存して、再開操作は、装置の状態を直接復元しても、装置を初期化し直した後で状態を復元してもよい。
[0055] 処理論理は、処理ブロック602で再開されたどの装置も、never_usedリスト中にある場合はそのリストから削除する(処理ブロック603)。次に、state_transferredリスト中の各メッセージに対して、処理論理は、装置の状態をメッセージに含まれる状態にセットする(処理ブロック604)。処理論理は、new_resourcesリスト中のメッセージを取り扱い、新たに利用可能な各資源をOSに知らせ、次いで、リストをクリアする(処理ブロック605)。たとえば、物理メモリに対する再分割応答メッセージの場合、処理論理は、新たに利用可能な物理メモリエリアのアドレス範囲を現在のOSに知らせる。
[0056] 処理論理は、任意選択で、repartition_requestsリスト中の資源repartition_requestメッセージを取り扱い、妥当な場合はrepartition_requestリスト及びrepartition_responsesリストを更新することができる(処理ブロック606)。
[0057] 装置再開プロセスの残りの部分は、通常OS使用セッション中に実施される。より具体的には、装置が初めて使われ、装置がlazy_resumeリスト中にあるとき、処理論理は、装置に対して再開を実施し、装置は(予めリスト中にある場合)lazy_resumeリスト及びnever_usedリストから削除される(処理ブロック607)。また、装置が現在のセッション中に初めて使われ、装置がreserve_requestsリスト中にあるとき、処理論理は、現在の装置状態を保存し、より前の休止プロセスから取得された状態をもつ装置に対して再開操作を実施する。
休止手順の一実施形態
[0058] 装置休止プロセスは、休止コントローラによって指揮される。図7は、装置を休止するプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア(回路構成、専用論理など)、ソフトウェア(たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される)、又は両方の組合せを含み得る処理論理によって実施される。
[0059] プロセスは、処理論理がrepartition_requestsリスト中のメッセージを任意選択で取り扱い、妥当な場合はrepartition_request及びrepartition_responsesリストを更新して始まる(処理ブロック701)。
[0060] 次に、現在のOSが他のOSからのより多くの資源を必要とする場合、処理論理は、repartition_requestsリストを更新する(処理ブロック702)。次いで、処理論理は、lazy_resumeリストに残されている装置を、それらがリスト中に既にない場合は、装置未使用メッセージの「最終OS」フィールドの値としてlast_OSを使って、never_usedリストに追加する(処理ブロック703)。処理論理はまた、my_reserved_devicesリスト及びstate_transferredリストを更新する(処理ブロック704)。一実施形態では、現在のOSが開始した装置が、このような装置の状態を他のOSに転送したい場合、state_transferredリストは、state_transferredリストに新規メッセージを追加することによってアップデートされる。やはり処理ブロック704の一部として、処理論理は、lazy_resumeリストを初期化し直し、no_resumeリストをクリアする。
その後、処理論理は、reserve_requestsリスト中にあるが現在のセッション中に使われた装置の状態を復元し(処理ブロック705)、my_reserved_devicesリスト、reserve_requestsリスト、never_usedリスト、又はstate_transferredリストのどれにもない各装置において休止操作を実施する(処理ブロック706)。一実施形態では、特殊なケースとして、63というID(「ALL DEVICES」)をもつ装置が前者の3つのリストのいずれかにある場合、どの装置においても休止操作は指揮されない。
最後に、処理論理は、OS間メッセージジェネレータを呼び出して、OS間通信機構にメッセージを書き込む(処理ブロック707)。
メッセージを生成するプロセスの一実施形態
[0061] 図8は、OS間メッセージジェネレータを用いてメッセージを生成するプロセスの一実施形態のフロー図である。このプロセスは、ハードウェア(回路構成、専用論理など)、ソフトウェア(たとえば、汎用コンピュータシステム若しくは専用マシン上で稼動される)、又は両方の組合せを含み得る処理論理によって実施される。
[0062] プロセスは、処理論理がOS間通信機構の冒頭に切換え記述ワードを書き込み、SRCフィールドにmy_IDを割り当て、宛先OSが分かっている場合はDSTフィールドを割り当てることで始まる。分かっていない場合、処理論理は、my_IDにもそのフィールドをセットする(DST OSが分かっていないことを示す)(処理ブロック801)。処理論理はまた、COUNTフィールドを埋めずに残しておく。
[0063] 次に、my_reserved_devicesリスト中のすべての装置に対して、処理論理は、OS間通信機構に装置予約リクエストメッセージを書き込み(処理ブロック802)、reserve_requestsリスト中のメッセージをOS間通信機構にコピーし、次いで、reserve_requestsリストをクリアする(処理ブロック803)。処理論理はまた、never_usedリスト中のメッセージをOS間通信機構にコピーし、次いで、never_usedリストをクリアする(処理ブロック804)。同様に、処理論理は、state_transferredリスト中のメッセージをOS間通信機構にコピーし、次いで、state_transferredリストをクリアする(処理ブロック805)。
[0064] その後、処理論理は、repartition_requestsリスト中のすべてのメッセージをOS間通信機構に書き込み、repartition_requestsリストをクリアする(処理ブロック806)。次いで、処理論理は、repartition_responsesリスト中のすべてのメッセージをOS間通信機構に書き込み、repartition_responsesリストをクリアする(処理ブロック807)。
[0065] 最後に、処理論理は、切換え記述ワードのCOUNTフィールドを、OS間通信機構に書き込まれるメッセージの総数で埋める(処理論理808)。
使用ケースの例
[0066] 本明細書に記載する技法を用いるいくつかの使用ケースについて、以下で説明する。こうした使用ケースは、本発明の適用範囲のわずかな部分のみを成すことが明らかであろう。
[0067] ある使用ケースでは、OS(OS1)が装置(D1)をめったに使わない場合、OS1の休止コントローラは、装置D1のIDをlazy_resumeリストに追加する。後で、再開プロセスがOS1の再開コントローラによって実施されるとき、装置D1は、プロセス中は再開されない。そうではなく、装置D1は、セッション中に初めて使われるときに再開される。こうすることにより、再開プロセスが速くなる。
[0068] 第2の使用ケースでは、上記装置D1が使われず、したがって再開されることがない場合、装置D1は、上述した休止プロセスに従って、never_usedリストに追加されることになるので、休止される必要はない。こうすることにより、全体としての休止プロセスの速度が高まる。
[0069] さらに別の使用ケースでは、OS(OS2)の装置休止プロセスは、63というID(「ALL DEVICES」)をもつ装置を、my_reserved_devicesリストに入れ、その結果装置のどれも休止されなくなる。装置予約リクエストメッセージが続いて、OS間メッセージジェネレータによってOS間通信機構に書き込まれる。続いて稼動するどのOSも、このメッセージを観察することになり、セッション中に最初に使われるときに装置を再開するのみであり、その休止プロセス中にその状態を復元することになる。また、こうしたOSはそれぞれ、次のOSにメッセージをフォワードすることになる。最終的に、メッセージは、OS2内のOS間メッセージインタプリタによって読まれることになり、インタプリタは、再開コントローラコードに続きを知らせ、装置のどれにおいても再開操作を実施しないようにする。したがって、OS2から、及びOS2へ非常に素早く切り換わることが可能である。
[0070] さらに別の使用ケースでは、OS(OS3)が、ネットワーク装置を初期化し、IPアドレスを取得する。OS3の休止プロセス中に、装置状態転送メッセージが、OS間通信機構に書き込まれる。メッセージのINT_COUNTフィールドは4にセットされ、16(4つの4バイト整数)個の状態バイトは、ネットワーク装置のIPアドレス、デフォルトのゲートウェイアドレス、DNSアドレス、及びサブネットマスクを含む。後続OS内のOS間メッセージインタプリタは、このメッセージを読み、再開コントローラコードに続きを知らせ、ネットワーク装置の論理状態を装置上で再開操作を指揮することなくセットするようにする。
[0071] さらに別の使用ケースでは、OS(OS4)が、OS間通信機構に資源再分割リクエストメッセージを書き込むが、このとき、RESOURCE_IDフィールドはCPU時間のIDにセットされ、AMOUNTフィールドは5にセットされ、このことは、OS4が500ミリ秒おきに実行権を得ることをリクエストすることを意味する。後続OSはメッセージを読み、リクエストを尊重し、約500ミリ秒後に元のOS4に切り換わる。
[0072] さらに別のシナリオでは、OSの1つ、すなわちOS1は、暗号化/復号に専用であり、I/O装置は使わない。別のOS、すなわちOS2が、暗号化のためにOS1に切り換わり、次いで、元に切り換わると、OS2は、元から切り換わるとき、どのI/O装置も休止する必要がなく(また、元に切り換えられるとき、どのI/O装置も再開する必要がなく)、OS1は、I/O装置のどの再開も休止も行う必要がない。
[0073] さらに別のシナリオでは、Windows OSなど、OSの1つが、ゲーム用装置などの特殊な装置をサポートし、Linux OSなど、別の装置は、この特殊な装置をサポートしない。Windows OSがLinux OSに切り換わると、Windows OSは、特殊な装置を休止する必要がない。Linux OSから元に切り換わると、Windows OSは、特殊な装置を再開する必要がない。
[0074] 別の起こり得るシナリオでは、Windows OS及びLinux OSなど、両方のOSが、ネットワーク装置をサポートするが、ネットワーク装置がWindows OSにおいてのみ使われ、Linux OSにおいては使われないような構成となることがある。この場合、Windows OSがLinux OSに切り換わると、Windows OSは、ネットワーク装置を休止する必要がない。Linux OSから元に切り換わると、Windows OSは、ネットワーク装置を再開する必要がない。
コンピュータシステムの例
[0075] 図9は、本明細書に記載した操作の1つ又は複数を実施することができる例示的なコンピュータシステムのブロック図である。図9を参照すると、コンピュータシステム900は、例示的なクライアント又はサーバコンピュータシステムを備え得る。コンピュータシステム900は、情報を伝達する通信機構又はバス911、及び情報を処理する、バス911と結合されたプロセッサ912を備える。プロセッサ912は、マイクロプロセッサを含むが、たとえば、ペンティアム(Pentium)(商標)、PowerPC(商標)、アルファ(Alpha)(商標)などのマイクロプロセッサに限定されない。
[0076] システム900は、ランダムアクセスメモリ(RAM)、又はプロセッサ912によって実行されるべき情報及び命令を格納する、バス911に結合された他の動的記憶装置904(メインメモリと呼ばれる)をさらに備える。メインメモリ904は、プロセッサ912による命令実行中の、一時変数又は他の中間情報の格納に使うこともできる。
[0077] コンピュータシステム900はまた、読出し専用メモリ(ROM)並びに/又は静的情報及びプロセッサ912用の命令を格納する、バス911に結合された他の静的記憶装置906と、磁気ディスクや光ディスク及びそれに対応するディスクドライブなどのデータ記憶装置907とを備える。情報及び命令を格納するデータ記憶装置907は、バス911に結合される。
[0078] コンピュータシステム900は、コンピュータユーザに情報を表示する、バス911に結合された陰極線チューブ(CRT)や液晶ディスプレイ(LCD)などの表示装置921にさらに結合することができる。プロセッサ912に情報及びコマンド選択を伝達する、英数字及び他のキーを含む英数字入力装置922も、バス911に結合することができる。追加ユーザ入力装置は、プロセッサ912に方向情報及びコマンド選択を伝達し、ディスプレイ921上のカーソル移動を制御する、バス911に結合された、マウス、トラックボール、トラックパッド、スタイラス、又はカーソル方向キーなどのカーソル制御923である。
[0079] バス911に結合され得る別の装置は、ハードコピー装置924であり、この装置は、紙、フィルム、又は同様のタイプの媒体などの媒体上での情報の刻印に使うことができる。バス911に結合され得る別の装置は、電話又はハンドヘルドパーム装置への通信のための有線/無線通信機能925である。
[0080] システム900の構成要素の任意のもの又はすべて及び関連ハードウェアを、本発明において使うことができることに留意されたい。ただし、コンピュータシステムの他の構成は、装置の一部又は全部を含み得ることが理解されよう。
[0081] 本発明の多くの変更及び修正が、上記説明を読んだ後で、当業者には疑いなく明らかになるであろうが、例示として示し記載される特定のどの実施形態も、限定的とみなされることは全く意図していないことを理解されたい。したがって、様々な実施形態の細部への言及は、本発明にとって本質的と考えられる特徴のみをそれ自体が引用する請求項の範囲を限定することを意図していない。

Claims (16)

  1. 複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている方法において、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報は、1つ又は複数のメッセージを含み、さらに、前記1つ又は複数のメッセージのうち少なくとも1つのメッセージが、メッセージタイプ、前記少なくとも1つのメッセージの対象である装置の指示、及び前記メッセージタイプに関するデータを含み、
    前記メッセージタイプが、オペレーティングシステムによる使用のために装置が予約されることをリクエストするための第1のタイプと、装置がオペレーティングシステムによって決して使われないことを示すための第2のタイプと、2つ以上のオペレーティングシステムの間で装置状態を転送するための第3のタイプと、資源が2つ以上のオペレーティングシステムによって分割されることをリクエストするための第4のタイプと、前記資源が2つ以上のオペレーティングシステムによって分割されるべきという前記リクエストに応答するための第5のタイプとからなる群の1つである、方法。
  2. 複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている方法において、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報が使用情報を含み、さらに、前記使用情報が、前記第1のオペレーティングシステムが装置を使ったかどうかを指定し、前記第1のオペレーティングシステムが前記装置を使わなかったことを前記使用情報が示した場合、前記休止操作が、前記装置に対応する休止ルーチンを実施せずに実施される、方法。
  3. 複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている方法において、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報が使用情報を含み、さらに、前記使用情報が、前記第2のオペレーティングシステムが装置を使うかどうかを指定し、前記第2のオペレーティングシステムが前記装置を使わないことを前記使用情報が示した場合、前記再開操作が、前記装置に対応する再開ルーチンを実施せずに実施される、方法。
  4. 複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている方法において、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報が装置状態情報を含み、さらに、情報を交換するステップが、前記第1のオペレーティングシステムから前記第2のオペレーティングシステムに装置状態情報を送るステップを含み、前記装置状態情報が、前記第1及び第2のオペレーティングシステム両方によって使われ、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間を切り換えるときに休止されない装置に対応する、方法。
  5. 前記休止操作が複数の操作を含み、さらに、前記休止操作を実施するステップが、装置が使われていない場合は前記複数の操作の1つ又は複数からなるセットを実施せずに起こる、請求項1〜4の何れか一項に記載の方法。
  6. 前記再開操作が、装置用の再開ルーチンを含み、さらに、1つ又は複数の先行オペレーティングシステムによって前記装置の使用が検出されていない場合、前記再開操作が、前記装置用の前記再開ルーチンをコールせずに実施される、請求項1〜4の何れか一項に記載の方法。
  7. 前記再開操作を実施するステップが、
    前記第2のオペレーティングシステムの1つ又は複数のドライバが、ハードウェア装置状態を復元するステップと、
    前記第2のオペレーティングシステム内のカーネルが、1つ又は複数のサブシステムの動作を復元し再開するステップと、
    前記第2のオペレーティングシステムによる通常動作を再開するステップとを含む、請求項1〜4の何れか一項に記載の方法。
  8. 前記休止操作を実施するステップが、1つ又は複数のサブシステム及び1つ又は複数のハードウェア装置に関連づけられた状態を保存するステップを含む、請求項に記載の方法。
  9. システムによって実行されると、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法を前記システムに実施させる命令を格納する1つ又は複数のコンピュータ可読記憶媒体を有する製造品であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている製造品において、前記方法が、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報は、1つ又は複数のメッセージを含み、さらに、前記1つ又は複数のメッセージのうち少なくとも1つのメッセージが、メッセージタイプ、前記少なくとも1つのメッセージの対象である装置の指示、及び前記メッセージタイプに関するデータを含み、
    前記メッセージタイプが、オペレーティングシステムによる使用のために装置が予約されることをリクエストするための第1のタイプと、装置がオペレーティングシステムによって決して使われないことを示すための第2のタイプと、2つ以上のオペレーティングシステムの間で装置状態を転送するための第3のタイプと、資源が2つ以上のオペレーティングシステムによって分割されることをリクエストするための第4のタイプと、前記資源が2つ以上のオペレーティングシステムによって分割されるべきという前記リクエストに応答するための第5のタイプとからなる群の1つである、製造品。
  10. システムによって実行されると、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法を前記システムに実施させる命令を格納する1つ又は複数のコンピュータ可読記憶媒体を有する製造品であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている製造品において、前記方法が、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報が使用情報を含み、さらに、前記使用情報が、前記第1のオペレーティングシステムが装置を使ったかどうかを指定し、前記第1のオペレーティングシステムが前記装置を使わなかったことを前記使用情報が示した場合、前記休止操作が、前記装置に対応する休止ルーチンを実施せずに実施される、製造品。
  11. システムによって実行されると、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法を前記システムに実施させる命令を格納する1つ又は複数のコンピュータ可読記憶媒体を有する製造品であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている製造品において、前記方法が、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報が、受渡し使用情報を含み、さらに、前記使用情報が、前記第2のオペレーティングシステムが装置を使うかどうかを指定し、前記第2のオペレーティングシステムが前記装置を使わないことを前記使用情報が示した場合、前記再開操作が、前記装置に対応する再開ルーチンを実施せずに実施される、製造品。
  12. システムによって実行されると、複数のオペレーティングシステムがコンピュータ上で同時に稼動することを可能にする方法を前記システムに実施させる命令を格納する1つ又は複数のコンピュータ可読記憶媒体を有する製造品であって、前記複数のオペレーティングシステムのうち第1のオペレーティングシステムがアクティブに稼動されている製造品において、前記方法が、
    複数のオペレーティングシステムのうち、次にアクティブになるべき第2のオペレーティングシステムを識別するステップと、
    前記第1及び第2のオペレーティングシステムによってアクセス可能な記憶エリアを用いて、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間で情報を交換するステップと、
    休止操作を実施することによって前記第1のオペレーティングシステムを非アクティブにさせるステップと、
    前記第2のオペレーティングシステムに動作を再開させるための再開操作を実施することによって、前記第2のオペレーティングシステムをアクティブにさせるステップであって、前記情報が、前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、ステップとを含み、
    前記情報が装置状態情報を含み、さらに、情報を交換するステップが、前記第1のオペレーティングシステムから前記第2のオペレーティングシステムに装置状態情報を送るステップを含み、前記装置状態情報が、前記第1及び第2のオペレーティングシステム両方によって使われ、前記第1オペレーティングシステムと前記第2のオペレーティングシステムの間を切り換えるときに休止されない装置に対応する、製造品。
  13. 前記休止操作が複数の操作を含み、さらに、前記休止操作を実施するステップが、装置が使われていない場合は前記複数の操作の1つ又は複数からなるセットを実施せずに起こる、請求項9〜12の何れか一項に記載の製造品。
  14. 前記再開操作が、装置用の再開ルーチンを含み、さらに、先行オペレーティングシステムによって前記装置の使用が検出されていない場合、前記再開操作が、前記装置用の前記再開ルーチンをコールせずに実施される、請求項9〜12の何れか一項に記載の製造品。
  15. 複数のオペレーティングシステムを格納するための1つ又は複数のメモリと、
    現在アクティブなオペレーティングシステムを非アクティブにさせ、非アクティブなオペレーティングシステムをアクティブにさせるオペレーティングシステムスイッチャを格納するためのメモリであって、前記スイッチャが、前記複数のオペレーティングシステムによる前記1つ又は複数のメモリの複数の領域へのアクセスを可能にし、アクセスを不能にするためのメモリアクセスコントローラモジュールを備え、前記スイッチャが、前記現在アクティブなオペレーティングシステムを非アクティブにさせ、前記非アクティブなオペレーティングシステムをアクティブにさせるとき、前記メモリアクセスコントローラが、切換えモード中に1つのオペレーティングシステム以外のオペレーティングシステム用の複数のメモリエリアへのアクセスを不能にするメモリと、
    オペレーティングシステムの間で情報を交換するためのオペレーティングシステム間記憶エリアであって、前記記憶エリアが、前記オペレーティングシステムによってアクセス可能であり、前記情報が、それぞれ、休止及び再開コントローラによって実施される前記休止及び再開操作の一方の一部又は両方の一部としてどの操作が実施されるかを制御する、オペレーティングシステム間記憶エリアとを具備し、
    個々のオペレーティングシステムが、
    前記個々のオペレーティングシステムの、アクティブから非アクティブへの遷移を取り扱うための休止操作を実施するための、個々のオペレーティングシステムに対応するメモリに含まれる休止コントローラと、
    前記個々のオペレーティングシステムの、非アクティブからアクティブへの遷移を取り扱うための再開操作を実施するための、個々のオペレーティングシステムに対応するメモリに含まれる再開コントローラとを動作させ、
    前記再開コントローラが、前記記憶エリアからアクセスされ、他の少なくとも1つのオペレーティングシステムによって生成される1つ又は複数のメッセージを翻訳するためのメッセージインタプリタを備える、システム。
  16. 前記休止コントローラが、1つ又は複数のメッセージを作成し、作成されたメッセージを、他の少なくとも1つのオペレーティングシステムによるアクセスのための前記記憶エリアに送るためのメッセージジェネレータを備える、請求項15に記載のシステム。
JP2010536897A 2007-12-06 2007-12-06 効率的な協調型オペレーティングシステム切換えのためのシステム及び方法 Active JP5236010B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2007/025069 WO2009073011A1 (en) 2007-12-06 2007-12-06 System and methods for efficient and cooperative operating system switching

Publications (2)

Publication Number Publication Date
JP2011507070A JP2011507070A (ja) 2011-03-03
JP5236010B2 true JP5236010B2 (ja) 2013-07-17

Family

ID=39494511

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010536897A Active JP5236010B2 (ja) 2007-12-06 2007-12-06 効率的な協調型オペレーティングシステム切換えのためのシステム及び方法

Country Status (2)

Country Link
JP (1) JP5236010B2 (ja)
WO (1) WO2009073011A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5724421B2 (ja) * 2011-02-04 2015-05-27 富士通株式会社 情報処理装置
DE102017006950A1 (de) * 2017-07-21 2019-01-24 Giesecke+Devrient Mobile Security Gmbh Aufrechterhaltung einer Netzwerkverbindung

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001256066A (ja) * 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
JP3934428B2 (ja) * 2002-02-01 2007-06-20 株式会社日立製作所 遠隔制御システム、遠隔制御方法及びゲートウェイ装置
CN100383744C (zh) * 2004-12-24 2008-04-23 联想(北京)有限公司 一种计算机多操作系统的切换方法
US7950020B2 (en) * 2006-03-16 2011-05-24 Ntt Docomo, Inc. Secure operating system switching

Also Published As

Publication number Publication date
WO2009073011A1 (en) 2009-06-11
JP2011507070A (ja) 2011-03-03

Similar Documents

Publication Publication Date Title
US7877592B2 (en) System and methods for efficient and cooperative operating system switching
US10073713B2 (en) Virtual machine migration
US8671403B2 (en) Pre-creating virtual machines in a grid environment
JP4903257B2 (ja) セキュアなオペレーティングシステムのスイッチング
JP4769484B2 (ja) 仮想計算機をマイグレーションするための方法およびシステム
US8135818B2 (en) Automatic virtual machine migration in mixed SBC/CBC environment
KR101134816B1 (ko) 운영 체제 초기화 중에 플랫폼 그래픽을 디스플레이하기 위한 방법 및 시스템
US20060184938A1 (en) Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
US20050091365A1 (en) Interposing a virtual machine monitor and devirtualizing computer hardware
US20100325284A1 (en) Method for automatically providing a client with access to an associated virtual machine
KR101114648B1 (ko) 저 전력 소비 상태에서 컴퓨터 태스크를 수행하는 방법, 시스템 및 컴퓨터 판독가능한 매체
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
US20100325197A1 (en) Method for improving boot time of a client having a virtualized operating environment
Bila et al. Energy-oriented partial desktop virtual machine migration
US11748094B2 (en) Techniques for non-disruptive operating system upgrade
JP2004234114A (ja) 計算機システム、計算機装置、オペレーティングシステムの移送方法及びプログラム
Kooburat et al. The Best of Both Worlds with {On-Demand} Virtualization
JP5236010B2 (ja) 効率的な協調型オペレーティングシステム切換えのためのシステム及び方法
US11880702B2 (en) Hypervisor hot restart
JPH11288366A (ja) 情報処理方法及び装置並びに記憶媒体
WO2024008066A1 (zh) 一种基于云计算技术的服务器以及云系统
Baclit et al. Linux Virtualization

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130121

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130326

R150 Certificate of patent or registration of utility model

Ref document number: 5236010

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20160405

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250