(57)【要約】【課題】プライマリＯＳとセカンダリＯＳの動作環境を切り換える。【解決手段】システム・メモリ１５に生成されたセカンダリＯＳのランタイム・イメージ２５７をＨＤＤ２１に保管する。プライマリＯＳのメモリ・イメージ２５５が動作している物理アドレス空間のなかに、セカンダリＯＳが動作するためのＤＭＡ空間２５９を形成する。セカンダリＯＳのランタイム・イメージをＤＭＡ空間に転送する。プライマリＯＳのメモリ・イメージの動作を停止して、セカンダリＯＳのラインタイム・イメージをＤＭＡ空間のなかで実行する。プライマリＯＳのメモリ・イメージをアクティブにする前に、セカンダリＯＳのランタイム・イメージを再びＨＤＤ２１に退避する。【選択図】図７
2016018555.tif 000002
【特許請求の範囲】
【請求項１】
第１の動作環境または第２の動作環境のいずれかで動作することが可能なコンピュータの動作環境を切り換える方法であって、
前記第２の動作環境のランタイム・イメージを作成して保管するステップと、
前記第１の動作環境で動作するステップと、
前記第１の動作環境が使用するシステム・メモリのメモリ領域の一部に前記ランタイム・イメージを転送するステップと、
前記第１の動作環境を停止するステップと、
前記ランタイム・イメージをアクティブにして前記第２の動作環境で動作するステップと
を有する方法。
【請求項２】
前記メモリ領域の一部が、前記ランタイム・イメージを転送してから前記第１の動作環境が停止するまで仮想メモリにスワップ・アウトされないことが前記第１の動作環境で保証されている請求項１に記載の方法。
【請求項３】
前記メモリ領域の一部が、前記第１の動作環境がＤＭＡ転送に割り当てたメモリ領域である請求項１に記載の方法。
【請求項４】
前記メモリ領域の一部が、離散的なメモリ領域の集合である請求項１に記載の方法。
【請求項５】
前記ランタイム・イメージを転送するステップが、前記離散的なメモリ領域に記憶された前記ランタイム・イメージを、前記ランタイム・イメージを記憶した前記システム・メモリの連続するメモリ領域に移動するステップを含む請求項４に記載の方法。
【請求項６】
前記第２の動作環境で動作するステップにおいて新たなランタイム・イメージを作成して保管するステップと、
前記第１の動作環境に移行するイベントに応じて前記第１の動作環境をアクティブにするステップと
を有する請求項１に記載の方法。
【請求項７】
前記メモリ領域の一部を前記第１の動作環境に解放するステップを有する請求項６に記載の方法。
【請求項８】
前記第１の動作環境を停止するステップが、前記第１の動作環境で動作するデバイスのシステム・コンテキストとユーザ・データを前記システム・メモリに記憶するステップを含む請求項１に記載の方法。
【請求項９】
前記第２の動作環境のランタイム・イメージを作成して保管するステップが、
パワー・オフ状態からブートしたときに前記第２の動作環境に前記第１の動作環境よりも小さい前記システム・メモリのメモリ領域を割り当てるステップを含む請求項１に記載の方法。
【請求項１０】
前記第１の動作環境がデスクトップ型コンピュータに搭載が可能なオペレーティング・システムを実行し、前記第２の動作環境がタブレット端末に搭載が可能なオペレーティング・システムを実行する請求項１に記載の方法。
【請求項１１】
前記第１の動作環境で動作するステップが、
前記第１の動作環境に前記システム・メモリで利用可能な最大限のメモリ資源を割り当て、前記第２の動作環境には前記第１の動作環境より制約したハードウェア資源を割り当てるステップを含む請求項１に記載の方法。
【請求項１２】
第１のオペレーティング・システムまたは第２のオペレーティング・システムのいずれかで動作することが可能なコンピュータにおいて実行するオペレーティング・システムを切り換える方法であって、
前記第２のオペレーティング・システムのランタイム・イメージを不揮発性メモリに記憶し、システム・メモリに前記第１のオペレーティング・システムを実行する第１の物理アドレス空間を割り当てたデュアル動作環境を構築するステップと、
前記第２のオペレーティング・システムを前記第１の物理アドレス空間の一部に存在する第２の物理アドレス空間にコピーするステップと、
前記システム・メモリの記憶を維持しながらプロセッサの制御権を前記第１のオペレーティング・システムから剥奪して前記第２のオペレーティング・システムに付与するステップと
を有する方法。
【請求項１３】
前記第２のオペレーティング・システムの新たなランタイム・イメージを前記不揮発性メモリに記憶するステップと、
前記第１のオペレーティング・システムに前記プロセッサの制御権を付与するステップと
を有する請求項１２に記載の方法。
【請求項１４】
前記第２の物理アドレス空間を前記第１のオペレーティング・システムが利用するステップを有する請求項１３に記載の方法。
【請求項１５】
プロセッサと、
前記プロセッサが実行するプログラムを記憶するシステム・メモリと、
前記プロセッサが実行するシステム・ファームウェアを格納する不揮発性メモリと、
第１のオペレーティング・システムと第２のオペレーティング・システムを格納するディスク・ドライブと、
前記第２のオペレーティング・システムが動作したときのランタイム・イメージを前記システム・メモリから前記ディスク・ドライブに退避する退避部と、
前記第１のオペレーティング・システムがロードされている前記システム・メモリの物理アドレス空間に前記ランタイム・イメージを転送する転送部と、
前記第１のオペレーティング・システムを切換サスペンド状態に移行させてから前記第２のオペレーティング・システムを実行する切換部と
を有するコンピュータ。
【請求項１６】
前記切換部は、前記第２のオペレーティング・システムが動作したときのランタイム・イメージを前記ディスク・ドライブに退避してから前記第１のオペレーティング・システムをレジュームする請求項１５に記載のコンピュータ。
【請求項１７】
前記転送部は、前記第１のオペレーティング・システムがスワップ・アウトを禁止した物理アドレス空間に前記ランタイム・イメージを転送する請求項１６に記載のコンピュータ。
【請求項１８】
前記ランタイム・イメージを記憶する前記物理アドレス空間を前記第１のオペレーティング・システムに解放する解放部を有する請求項１７に記載のコンピュータ。
【請求項１９】
第１の動作環境またはシステム・メモリの消費量が前記第１の動作環境より少ない第２の動作環境のいずれかで動作することが可能なコンピュータに、
前記第２の動作環境のランタイム・イメージを作成する機能と、
前記第１の動作環境をアクティブにする機能と、
前記第１の動作環境が使用する物理アドレス空間に前記ランタイム・イメージを転送する機能と、
ランタイム・イメージを作成してから前記第１の動作環境の動作を停止する機能と、
前記第２の動作環境のランタイム・イメージをアクティブにする機能と
を実現させるためのコンピュータ・プログラム。
【請求項２０】
前記ランタイム・イメージを復帰して前記第１の動作環境をアクティブにする機能を含む請求項１９に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、同一のハードウェア上で動作することが可能な複数のオペレーティング・システムの動作環境を切り換える技術に関する。
【背景技術】
【０００２】
ノートブック型パーソナル・コンピュータまたはデスクトップ型パーソナル・コンピュータにおいて、同一のハードウェア環境で、それぞれ特徴を備える複数のオペレーティング・システム（ＯＳ）を切り換えて実行する技術が知られている。特許文献１は、複数のＯＳを搭載したコンピュータにおいて動作するＯＳを切り換える発明を開示する。同文献には、起動時に複数のＯＳのブート・ローダに順次アクセスして、システムに共存するすべてのＯＳを、割り当てられたメイン・メモリの論理メモリ・ブロックにロードすることが記載されている。また動作するＯＳを切り換える際にサスペンドすることが記載されている。
【０００３】
また同一のハードウェア環境に仮想環境を構築して複数のオペレーティング・システム（ＯＳ）を動作させることができる。仮想環境にはハイパーバイザ型（タイプ１）とホストＯＳ型（タイプ２）がある。ノートＰＣやデスクトップＰＣには、Ｗｉｎｄｏｗｓ（登録商標）、ＭＡＣ＿ＯＳ（登録商標）、またはＬｉｎｕｘ（登録商標）のようなＰＣ専用のＯＳに加えて、タブレット端末やスマートフォンなどで使用するために開発されたモバイル型のＯＳを搭載する場合がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２５６０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ノートＰＣにこのような２種類のＯＳを搭載する場合は、ＰＣ専用のＯＳを主として使用し、モバイル型のＯＳはタッチスクリーンを利用したアプリケーションなどでの補助的な用途に使用する。したがって、主たる用途のＯＳには、システム・メモリのメモリ空間をできるだけ多く与えることが望ましい。しかし、特許文献１の発明では、最初に割り当てた各ＯＳの論理メモリ・ブロックは、常時システム・メモリに併存するため主たる用途のＯＳのメモリ空間は制約を受ける。
【０００６】
そこで本発明の目的は、複数のＯＳの動作環境を搭載するコンピュータにおいて、一方のＯＳの動作環境から他方のＯＳの動作環境に短時間で切り換える方法を提供することにある。さらに本発明の目的は複数のＯＳの動作環境を搭載するコンピュータにおいて、前回の動作環境に復帰できるように動作環境を切り換える方法を提供することにある。さらに本発明の目的は複数のＯＳの動作環境を搭載するコンピュータにおいて、主たるＯＳに割り当てる物理アドレス空間を従たるＯＳの動作環境の影響を受けないように確保する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することにある。
【課題を解決するための手段】
【０００７】
本発明は、第１の動作環境または第２の動作環境のいずれかで動作することが可能なコンピュータの動作環境を切り換える方法に関する。本発明の基本的な原理は、第１の動作環境が使用するシステム・メモリのメモリ領域の一部に、あらかじめ取得しておいた第２の動作環境のランタイム・イメージをコピーして、第１の動作環境の動作を停止しながら第２の動作環境をアクティブにすることにある。
【０００８】
最初に、第２の動作環境のランタイム・イメージを作成して保管する。つづいて、第１の動作環境で動作し、第１の動作環境が使用するシステム・メモリのメモリ領域の一部にランタイム・イメージを転送してから第１の動作環境の動作を停止する。つづいて、ランタイム・イメージをアクティブにして第２の動作環境で動作する。第１の動作環境で動作しているときにユーザが必要に応じて動作環境を切り換えると、第２の動作環境はランタイム・イメージを作成したときの状態から動作を開始することができる。また、第１の動作環境が動作するときに使用する物理アドレス空間は、第２の動作環境の存在により影響を受けない。
【０００９】
メモリ領域の一部は、ランタイム・イメージを転送してから第１の動作環境が停止するまで仮想メモリにスワップ・アウトされないことが第１の動作環境で保証されたメモリ領域とすることができる。メモリ領域の一部は、第１の動作環境がＤＭＡ転送に割り当てたメモリ領域とすることができる。メモリ領域の一部は、離散的なメモリ領域の集合であってもよい。したがって、第１の動作環境は第２の動作環境のために連続するメモリ領域を確保する必要がない。
【００１０】
ランタイム・イメージを転送する際に、離散的なメモリ領域に記憶されたランタイム・イメージを、ランタイム・イメージを記憶したシステム・メモリの連続するメモリ領域に移動することができる。こうすることで、ランタイム・イメージを作成したときのアドレスとのマッピング・テーブルを作成する必要がなくなる。第２の動作環境で動作する際に、新たなランタイム・イメージを作成して保管し、第１の動作環境に移行するイベントに応じて第１の動作環境をアクティブにすることで、オンデマンドで第１の動作環境に移行することができる。
【００１１】
第１の動作環境に移行したあとは、メモリ領域の一部を第１の動作環境に解放することで、第１の動作環境が第２の動作環境の存在により、利用できる物理アドレス空間に対する制約を受けないようにすることができる。第１の動作環境を停止する際に、第１の動作環境で動作するデバイスのシステム・コンテキストとユーザ・データをシステム・メモリに記憶することができる。第２の動作環境のランタイム・イメージを作成して保管する際に、パワー・オフ状態からブートしたときに第２の動作環境に第１の動作環境よりも小さいシステム・メモリのメモリ領域を割り当てることができる。
【００１２】
第１の動作環境がデスクトップ型コンピュータに搭載が可能なオペレーティング・システムを実行し、第２の動作環境がタブレット端末に搭載が可能なオペレーティング・システムを実行することができる。第１の動作環境で動作する際に、第１の動作環境にシステム・メモリで利用可能な最大限のメモリ資源を割り当て、第２の動作環境には第１の動作環境より制約したハードウェア資源を割り当てることができる。
【発明の効果】
【００１３】
本発明により、複数のＯＳの動作環境を搭載するコンピュータにおいて、一方のＯＳの動作環境から他方のＯＳの動作環境に短時間で切り換える方法を提供することができた。さらに本発明により、複数のＯＳの動作環境を搭載するコンピュータにおいて、前回の動作環境に復帰できるように動作環境を切り換える方法を提供することができた。さらに本発明により複数のＯＳの動作環境を搭載するコンピュータにおいて、主たるＯＳに割り当てる物理アドレス空間を従たるＯＳの動作環境の影響を受けないように確保する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータ・プログラムおよびコンピュータを提供することができた。
【図面の簡単な説明】
【００１４】
【図１】コンピュータ１０のハードウェアの概略構成を説明するための機能ブロック図である。
【図２】ＥＣ２９が搭載するレジスタ３１の構成を説明する図である。
【図３】コンピュータ１０が実行するソフトウェアの構成を説明するための図である。
【図４】コンピュータ１０の動作状態を説明するための状態遷移図である。
【図５】コンピュータ１０にデュアルＯＳの動作環境を構築するまでの手順を示すフローチャートである。
【図６】デュアル動作環境が構築されてコンピュータ１０を一方の動作環境から他方の動作環境に切り換える手順を示すフローチャートである。
【図７】、図５、図６の手順に対応するシステム・メモリ１５とＨＤＤ２１のデータ構造の変遷を説明するための図である。
【図８】、図５、図６の手順に対応するシステム・メモリ１５とＨＤＤ２１のデータ構造の変遷を説明するための図である。
【図９】プライマリＯＳ２０５の動作環境が形成されているときの、システム・メモリ１５のデータ構造を説明するための図である。
【発明を実施するための形態】
【００１５】
［コンピュータの概略構成］
図１は、ノートブック型またはデスクトップ型のコンピュータ１０のハードウェアの概略構成を説明するための機能ブロック図である。図２は、エンベデッド・コントローラ（ＥＣ）２９が搭載するレジスタ３１の構成を説明するための図である。図３は、コンピュータ１０が実行するソフトウェアの構成を説明するための図である。多くのハードウェアおよびソフトウェアの構成は周知であるため、明細書では本発明の理解に必要な範囲で説明する。図１においてチップセット１３はさまざまな規格のインターフェース機能を備えており、ＣＰＵ１１、システム・メモリ１５、ＧＰＵ１７、ＨＤＤ２１、ＴＰＭ（Trusted Platform Module）２３、ネットワーク・モジュール２５、ファームウェアＲＯＭ２７およびＥＣ２９などが接続されている。
【００１６】
ＧＰＵ１７にはタッチスクリーン１９が接続されている。チップセット１３はＤＭＡ（Direct Memory Access）コントローラ１４を含んでいる。ファームウェアＲＯＭ２７は、ＵＥＦＩ（Unified Extensible Firmware Interface）またはＢＩＯＳといったシステム・ファームウェア２０１（図３）を格納している。システム・ファームウェア２０１は、コンピュータの起動時にデバイスの検査や初期化などのＰＯＳＴを行うほかに、本実施の形態における動作環境の切り換えに関する処理を行う。ＣＰＵ１１は、ＣＰＵ１１の電源を再起動するパワーオン・リセット、ＣＰＵ１１にリセット信号を送るハードウェア・リセットおよびＣＰＵ１１が実行するプログラムがリセット信号を生成するソフトウェア・リセットのいずれかの方法でリセットされたときに必ずシステム・ファームウェア２０１を所定のアドレス（リセット・ベクタ）から実行する。
【００１７】
本実施の形態では、動作環境の切換処理のなかで多くの部分をシステム・ファームウェア２０１が行う。ＯＳの動作環境からシステム・ファームウェア２０１の動作環境への移行はＣＰＵ１１をリセットすることで行う。システム・ファームウェア２０１は、ＣＰＵ１１がリセットされたときに動作環境の構築や切換処理の要否を認識して実行パスを決める必要がある。ＥＣ２９はシステム・ファームウェア２０１の実行パスを決めるフラグを設定するためのレジスタ３１を有している。
【００１８】
図２はレジスタ３１の構成を示している。ＥＣ２９は、ＣＰＵ、ＲＡＭ、ＲＯＭなどを含みコンピュータ１０のパワー・ステートの制御、電源の制御、および温度制御などを行う。レジスタ３１の電源はパワー・オフ状態でも維持されており、システム・ファームウェア２０１、プライマリＯＳ２０５およびセカンダリＯＳ２２５のいずれもアクセスすることができる。フラグ３１ａは設定されているときに現在の動作環境がデュアルＯＳであることを示し解除されているときにシングルＯＳであることを示す。
【００１９】
フラグ３１ｂはデュアルＯＳの動作環境下において、設定されているときにその時点の動作環境がセカンダリＯＳ２２５の動作環境であることを表明し、解除されているときにプライマリＯＳ２０５の動作環境であることを表明する。フラグ３１ｃはシングルＯＳの動作環境下において、設定されているときにブートＯＳがセカンダリＯＳ２２５であることを表明し、解除されているときにプライマリＯＳ２０５であることを表明する。フラグ３１ｄはデュアルＯＳの動作環境下において切換処理の要否を表明する。
【００２０】
ＨＤＤ２１は起動ディスクで、図３に示すソフトウェアのブート・イメージを格納する。ブート・イメージは、プライマリＯＳ２０７、切換マネージャ２１３およびアプリケーション２０９を含むプライマリＯＳのブート・イメージ２５３（図７）と、セカンダリＯＳ２２５、切換マネージャ２２７、およびアプリケーション２２９を含むセカンダリＯＳのブート・イメージ２５３（図７）を含む。
【００２１】
図３においてプライマリＯＳ２０５は、Ｗｉｎｄｏｗｓ（登録商標）、ＭＡＣ＿ＯＳ（登録商標）などの大規模なプログラムで、セカンダリＯＳ２２５は、Ａｎｄｒｏｉｄ（登録商標）、Ｌｉｎｕｘ（登録商標）などの小規模のプログラムである。Ａｎｄｒｏｉｄ（登録商標）が動作するときは、タッチスクリーン１９に対するタッチ操作が可能になる。プライマリＯＳ２０５は、ＤＭＡコントローラ１４を制御するデバイス・ドライバ２０３を含んでいる。デバイス・ドライ２０３は、動作環境を切り換える際にＨＤＤ２１からランタイム・イメージ２５７（図７）をシステム・メモリ１５に転送する処理と、転送先のＤＭＡ空間２５９（図７、図８）を解放する処理をする。ランタイム・イメージ２５７については後に説明する。
【００２２】
切換マネージャ２０７とアプリケーション２０９は、プライマリＯＳ２０５の動作環境で動作し、切換マネージャ２２７とアプリケーション２２９は、セカンダリＯＳ２２５の動作環境で動作する。切換マネージャ２０７、２２７は、動作環境の切り換えのためのユーザ・インターフェースをタッチスクリーン１９に表示するとともに、それぞれのＯＳを通じて動作環境の切換処理をする。
【００２３】
［動作環境の切換手順］
図４は、コンピュータ１０の動作状態を説明するための状態遷移図で、図５、図６はコンピュータ１０が動作環境を切り換える手順を示すフローチャートである。図７、図８は、図５、図６の手順に対応するシステム・メモリ１５とＨＤＤ２１のデータ構造の変遷を説明するための図である。図４、図７，図８には、図５、図６の手順に対応する要素に同一の参照番号を付している。
【００２４】
図５は、コンピュータ１０にデュアルＯＳの動作環境を構築するまでの初期化の手順を示している。ブロック３０１でコンピュータ１０はパワー・オフ状態でフラグ３１ａ〜３１ｄは解除されている。ブロック３０３で電源が投入されるとＣＰＵ１１はシステム・ファームウェア２０１を実行しリセット・ベクタからブートを開始する。システム・ファームウェア２０１は、フラグ３１ａ、３１ｃを参照してＨＤＤ２１が格納するプライマリＯＳのブート・イメージ２５１（図７）をロードする。このとき、システム・メモリ１５には、図９に示すプライマリＯＳ２０５のメモリ・イメージ２５５が記憶される。
【００２５】
ここに動作環境は、ＯＳやアプリケーションなどのプログラム・コード、プログラムの状態を示すデータおよびアプリケーションが作成したユーザ・データなどのシステム・メモリ１５が記憶するメモリ・イメージ２５５と、当該動作環境下で動作しているＣＰＵ１１を含むすべてのハードウェアのレジスタ、キャッシュ、ポインタなどが保持する内部状態を示す状態情報（システム・コンテキスト）が構成する。動作環境の数は実行可能なＯＳの数に一致する。本明細書では２つの動作環境（デュアルＯＳの動作環境）の切り換え方法を説明するが、本発明は３以上の動作環境の切り換え方法に適用することもできる。
【００２６】
図９はシングルＯＳの動作環境におけるコンピュータ１０に、プライマリＯＳ２０５の動作環境が形成されているときの、システム・メモリ１５のデータ構造を説明するための図である。一例としてシステム・メモリ１５のサイズは８ＧＢとしている。システム・ファームウェア２０１はブート時にプライマリＯＳ２０５の動作環境に対して、ＳＭＲＡＭ領域５３およびＡＣＰＩ＿ＮＶＳ領域５５を除いたほとんどの物理アドレス空間５１をメモリ資源として割り当てる。また、その他のハードウェア資源も可能な範囲で最大の機能を利用できるように割り当てる。
【００２７】
プライマリＯＳのブート・イメージ２５１は、物理アドレス空間５１にロードされてメモリ・イメージ２５５として記憶される。プライマリＯＳ２０５は、プロセスに提供する仮想アドレス空間を物理アドレス空間５１にマッピングし、物理アドレス空間５１が不足する場合はＨＤＤ２１の仮想メモリにスワップ・アウトする。この時点でコンピュータ１０はシングルＯＳの動作環境で動作しており、プライマリＯＳ２０５の動作環境はシステム・メモリ１５の記憶容量を最大限利用することができる。ただし本実施の形態では、プライマリＯＳ２０５の動作環境に対して、デュアルＯＳの動作環境でもシングルＯＳの動作環境と同じサイズのメモリ資源を提供することができる。
【００２８】
物理アドレス空間５１には、システム・ファームウェア２０１がロードされるＲＡＭディスク領域が定義されている。ＲＡＭディスク領域はシステム・ファームウェア２０１だけがアクセスでき、プライマリＯＳ２０５はアクセスできないメモリ領域である。プライマリＯＳのメモリ・イメージ２５５は、プライマリＯＳ２０５の動作環境で実行、参照、または記憶されるファイル群で、ベクタ・テーブル２２１、プライマリＯＳ２０５、切換マネージャ２０７、アプリケーション２０９、デバイス・ドライバ２０３およびユーザ・データ２２３を含む。
【００２９】
ＳＭＲＡＭ領域５３は、システムがＳＭＭ（System Management Mode）で動作するときにシステム・ファームウェアだけがアクセスすることができる。ＳＭＲＡＭ領域５３には、ＳＭＩハンドラがロードされ、さらにＣＰＵ１１がＳＭＭ（System Management Mode）に移行する直前のレジスタやポインタなどのコンテキストを格納する記憶領域であるＳＳＭ（State Save Map）領域が確保される。ＡＣＰＩ＿ＮＶＳ領域５５はプライマリＯＳ２０５、セカンダリＯＳ２２５およびシステム・ファームウェア２０１のいずれもアクセスできる物理アドレス空間である。本実施の形態では動作環境の切り換えに必要な情報を交換するために利用する。
【００３０】
コンピュータ１０は、パワー・オフ状態（ＡＣＰＩのＳ５ステート）から起動するときにデフォルトでデュアルＯＳの動作環境を構築する。ブロック３０５で、ブートが完了して動作を開始した切換マネージャ２０７は、レジスタ３１のフラグ３１ａを参照して現在、シングルＯＳの動作環境であることを認識する。すでに、デュアルＯＳの動作環境が構築されている場合は、図６のブロック４０１に移行する。切換マネージャ２０７はレジスタ３１に次回のブートＯＳがセカンダリＯＳ２２５であることを示すフラグ３１ｃを設定し、プライマリＯＳ２０５を通じてコンピュータ１０を再起動する。このとき一旦システム・メモリ１５の電源が停止して記憶内容は消失する。
【００３１】
ブロック３０７ではリセットされたＣＰＵ１１がシステム・ファームウェア２０１を実行してブートを開始する。システム・ファームウェア２０１は、ＰＯＳＴを実行してからレジスタ３１のフラグ３１ａ、ｃを参照して、今回のブートＯＳがシングルＯＳの動作環境下におけるセカンダリＯＳ２２５であると認識してからフラグ３１ｃを解除し、さらにセカンダリＯＳ２２５の動作環境を示すフラグ３１ｂを設定する。
【００３２】
ＰＯＳＴや認証などのプリブートの処理を終えたシステム・ファームウェア２０１が、セカンダリＯＳ２２５のブート・ローダにＣＰＵ１１の制御権を渡すと、セカンダリＯＳのブート・イメージ２５３（図７）がロードされる。このとき物理アドレス空間５１にはメモリ・イメージ２５に対応するデータ構造になるように、セカンダリＯＳ２２５のメモリ・イメージが記憶される。
【００３３】
コンピュータ１０のハードウェア資源は、プライマリＯＳ２０５の動作環境とセカンダリＯＳ２２５の動作環境で共用するが、システム・ファームウェア２０１は、セカンダリＯＳ２２５に対して与えるハードウェア資源をプライマリＯＳ２０５に比べて制限する。一例では、プライマリＯＳ２０５にはシステム・メモリ１５のＯＳが利用できる最大限の物理アドレス空間を付与するが、セカンダリＯＳ２２５にはそれより少ない１ＧＢの物理アドレス空間を付与する。
【００３４】
セカンダリＯＳ２２５の動作環境に付与するメモリ資源を制限するのは、セカンダリＯＳ２２５の物理アドレス空間を、メモリ・イメージ２５５を確保している物理アドレス空間５１の中に形成するためである。したがって、システム・メモリ１５は、セカンダリＯＳ２２５の物理アドレス空間を確保してもプライマリＯＳ２０５の動作環境に支障がでない程度のサイズにする必要がある。必要とするシステム・メモリ１５のサイズは、プライマリＯＳ２０５およびセカンダリＯＳ２２５の規模により異なってくる。
【００３５】
このときシステム・ファームウェア２０１は、セカンダリＯＳ２２５にとって必要がないハードウェア資源を割り当てないようにしたり低い機能で使用させたりすることができる。たとえば、セカンダリＯＳ２２５の動作環境に対しては、ＣＰＵ１１のクロック周波数を下げたり、コプロセッサを停止したりして消費電力の低減を図ることができる。また、セカンダリＯＳ２２５の動作環境では、内蔵または外付けの記憶装置の利用を制限して、セキュリティを向上させることができる。セカンダリＯＳ２２５の動作環境での消費電力の低減およびセキュリティの向上を図ることで、モバイル環境で利用し易くすることができる。
【００３６】
セカンダリＯＳのブート・イメージ２５３がロードされると、自動的に動作するアプリケーション２２９によって生成されたユーザ・データがメモリ・イメージに加えられ、さらに、切換マネージャ２２７が動作を開始する。切換マネージャ２２７はフラグ３１ａを参照して現在の動作環境がシングルＯＳであることを認識する。ブロック３０８で切換マネージャ２２７は、デュアルＯＳ２２５の動作環境を構築するための切換ファイルを生成してＡＣＰＩ＿ＮＶＳ領域５５に書き込みセカンダリＯＳ２２５にランタイム・イメージ２５７を生成するように要求する。
【００３７】
セカンダリＯＳ２２５は、ＣＰＵ１１やその他のデバイスのシステム・コンテキストをシステム・メモリ１５に記憶する。メモリ・イメージとシステム・コンテキストを含むある時点でのシステム・メモリ１５が記憶するスナップ・ショットをランタイム・イメージということにする。ランタイム・イメージ２５７は、セカンダリＯＳ２２５の動作環境をアクティブにしてパワー・オン状態に復帰するためのファイルも含む。
【００３８】
ランタイム・イメージの作成が完了すると、ブロック３０９でセカンダリＯＳ２２５は、システム・メモリ１５の記憶を維持しながらＣＰＵ１１をリセットしてその制御権をシステム・ファームウェア２０１に渡す。システム・ファームウェア２０１は、ＡＣＰＩ＿ＮＶＳ領域５５の切換ファイルを参照して、システム・メモリ１５が記憶するランタイム・イメージ２５７をＨＤＤ２１に退避する。このときシステム・ファームウェア２０１はランタイム・イメージの退避先のアドレスとサイズをＡＣＰＩ＿ＮＶＳ領域５５に書き込んで、プライマリＯＳ２０５の動作環境に通知することができる。
【００３９】
ランタイム・イメージ２５７の退避は、システム・ファームウェア２０１に代えて切換マネージャ２２７が行うようにしてもよい。そのために、たとえば、ランタイム・イメージ２５７をシステム・ファームウェア２０１が、システム・メモリ１５の別の領域にコピーしてからレジュームしてセカンダリＯＳ２２５の動作環境を動作させる。その後、切換マネージャ２２７がコピーされたランタイム・イメージをＨＤＤ２１に退避させることができる。
【００４０】
ランタイム・イメージ２５７を退避したシステム・ファームウェア２０１は、レジスタ３１のフラグ３１ａを設定してデュアルＯＳの構築が完了したことを表明し、ブロック３１１でコンピュータ１０を再起動する。ＣＰＵ１１のリセットにより実行を開始したシステム・ファームウェア２０１は、フラグ３１ａ、３１ｃを確認してからプライマリＯＳ２０５をブートする。システム・メモリ１５が記憶していたランタイム・イメージ２５７は消失しシステム・メモリ１５には図９に示すプライマリＯＳ２０５のメモリ・イメージ２５５が記憶されて、コンピュータ１０はプライマリＯＳ２０５の動作環境で動作する。
【００４１】
ブロック３０１からブロック３１１までの手順が自動的に実行されて、ブロック３１３でコンピュータ１０には、ＨＤＤ２１がセカンダリＯＳのランタイム・イメージ２５７を記憶し、システム・メモリ１５がプライマリＯＳのメモリ・イメージ２５５を記憶するデュアルＯＳの動作環境１００（図４）が構築される。図４において、デュアルＯＳの動作環境１００は、プライマリＯＳの動作環境４０１、４２１、切換サスペンド状態１０９、セカンダリＯＳの動作環境４１１、ＡＣＰＩサスペンド状態（Ｓ３ステート）１０１、１０５、およびＡＣＰＩハイバネーション状態（Ｓ４ステート）１０３、１０７を含んでいる。ＡＣＰＩサスペンド状態およびＡＣＰＩハイバネーション状態は、ＡＣＰＩが定義するパワー・ステートである。
【００４２】
プライマリＯＳの動作環境４０１、４２１からは、ＡＣＰＩサスペンド状態１０５またはＡＣＰＩハイバネーション状態１０７に遷移し、また遷移前のプライマリＯＳの動作環境４０１、４２１にレジュームすることができる。さらに、切換サスペンド状態１０９を経由して、必要なときに迅速にセカンダリＯＳ２２５の動作環境に切り換えることができる。
【００４３】
図６は、デュアルＯＳの動作環境１００が構築されているコンピュータ１０において、プライマリＯＳ２０５の動作環境とセカンダリＯＳ２２５の動作環境を双方向に切り換える手順を示している。ブロック４０１でコンピュータ１０がプライマリＯＳ２０５の動作環境で動作している。ここで、セカンダリＯＳ２２５の動作環境に移行したいユーザは、ブロック４０３で切換マネージャ２０７が提供するユーザ・インターフェースを通じてセカンダリＯＳ２２５の動作環境への切換操作を行う。ブロック４０５で切換マネージャ２０７は、デバイス・ドライバ２０３を通じてＨＤＤ２１に退避していたセカンダリＯＳ２２５のランタイム・イメージ２５７を、プライマリＯＳ２０５のメモリ・イメージ２５５を記憶している物理アドレス空間５１の所定の場所に転送するための処理を開始する。
【００４４】
通常、ＯＳはアプリケーションやデバイスから要求されたメモリ領域を論理アドレス空間に対して割り付け、論理アドレス空間を物理アドレス空間にマッピングする。ＯＳは物理アドレス空間が足りないときはいずれかの物理アドレス空間をＨＤＤ２１に設けた仮想メモリ空間にスワップ・アウトする。しかし、ランタイム・イメージの転送先の物理アドレス空間は、現在スワップ・アウトされておらず、かつ、ランタイム・イメージ２５７を転送してからプライマリＯＳ２０５の動作環境が動作を停止するまでの間にスワップ・アウトされないことが保証されたメモリ領域にする必要がある。
【００４５】
プライマリＯＳ２０５はこのようなメモリ領域を、ＤＭＡ要求があったときに確保する領域として割り当てることができる。デバイス・ドライバ２０３がシステム・コールを行って、セカンダリＯＳ２２５の物理アドレス空間として必要なメモリ領域（ここでは一例として１ＧＢ）をＤＭＡに使用するメモリ領域として割り当てるようにプライマリＯＳ２０５に要求すると、プライマリＯＳ２０５は、割り当てた物理アドレス空間５１のなかの所定のアドレスとサイズを返送する。
【００４６】
プライマリＯＳ２０５が、物理アドレス空間５１に１ＧＢの連続する物理アドレス空間を確保できない場合は、離散的なメモリ領域の集合になる場合もある。システム・メモリ１５のサイズに対してセカンダリＯＳ２２５が使用する物理アドレス空間のサイズが大きくて、プライマリＯＳ２０５が要求された物理アドレス空間を確保できない場合、プライマリＯＳはデバイス・ドライバ２０３にエラーを返送する。その場合、この時点でのセカンダリＯＳ２２５への動作環境の移行はできない。ユーザはいくつかのアプリケーションを停止して、スワップを禁止した物理アドレス空間を解放してから切換操作を行うことができる。
【００４７】
デバイス・ドライバ２０３の要求によりプライマリＯＳ２０５が物理アドレス空間５１の中に確保した連続的または離散的な転送先のメモリ領域をＤＭＡ空間２５９ということにする。つづいて、デバイス・ドライバ２０３は、ランタイム・イメージ２５７を一旦システム・メモリ１５のバッファ領域に読み出してからＤＭＡ空間２５９に転送する。プライマリＯＳ２０５が、スワップ・アウトされない物理アドレス空間を確保してランタイム・イメージ２５７をＤＭＡ転送できる場合は、ＤＭＡ転送を利用することもできる。ランタイム・イメージ２５７が転送されてもシステム・コンテキストがＣＰＵ１１やその他のデバイスに復帰していないため、セカンダリＯＳ２２５の動作環境はこの時点で動作しない。
【００４８】
ＤＭＡ空間２５９が複数の離散的な領域で構成されていても、セカンダリＯＳ２２５の動作環境は動作することができるが、ブロック３０７でロードした連続した物理アドレス空間にしておけば、セカンダリＯＳ２２５に特別な変更を加えないでもランタイム・イメージ２５７を作成したときの状態で動作できる。ブロック４０６で切換マネージャ２０７は、ＤＭＡ空間２５９に記憶されているランタイム・イメージ２５７を、ブロック３０８でランタイム・イメージ２５７を記憶していた１ＧＢの連続する物理アドレス空間に移動するための統合ファイル２６１を作成してＡＣＰＩ＿ＮＶＳ領域５５に記憶する。
【００４９】
統合ファイル２６１は、システム・ファームウェア２０１が離散的なＤＭＡ空間２５９のランタイム・イメージ２５７を連続的な物理アドレス空間に移動できるように、転送元のアドレス、データ・サイズおよび転送先のアドレスを順番に記述したファイルである。移動先の連続する物理アドレス空間をプライマリＯＳ２０５の動作環境が使用している場合は、そこのデータを一旦他のスペースに退避してから連続する物理アドレス空間に転送する。
【００５０】
統合ファイル２６１は、ランタイム・イメージ２５７を連続した物理アドレス空間から元の離散的なＤＭＡ空間２５９に戻し、同時にプライマリＯＳ２０５の動作環境を構成するランタイム・イメージ２６３（図８）を元の位置に戻す手順も含んでいる。統合ファイル２６１の作成が終了するとブロック４０７で切換マネージャ２０７は、プライマリＯＳ２０５に切換サスペンド状態１０９（図４）に遷移するように要求する。
【００５１】
切換サスペンド状態１０９は、プライマリＯＳ２０５の動作状態とセカンダリＯＳ２２５の動作状態を切り換える際に、それまで動作していた動作環境のシステム・コンテキストをシステム・メモリ１５に記憶してランタイム・イメージを作成したのちに動作を停止する状態をいう。切換サスペンド状態は、図４に示すＡＣＰＩサスペンド状態１０１、１０５と同様に、メモリ・イメージおよびシステム・コンテキストがシステム・メモリ１５に維持されるが、ＣＰＵ１１の電源は停止せず、ＣＰＵ１１以外のデバイスの電源は必要に応じて制御することができる。したがって切換サスペンド状態では、ＣＰＵ１１をリセットして制御権をシステム・ファームウェア２０１に渡し動作することができる。プライマリＯＳ２０５は、システム・コンテキストを記憶してランタイム・イメージ２６３を生成する。
【００５２】
プライマリＯＳ２０５の動作環境からはＡＣＰＩサスペンド状態１０５と切換サスペンド状態１０９のいずれかに遷移することができるが、遷移先は切換マネージャ２０７がレジスタ３１のフラグ３１ｄを使って制御することができる。切換マネージャ２０７は、セカンダリＯＳ２２５を通じてレジスタ３１に切換処理を示すフラグ３１ｄを設定したのちにＣＰＵ１１をリセットする。
【００５３】
ブロック４０９で、パワーオン・リセットしたＣＰＵ１１はシステム・ファームウェア２０１を実行してレジスタ３１のフラグ３１ｂ、３１ｄを参照し、プライマリＯＳ２０５の動作環境からセカンダリＯＳ２２５の動作環境への切換処理が発生していることを認識して、ＡＣＰＩ＿ＮＶＳ領域５５の統合ファイル２６１を読み取る。システム・ファームウェア２０１は統合ファイル２６１の手順にしたがって離散的なＤＭＡ空間２５９に記憶されたランタイム・イメージ２５７をブロック３０７でセカンダリＯＳ２２５の動作環境に付与した連続する１ＧＢの物理アドレス空間にコピーする。さらにシステム・ファームウェア２０１は、セカンダリＯＳ２２５の動作環境であることを表明するためにフラグ３１ｂを設定しフラグ３１ｄを解除する。
【００５４】
システム・ファームウェア２０１が、ランタイム・イメージ２５７を構成するセカンダリＯＳ２５５にＣＰＵ１１の制御権を渡すと、レジュームの処理プログラムがシステム・コンテキストを各デバイスに復帰させてセカンダリＯＳ２２５の動作環境をアクティブにする。その結果ブロック４１１でコンピュータ１０は、ブロック３０８でランタイム・イメージ２５７を作成したときと同じセカンダリＯＳ２２５の動作環境に移行する。アプリケーション２２９が実行されるとセカンダリＯＳ２２５の動作環境で新たなメモリ・イメージが生成される。
【００５５】
図４に示すように、セカンダリＯＳ２２５の動作環境では、ＡＣＰＩサスペンド状態１０１またはＡＣＰＩハイバネーション状態１０３に遷移し、元のセカンダリＯＳ２２５の動作環境にレジュームすることができる。また、切換サスペンド状態１０９を経由してプライマリＯＳ２０５の動作環境に移行することもできる。プライマリＯＳ２０５の動作環境に移行したいユーザは、ブロック４１３で切換マネージャ２２７が提供するユーザ・インターフェースを通じて切換操作を行う。切換マネージャ２２７はブロック４１４で、プライマリＯＳ２０５の動作環境へ移行するための切換ファイルを生成してＡＣＰＩ＿ＮＶＳ領域５５に書き込む。さらに切換マネージャ２２７は、フラグ３１ｄを設定してセカンダリＯＳ２２５に切換サスペンド状態１０９に移行するように要求する。
【００５６】
イベントを受け取ったセカンダリＯＳ２２５は、ＣＰＵ１１やその他のデバイスのシステム・コンテキストをシステム・メモリ１５に記憶して新たなランタイム・イメージ２６５を生成し、切換サスペンド状態１０９に移行する。リセットされたＣＰＵ１１は、システム・ファームウェア２０１を実行してレジスタ３１ｂ、３１ｄを参照し、セカンダリＯＳ２２５の動作環境からプライマリＯＳ２０５の動作環境に移行するための切換処理が必要なことを認識する。
【００５７】
ブロック４１５でシステム・ファームウェア２０１は、ＡＣＰＩ＿ＮＶＳ領域５５の切換ファイルの手順にしたがって、ランタイム・イメージ２６５をＨＤＤ２１に退避する。このときセカンダリＯＳ２２５は、先に退避していたランタイム・イメージ２５７を上書きするようにランタイム・イメージ２６５を記憶してもよい。プライマリＯＳ２０５は、ブロック４０７で切換サスペンド状態に遷移したときの状態に復帰する必要がある。
【００５８】
しかし、ブロック４０９で、プライマリＯＳ２０５が認識しないところでシステム・ファームウェア２０１がランタイム・イメージ２６３の配置を変更している場合は、復帰することができない。そのため、ランタイム・イメージ２６５を退避したシステム・ファームウェア２０１はブロック４１７で統合ファイル２６１を読み取って、プライマリＯＳ２０５のランタイム・イメージ２６３をブロック４０７で切換サスペンド状態に遷移した直前の状態に戻す。
【００５９】
ブロック４１９でシステム・ファームウェア２０１がフラグ３１ｂ、３１ｄを解除してからＣＰＵ１１の制御権をプライマリＯＳ２０５に渡すと、プライマリＯＳ２０５はレジュームの処理プログラムがシステム・コンテキストを各デバイスに復帰させてプライマリＯＳ２０５の動作環境をアクティブにする。コンピュータ１０はブロック４２１で、プライマリＯＳ２０５の動作環境がブロック４０７で切換サスペンド状態１０９に移行した直前の状態に戻る。
【００６０】
このときＤＭＡ空間２５９が記憶するデータは、ランタイム・イメージ２５７からランタイム・イメージ２６５に変化しているが、ＤＭＡ空間２５９にはプライマリＯＳ２０５の動作環境でアクセスしていないためレジュームに影響はない。ＤＭＡ空間２５９はプライマリＯＳ２０５の動作環境とセカンダリＯＳ２２５の動作環境を頻繁に切り換えるときは、セカンダリＯＳ２２５の動作環境として物理アドレス空間５１の固定したアドレスに割り当ててもよいが、その都度、プライマリＯＳ２０５の動作環境に対して解放して、セカンダリＯＳ２２５の動作環境に切り換えるときに確保することができる。
【００６１】
ブロック４２３で切換マネージャ２０７はデバイス・ドライバ２０３を通じてプライマリＯＳ２０５に解放を要求することで、確保していたＤＭＡ空間２５９をプライマリＯＳ２０５の動作環境に解放する。それ以後プライマリＯＳ２０５は、ＤＭＡ空間２５９を含む物理アドレス空間５１を利用することができる。続いてセカンダリＯＳ２５５の動作環境に移行する場合はブロック４０３の手順から開始する。
【００６２】
以上、動作環境の切換手順を特定の実施の形態を例にして説明したが、本発明はここに例示した手順に限定するものではない。図５、図６に示した各手順を統合したり細分化したりすることも本発明の思想の範囲であれば、本発明の範囲に含まれる。また、各手順の順番を入れ替えることも本発明の効果を奏する範囲であれば、本発明の範囲に含まれる。本発明にかかる切換手順は特許請求の範囲に記載のとおりである。
【００６３】
３以上の動作環境では、主たる動作環境に付与した物理アドレス空間に存在するＤＭＡ空間２５９に、３番目の動作環境のランタイム・イメージをコピーして切り換えることができる。この場合は、主たる動作環境を中心にして、２番目以降の動作環境を切り換えることになる。他の方法では、２番目目の動作環境に付与したＤＭＡ空間に３番目の動作環境のランタイム・イメージをコピーして切り換えることができる。この場合は、順番に動作環境を切り換えることになる。
【００６４】
これまで動作環境の切り換えを図３に示したソフトウェアがハードウェアと協働して行う例を説明したが、本発明はソフトウェアとハードウェアの協働によるハードウェア要素で構成することもできる。たとえば、ランタイム・イメージ２５７、２６５をＨＤＤ２１に退避する処理を退避部が行い、ＨＤＤ２１からシステム・メモリ１５に転送する処理を転送部が行い、切換サスペンド状態を経由してプライマリＯＳ２０５の動作環境とセカンダリＯＳ２２５の動作環境を切り換える処理を切換部が行うようにすることができる。転送部は、システム・メモリ１５にスワップ・アウトを禁止した物理メモリ空間を確保する処理を行うことができる。さらに、ＤＭＡ空間２５９をプライマリＯＳ２０５の動作環境に解放する処理を解放部が行うことができる。
【００６５】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００６６】
１０  コンピュータ
１３  チップセット
１５  システム・メモリ
２１  ハードディスク（ＨＤＤ）
２９  エンベデッド・コントローラ（ＥＣ）
１００  デュアルＯＳの動作環境
１０１、１０５  ＡＣＰＩが規定するサスペンド状態
１０３、１０７  ＡＣＰＩが規定するハイバネーション状態
１０９  切換サスペンド状態
２５１  プライマリＯＳのブート・イメージ
２５３  セカンダリＯＳのブート・イメージ
２５５  プライマリＯＳのメモリ・イメージ
２５７、２６５  セカンダリＯＳのランタイム・イメージ
２６３  プライマリＯＳのランタイム・イメージ
２５９  ＤＭＡ空間
【図１】
2016018555.tif 000003
【図２】
2016018555.tif 000004
【図３】
2016018555.tif 000005
【図４】
2016018555.tif 000006
【図５】
2016018555.tif 000007
【図６】
2016018555.tif 000008
【図７】
2016018555.tif 000009
【図８】
2016018555.tif 000010
【図９】
2016018555.tif 000011