(57)【要約】【課題】スリープ状態のＯＳのメモリ・イメージを保護する。【解決手段】  ＣＰＵ１１は第１のＯＳまたは第２のＯＳを切り換えて実行する。第１のＯＳはメイン・メモリ１３にロードされ、第２のＯＳは補助メモリ２５にロードされる。補助メモリはＰＣＩｅインターフェースでチップ・セット１９に接続される。メイン・メモリと補助メモリは、一方がＣＰＵの制御権を得たアクティブ状態のときに他方はメモリ・イメージの記憶を維持しているがＣＰＵの制御権がないスリープ状態に遷移する。ＢＩＯＳはアクティブ状態のＯＳがスリープ状態のＯＳのメモリ・イメージを記憶するメイン・メモリまたは補助メモリにアクセスできないようにするために、ＰＯＳＴの間に対応するコントローラをディスエーブルに設定する。【選択図】図１
2014219947.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティング・システムを実行することが可能なコンピュータであって、
第１のオペレーティング・システムまたは第２のオペレーティング・システムの実行が可能なプロセッサと、
前記第１のオペレーティング・システムをロードする第１のランダム・アクセス・メモリと、
前記第１のランダム・アクセス・メモリとは異なるコントローラに接続され前記第２のオペレーティング・システムをロードする第２のランダム・アクセス・メモリと、
前記コンピュータがサスペンド状態からレジュームする際に、前記第２のオペレーティング・システムをスリープ状態に遷移させながら前記第１のオペレーティング・システムをアクティブ状態に遷移させ、または前記第１のオペレーティング・システムをスリープ状態に遷移させながら前記第２のオペレーティング・システムをアクティブ状態に遷移させるように前記コンピュータを機能させるシステム・ファームウェアと
を有するコンピュータ。
【請求項２】
前記第２のランダム・アクセス・メモリの動作を制御する第２のコントローラを有し、
前記システム・ファームウェアは、前記第１のオペレーティング・システムをアクティブ状態に遷移させている間に前記第１のオペレーティング・システムによる前記第２のコントローラに対するアクセスを阻止するように機能させる請求項１に記載のコンピュータ。
【請求項３】
前記第２のコントローラが前記プロセッサに接続されたチップ・セットに組み込まれているメモリ・コントローラである請求項２に記載のコンピュータ。
【請求項４】
前記システム・ファームウェアは前記コンピュータがパワー・オフ状態からブートする際に前記第２のコントローラに対するアクセスを阻止するように機能させる請求項２または請求項３に記載のコンピュータ。
【請求項５】
前記第１のランダム・アクセス・メモリの動作を制御する第１のコントローラを有し、
前記システム・ファームウェアは、前記第２のオペレーティング・システムをアクティブ状態に遷移させている間に前記第２のオペレーティング・システムによる前記第１のコントローラに対するアクセスを阻止するように機能させる請求項２から請求項４のいずれかに記載のコンピュータ。
【請求項６】
前記第１のコントローラが前記プロセッサに組み込まれたメモリ・コントローラである請求項５に記載のコンピュータ。
【請求項７】
前記システム・ファームウェアは前記コンピュータがサスペンド状態からレジュームする際に前記第１のコントローラに対するアクセスを阻止するように機能させる請求項５または請求項６に記載のコンピュータ。
【請求項８】
前記コンピュータがサスペンド状態からただちにレジュームする際に前記システム・ファームウェアは、前記第１のオペレーティング・システムと前記第２のオペレーティング・システムの一方がアクティブ状態に遷移し他方がスリープ状態に遷移するように機能させる請求項１から請求項７のいずれかに記載のコンピュータ。
【請求項９】
複数のオペレーティング・システムを実行することが可能なコンピュータであって、
第１のオペレーティング・システムまたは第２のオペレーティング・システムの実行が可能なプロセッサと
前記第１のオペレーティング・システムを格納するディスク・ドライブと、
前記第１のオペレーティング・システムがロードされる第１のランダム・アクセス・メモリと、
第２のオペレーティング・システムがロードされる第２のランダム・アクセス・メモリを含む着脱式のメモリ・モジュールの接続が可能なインターフェースと、
サスペンド状態からレジュームする際に、前記第２のオペレーティング・システムのメモリ・イメージを前記第２のランダム・アクセス・メモリに維持しながら前記第１のオペレーティング・システムに前記プロセッサの制御権を渡し、または、前記第１のオペレーティング・システムのメモリ・イメージを前記第１のランダム・アクセス・メモリに維持しながら前記第２のオペレーティング・システムに前記プロセッサの制御権を渡すように前記コンピュータを機能させるシステム・ファームウェアと
を有するコンピュータ。
【請求項１０】
前記メモリ・モジュールが前記第２のオペレーティング・システムを格納する不揮発性メモリを含み、前記第２のオペレーティング・システムが前記不揮発性メモリからロードされる請求項９に記載のコンピュータ。
【請求項１１】
前記第２のランダム・アクセス・メモリが不揮発性のメモリ・セルで構成されている請求項９または請求項１０に記載のコンピュータ。
【請求項１２】
複数のオペレーティング・システムを実行することが可能なコンピュータであって、
第１のオペレーティング・システムまたは第２のオペレーティング・システムの実行が可能なプロセッサと、
前記第１のオペレーティング・システムをロードする第１のランダム・アクセス・メモリと、
前記第１のランダム・アクセス・メモリとは異なるコントローラに接続され前記第２のオペレーティング・システムをロードする第２のランダム・アクセス・メモリと、
前記第１のオペレーティング・システムおよび前記第２のオペレーティング・システムからアクセスすることが可能な複数の周辺デバイスと、
サスペンド状態からレジュームする際に、前記第１のオペレーティング・システムと前記第２のオペレーティング・システムを一方がアクティブ状態で他方がスリープ状態になるように切り換え、前記第２のオペレーティング・システムがアクティブ状態のときに前記複数の周辺デバイスの中から選択したいずれかの周辺デバイスにアクセスできないように前記コンピュータを機能させるシステム・ファームウェアと
を有するコンピュータ。
【請求項１３】
前記システム・ファームウェアは、前記第１のオペレーティング・システムがアクティブ状態のときに前記第１のオペレーティング・システムから前記第２のランダム・アクセス・メモリにアクセスできないように前記コンピュータを機能させる請求項１２に記載のコンピュータ。
【請求項１４】
前記選択した周辺デバイスが、不揮発性の記憶デバイスである請求項１２または請求項１３に記載のコンピュータ。
【請求項１５】
前記選択した周辺デバイスが、ネットワークに接続するための通信デバイスである請求項１２から請求項１４のいずれかに記載のコンピュータ。
【請求項１６】
複数のオペレーティング・システムを実行することが可能なコンピュータにおいて前記オペレーティング・システムのメモリ・イメージを保護する方法であって、
システム・ファームウェアが第１のオペレーティング・システムを第１のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
システム・ファームウェアが前記第１のオペレーティング・システムのメモリ・イメージを前記第１のランダム・アクセス・メモリに維持しながら第２のオペレーティング・システムを前記第１のランダム・アクセス・メモリとは異なるコントローラに接続された第２のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
サスペンド状態からレジュームする際に、前記システム・ファームウェアが前記第２のオペレーティング・システムに前記プロセッサの制御権を渡すように前記コンピュータを機能させるステップと
を有する方法。
【請求項１７】
前記システム・ファームウェアが、前記第２のオペレーティング・システムによる前記第１のランダム・アクセス・メモリに対するチャネルをディスエーブルに設定するステップと、
前記システム・ファームウェアが前記第１のオペレーティング・システムによる前記第２のランダム・アクセス・メモリに対するチャネルをディスエーブルに設定するステップと
を有する請求項１６に記載の方法。
【請求項１８】
複数のオペレーティング・システムを実行することが可能な第１のコンピュータが構築した動作環境を複数のオペレーティング・システムを実行することが可能な第２のコンピュータに移転する方法であって、
第２のランダム・アクセス・メモリと不揮発性メモリを含むメモリ・モジュールを前記第１のコンピュータに接続するステップと、
システム・ファームウェアが第１のオペレーティング・システムを第１のランダム・アクセス・メモリにロードするように前記第１のコンピュータを機能させるステップと、
システム・ファームウェアが前記第１のオペレーティング・システムのメモリ・イメージを前記第１のランダム・アクセス・メモリに維持しながら第２のオペレーティング・システムを前記第２のランダム・アクセス・メモリにロードするように前記第２のコンピュータを機能させるステップと、
サスペンド状態からレジュームする際に、前記システム・ファームウェアが前記第１のオペレーティング・システムと前記第２のオペレーティング・システムを一方がアクティブ状態で他方がスリープ状態になるように切り換えるステップと、
前記第２のランダム・アクセス・メモリの記憶を維持しながら前記メモリ・モジュールを前記第１のコンピュータから取り外すステップと、
前記メモリ・モジュールを前記第２のコンピュータに接続するステップと
を有する方法。
【請求項１９】
前記第２のオペレーティング・システムが前記不揮発性メモリに格納されている請求項１８に記載の方法。
【請求項２０】
前記第２のオペレーティング・システムの動作環境で生成したデータを前記不揮発性メモリに記憶するステップを有する請求項１８または請求項１９に記載の方法。
【請求項２１】
複数の周辺デバイスを搭載し複数のオペレーティング・システムを実行することが可能なコンピュータにおいて、安全性を向上した動作環境を構築する方法であって、
システム・ファームウェアが第１のオペレーティング・システムを第１のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
前記システム・ファームウェアが第２のオペレーティング・システムを前記第１のランダム・アクセス・メモリとは異なるコントローラに接続された第２のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
サスペンド状態からレジュームする際に、前記第１のオペレーティング・システムと前記第２のオペレーティング・システムを一方がアクティブ状態で他方がスリープ状態になるように切り換えるステップと、
前記システム・ファームウェアが前記第２のオペレーティング・システムがアクティブ状態のときに前記複数の周辺デバイスの中から選択したいずれかの周辺デバイスにアクセスできないように前記コンピュータを機能させるステップと
を有する方法。
【請求項２２】
第１のオペレーティング・システムまたは第２のオペレーティング・システムを実行することが可能なプロセッサを備えるコンピュータに、
前記第１のオペレーティング・システムを第１のランダム・アクセス・メモリにロードする機能と、
前記第２のオペレーティング・システムを前記第１のランダム・アクセス・メモリとは異なるコントローラに接続された第２のランダム・アクセス・メモリにロードする機能と、
前記システム・ファームウェアが前記第１のランダム・アクセス・メモリに対するチャネルを閉じて前記第１のランダム・アクセス・メモリが記憶する前記第１のオペレーティング・システムのメモリ・イメージを維持しながら前記第２のオペレーティング・システムに前記プロセッサの制御権を渡す機能と、
前記システム・ファームウェアが前記第２のランダム・アクセス・メモリに対するチャネルを閉じて前記第２のランダム・アクセス・メモリが記憶する前記第２のオペレーティング・システムのメモリ・イメージを維持しながら前記第１のオペレーティング・システムに前記プロセッサの制御権を渡す機能と、
を実現させるためのコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータに安全な動作環境を構築する技術に関し、さらには複数の動作環境を備えるコンピュータにおいて相互に干渉しない独立した動作環境を構築する技術に関する。
【背景技術】
【０００２】
コンピュータの同一のハードウェア環境で、それぞれ特徴を備える複数のオペレーティング・システム（ＯＳ）を切り換えて実行する技術が知られている。特許文献１は、複数のＯＳを搭載したコンピュータにおいて動作するＯＳを切り換える発明を開示する。同文献には、起動時に複数のＯＳのブート・ローダに順次アクセスして、システムに共存するすべてのＯＳを、割り当てられたメイン・メモリの論理メモリ・ブロックにロードすることが記載されている。また動作するＯＳを切り換える際にサスペンドすることが記載されている。
【０００３】
特許文献２は、動作しないＯＳが使用するメモリ空間をＳＭＭ空間に移したり、ＳＭＭ空間の境界を変更したりして動作していないＯＳを保護する技術を開示する。特許文献３は、複数のＯＳの切り換えが可能な情報処理装置において、あるＯＳが保持する情報を他のＯＳから保護することができる情報処理装置を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−２５６０６６号公報
【特許文献２】米国特許第８２３４５０６号明細書
【特許文献３】特開２００５−１１３３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の発明では、同一の物理メモリ上に動作しているＯＳと動作しないＯＳが共存する形で記憶される。ＯＳは、リング・プロテクションという特権階層を形成するプロセッサで動作するときに最も高い特権モードで動作して、すべてのメモリ空間にアクセスすることができる。ＯＳ以外のプログラムは、ＯＳが管理する範囲でＯＳより低い特権モードでしか動作できない。したがって、ＯＳが正常である限りＯＳが管理するプログラムのプロセスは、他のプログラムが記憶された領域にアクセスすることはない。しかしＯＳがマルウェアに汚染されたり、ルート・キットといわれる不正なプログラムを通じてアプリケーション・プログラム（アプリケーション）がＯＳの特権モードを取得したりすると、動作していないＯＳが書き換えられたりウィルスを埋め込まれたりする可能性がある。
【０００６】
特許文献２の発明は、ＯＳがアクセスできる空間をＢＩＯＳが制御しているので安全性は高いが、同一の物理メモリ上に２つのＯＳをロードしてＳＭＭ空間を制御しているため柔軟性に欠ける面がある。特許文献３の発明では、第１のＯＳと第２のＯＳがそれぞれ異なるハードウェアを管理する環境下で切替管理部という特別なハードウェアを用意して実現している。また、メモリはＯＳごとにバンクが分かれておりメモリ保護機構でアクセスできるバンクを切り替えるようになっている。ＣＰＵをリセット信号で切り替えているため残っているＣＰＵの内部状態を切り替えるために複雑な処理が必要になる。
【０００７】
そこで本発明の目的は、複数の動作環境を有するコンピュータにおいて、アクティブ状態の動作環境がスリープ状態の動作環境に影響を与えないようにする方法を提供することにある。さらに本発明の目的は、ＯＳおよびハードウェアの変更をしないでスリープ状態の動作環境を保護する方法を提供することにある。さらに本発明の目的は、コンピュータに通常の動作環境よりも安全性が高い動作環境を構築する方法を提供することにある。さらに本発明の目的は、同一の動作環境を複数のコンピュータに構築する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の第１の態様では、複数のオペレーティング・システムを実行することが可能なコンピュータが、プロセッサと第１のランダム・アクセス・メモリと第２のランダム・アクセス・メモリとシステム・ファームウェアを有する。プロセッサは第１のオペレーティング・システムまたは第２のオペレーティング・システムを実行することができる。第１のランダム・アクセス・メモリと第２のランダム・アクセス・メモリは異なるコントローラに接続される。
【０００９】
第１のランダム・アクセス・メモリには、第１のオペレーティング・システムがロードされ、第２のランダム・アクセス・メモリには第２のオペレーティング・システムがロードされる。システム・ファームウェアはサスペンド状態からレジュームする際に、第２のオペレーティング・システムをスリープ状態に遷移させながら第１のオペレーティング・システムをアクティブ状態に遷移させ、または第１のオペレーティング・システムをスリープ状態に遷移させながら第２のオペレーティング・システムをアクティブ状態に遷移させることができる。
【００１０】
このような構成によれば、アクティブ状態のオペレーティング・システムとスリープ状態のオペレーティング・システムは異なるランダム・アクセス・メモリにロードされているため書き換えに対する安全性が向上する。しかもシステムをサスペンド状態からレジュームするときにパワー・オン・リセットによりプロセッサの制御権を得たシステム・ファーウェアが切り換え処理をするため、ＯＳやハードウェアを変更しないで動作環境を切り換えることができる。
【００１１】
第１のランダム・アクセス・メモリと第２のランダム・アクセス・メモリは異なるコントローラに接続され、システム・ファームウェアが異なるデバイスとして認識できるものであれば物理的に分離している必要はなく、物理的に１つのメモリ・モジュールに形成してもよい。第１のランダム・アクセス・メモリはコンピュータが通常使用する容量の大きなメイン・メモリとし、第２のランダム・アクセス・メモリは、周辺デバイスとして使用するメイン・メモリよりも容量の小さなメモリ・モジュールとすることができる。第２のランダム・アクセス・メモリは、第１のランダム・アクセス・メモリの物理アドレス空間に割り当てられたアドレスを使用してプロセッサがメモリマップドＩ／Ｏ方式でアクセスできるものでもよい。
【００１２】
システムが第２のランダム・アクセス・メモリの動作を制御する第２のコントローラを有するときに、システム・ファームウェアは、第１のオペレーティング・システムをアクティブ状態に遷移させている間に第１のオペレーティング・システムによる第２のコントローラに対するアクセスを阻止するようにシステムを設定することができる。第２のコントローラはプロセッサに接続されたチップ・セットに組み込むことができる。
【００１３】
システム・ファームウェアはコンピュータがパワー・オフ状態からブートする際に第１のオペレーティング・システムによる第２のコントローラに対するアクセスを阻止するように設定することができる。システムが第１のランダム・アクセス・メモリの動作を制御する第１のコントローラを有するときに、システム・ファームウェアは、第２のオペレーティング・システムをアクティブ状態に遷移させている間に第２のオペレーティング・システムによる第１のコントローラに対するアクセスを阻止するようにシステムを設定することができる。
【００１４】
第１のコントローラは、プロセッサに組み込まれたメモリ・コントローラとすることができる。システム・ファームウェアはコンピュータがサスペンド状態からレジュームする際に第２のオペレーティング・システムによる第１のコントローラに対するアクセスを阻止するようにシステムを設定することができる。オペレーティング・システムは、システム・ファームウェアが設定したアクセス禁止を解除することができないため、サスペンド状態のオペレーティング・システムの書き換えに対する安全を確保することができる。
【００１５】
システム・ファームウェアは第２のコントローラまたは第１のコントローラに対するアクセスを許可する際に、パスワードを要求するようにしてもよい。システム・ファームウェアは、コンピュータをサスペンド状態からただちにレジュームさせるサスペンド＆クイック・レジュームにより第１のオペレーティング・システムと第２のオペレーティング・システムに対してアクティブ状態とスリープ状態を切り換えることができる。
【００１６】
本発明の第２の態様では、第２のランダム・アクセス・メモリを着脱式のメモリ・モジュールに収納する。着脱式とは、ユーザがコンピュータの筐体を開放しないで着脱できるように構成されていることを意味する。したがって、筐体を開放してからコネクタに着脱するタイプのメモリ・モジュールは本発明における着脱式には相当しない。インターフェースは無線方式でもコネクタまたはケーブルによる有線方式でもよい。着脱式にすることで複数のコンピュータにセカンダリ・オペレーティング・システムの動作環境を形成することができる。
【００１７】
メモリ・モジュールは第２のオペレーティング・システムを格納する不揮発性メモリを備えてもよい。そして第２のオペレーティング・システムを不揮発性メモリから第２のランダム・アクセス・メモリにロードすることができる。第２のランダム・アクセス・メモリを不揮発性のメモリ・セルで構成すれば、メモリ・モジュールを取り外している間もメモリ・イメージの記憶を保持して、接続先のコンピュータにただちに第２のオペレーティング・システムの動作環境を構築することができる。
【００１８】
本発明の第３の態様では、第２のオペレーティング・システムの動作環境において、システム・ファームウェアが複数の周辺デバイスの中から選択したいずれかの周辺デバイスにアクセスできないようにする。選択した周辺デバイスは、不揮発性の記憶デバイスおよび通信デバイスとすることができる。このような構成によれば、第２のオペレーティング・システムの動作環境は第１のオペレーティング・システムの動作環境よりも安全性を向上させることができる。
【発明の効果】
【００１９】
本発明により、複数の動作環境を有するコンピュータにおいて、アクティブ状態の動作環境がスリープ状態の動作環境に影響を与えないようにする方法を提供することができた。さらに本発明により、ＯＳおよびハードウェアの変更をしないでスリープ状態の動作環境を保護する方法を提供することができた。さらに本発明により、コンピュータに通常の動作環境よりも安全性が高い動作環境を構築する方法を提供することができた。さらに本発明により、同一の動作環境を複数のコンピュータに構築する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することができた。
【図面の簡単な説明】
【００２０】
【図１】コンピュータの動作環境の概要を説明する図である。
【図２】本発明の説明に必要なコンピュータのハードウェア構成を説明する機能ブロック図である。
【図３】補助メモリ２５の構成の一例を説明する機能ブロック図である。
【図４】コンピュータ１０が搭載するＰＣＩｅシステムの構成の一例を説明する機能ブロック図である。
【図５】メイン・メモリ１３および補助メモリ２５に対する物理アドレス空間を説明する図である。
【図６】コンピュータ１０の動作手順を示すフローチャートである。
【図７】補助メモリ３００の構成を説明する機能ブロック図である。
【発明を実施するための形態】
【００２１】
［動作環境の概要］
最初に本実施の形態において実現する動作環境を説明する。動作環境は、コンピュータのハードウェアとソフトウェアが構成する。ＣＰＵは少なくとも複数のＯＳを切り換えて動作することができる。動作環境は実装されているＯＳの数に相当するだけ存在し、一例としてプライマリＯＳの動作環境とセカンダリＯＳの２つの動作環境を構築する。コンピュータのそれぞれの動作環境は、コンピュータに異なる特質をもたらす。
【００２２】
たとえば、プライマリＯＳの動作環境はキーボードおよびマウスからの入力を可能にしたコンテンツ作成に適したものとし、セカンダリＯＳの動作環境はタッチパネルの操作を可能にしてコンテンツの閲覧に適したものとすることができる。あるいは、プライマリＯＳの動作環境はすべての周辺デバイスの利用が可能であるが情報の流出やマルウェアからの汚染の危険性が残る環境とし、セカンダリＯＳの動作環境は一部の周辺デバイスの利用を制限することで不便性は残るが安全な環境とすることができる。
【００２３】
プライマリＯＳの動作環境は通常使用する環境で、セカンダリＯＳの動作環境は特別な作業をする場合に使用する動作環境とすることができる。プライマリＯＳの動作環境とセカンダリＯＳの動作環境は、一方がアクティブ状態のときに他方は必ずスリープ状態に遷移する。スリープ状態の動作環境を構成するＯＳのメモリ・イメージはメイン・メモリまたは補助メモリに維持されているためプライマリＯＳの動作環境とセカンダリＯＳの動作環境は極めて短い時間で切り換えが可能である。
【００２４】
スリープ状態のＯＳのメモリ・イメージを記憶しているメイン・メモリまたは補助メモリには、アクティブ状態のＯＳからアクセスできないように構成することができる。ＣＰＵはいずれの動作環境でも共有されるが、プライマリＯＳをロードするメイン・メモリとセカンダリＯＳのメモリ・イメージを記憶する補助メモリはＣＰＵからみて独立している。
【００２５】
すべての周辺デバイスはいずれの動作環境でも利用できるようにしてよいが、セカンダリＯＳの動作環境では一部の周辺デバイスの動作が制約されることもある。アプリケーションは、２つの動作環境で共用していても独立していてもよく、また両者が混在していてもよい。セカンダリＯＳおよび補助メモリは、コンピュータに着脱できるメモリ・モジュールに搭載する場合もある。プライマリＯＳとセカンダリＯＳは、プライマリＯＳの動作環境に格納してもよいしそれぞれの動作環境に格納してもよい。
【００２６】
［コンピュータのハードウェア］
図２は、コンピュータ１０の本発明の説明に必要な構成の一例を示す機能ブロック図である。図３は、補助メモリ２５の構成の一例を説明する機能ブロック図である。図４は、コンピュータ１０が搭載するＰＣＩｅバス・システムの構成の一例を説明する機能ブロック図である。ＣＰＵ１１には、メイン・メモリ１３およびビデオ・カード１５が接続されている。一例としてＣＰＵ１１は、Ｘ８６アーキテクチャまたはこれと互換性があるマイクロプロセッサとすることができる。
【００２７】
ＣＰＵ１１は、メイン・メモリ１３の動作を制御するメモリ・コントローラ４３、ビデオ・カード１５の動作を制御するビデオ・コントローラ４５、および仮想アドレスを物理アドレスに変換するメモリ管理ユニットなどを含んでいる。メイン・メモリ１３は、ＤＤＲーＳＤＲＡＭの規格に適合する揮発性のメモリでＣＰＵ１１にデュアル・チャネルで接続されている。メイン・メモリ１３の容量は一例として８ＧＢとすることができる。
【００２８】
ＣＰＵ１１は、メイン・メモリ１３に直接アクセスしてプログラムを実行するが、後に説明するように補助メモリ２５にも直接アクセスしてプログラムを実行する。ビデオ・カード１５はディスプレイ１７に表示する画像データを生成する。チップ・セット１９は、ＤＭＩ（Direct Media Interface）規格のバスでＣＰＵ１１に接続されている。チップ・セット１９には、ＬＰＣ（Low Pin Count）コントローラ４７、ＵＳＢ（Universal Serial Bus）コントローラ４９、ＰＣＩｅ（PCI Express）規格のメモリ・コントローラ５１、ＳＡＴＡ（Serial Advanced Technology Attachment）コントローラ５３およびイーサネット（登録商標：Ethernet）コントローラ５５などの周辺デバイスを制御するコントローラが組み込まれている。また、チップ・セット１９は、コンピュータ１０のパワー・ステートを制御するためのＡＣＰＩレジスタ１９ａを含む。
【００２９】
ＬＰＣコントローラ４７にはファームウェアＲＯＭ２１が接続され、ＵＳＢコントローラ４９にはＵＳＢデバイス２３が接続され、メモリ・コントローラ５１には補助メモリ２５が接続され、ＳＡＴＡコントローラ５３にはＨＤＤ２７が接続され、イーサネット（登録商標）・コントローラ５５にはＬＡＮカード２９が接続されている。ファームウェアＲＯＭ２１は、ＢＩＯＳまたはこれに代わるＵＥＦＩなどのシステム・ファームウェアを格納する。
【００３０】
本発明においては、ＯＳおよびその環境下で動作するプログラムはマルウェアに汚染される可能性があることを想定するが、ＢＩＯＳは、ファームウェアＲＯＭ２１の保護されたブート・ブロックという領域に書き込まれており、動作時には常に改竄されていないことを確認する一貫性の検証が行われることを前提にして安全な動作環境を構築する。
【００３１】
コンピュータ１０のハードウェア、ＢＩＯＳおよびＯＳはＡＣＰＩ（Advanced Configuration and Power Interface）の規格に適合している。ＢＩＯＳは、コンピュータの電源が起動されたときのＰＯＳＴ（Power On Self-Test）や認証などの他に、本発明を実現するためのシステムの動作環境を切り換える処理を行うコードおよびスリープ状態のメモリ・イメージを保護する処理を行うコード、および安全な動作環境を構築するためのコードを含む。
【００３２】
ＨＤＤ２７はブート・ドライブで、ＣＰＵ１１が実行するＯＳやアプリケーション・プログラムを格納する。ＨＤＤ２７は、一例としてプライマリＯＳとセカンダリＯＳの２種類のＯＳを格納する。プライマリＯＳとセカンダリＯＳは同一のブート・パーティションに格納してもよいし、異なるブート・パーティションに格納してもよい。ＢＩＯＳによりプライマリＯＳはメイン・メモリ１３にロードされ、セカンダリＯＳは補助メモリ２５にロードされる。ここにプログラムのロードとは、ＨＤＤ２７に格納されたプログラムをＣＰＵ１１が実行するためにメイン・メモリ１３または補助メモリ２５に実行可能な状態で記憶する処理をいう。他の例では、セカンダリＯＳは着脱可能なメモリ・モジュールの不揮発性メモリからロードされる。
【００３３】
ＥＣ３１は、ＣＰＵ、ＲＯＭ、ＲＡＭなどで構成されたマイクロ・コンピュータで、コンピュータ１０の温度や電源などの管理をするプログラムをＣＰＵ１１から独立した動作環境で実行する。ＥＣ３１はプライマリＯＳの動作環境およびセカンダリＯＳの動作環境のいずれでも動作する。ＥＣ３１は、入力コントローラを含んでおりパワー・ボタン３３、キーボードおよびポインティング・デバイスなどの入力デバイス３５が接続されている。ＥＣ３１は、サスペンド状態でも記憶を維持することができるレジスタ３１ａ〜３１ｃを含む。
【００３４】
レジスタ３１ａ〜３１ｃはＯＳまたはＢＩＯＳが設定し動作環境を構築したり変更したりする際にＢＩＯＳまたはＥＣ３１が参照する。レジスタ３１ａは、コールド・ブート［０］とウォーム・ブート［１］の種別を示すブート・フラグを設定する。レジスタ３１ｂは、ユーザからのイベントを受け取ってレジュームする通常レジューム［０］とサスペンド＆クイック・レジューム［１］の種別を示すレジューム・フラグを設定する。サスペンド＆クイック・レジュームについては後に説明する。レジスタ３１ｃはＣＰＵ１１の制御権を渡すＯＳがプライマリＯＳ１０３［０］とセカンダリＯＳ１１１［１］のいずれかを示す環境フラグを設定する。ＤＣ／ＤＣコンバータ３７はコンピュータ１０に電力を供給する。ＥＣ３１は、ＤＣ／ＤＣコンバータ３７の動作を制御してコンピュータのパワー・ステートを変更する。
【００３５】
図２で例示したチップ・セット１９の構成、周辺デバイスのインターフェースの種類および接続方法などは本発明を限定するものではなく、当業者にとって本発明が実現できることが明らかな他の構成を採用する場合も本発明の範囲に含まれる。たとえばメイン・メモリ１３およびビデオ・カード１５がＣＰＵ１１に接続される例を示したが、それらはチップ・セットに接続されていてもよい。また、チップ・セットは、１個のＰＣＨを例示して説明したがＭＣＨとＩＣＨといったような２個のチップ・セットのアーキテクチャを採用してもよい。
【００３６】
図３で補助メモリ２５は、ＰＣＩｅコア・ブロック２５ａ、Ｒ／Ｗ回路２５ｂ、およびＳＲＡＭセル・モジュール２５ｃを含む。ＰＣＩｅコア・ブロック２５ａは、ＰＣＩｅのプロトコルを処理するためのトランザクション層、データ・リンク層、および物理層をサポートする。Ｒ／Ｗ回路２５ｂは、ＰＣＩｅコア・ブロック２５ａから受け取ったデータを解読してＳＲＡＭセル・モジュール２５ｃに対するリード／ライト制御の信号を出力する。Ｒ／Ｗ回路２５ｂは、ＳＲＡＭセル・モジュール２５ｃから受け取った読み取りデータをＰＣＩｅコア・ブロック２５ａに出力する。ＳＲＡＭセル・モジュール２５ｃは、ＳＲＡＭで構成されたメモリ・アレイおよび駆動回路で構成されている。一例としてＳＲＡＭセル・モジュール２５ｃの容量は２ＧＢとすることができる。
【００３７】
［ＰＣＩｅシステム］
コンピュータ１０のバス・システムは、ＰＣＩｅを基本にして構成されている。図４でＣＰＵ１１のコア４０には、ＰＣＩｅルート・コンプレックス４１が接続されている。ＰＣＩｅルート・コンプレックス４１は３つのポートを備えており、それぞれにメモリ・コントローラ４３、ＰＣＩｅブリッジ４２およびビデオ・コントローラ４５が接続されている。
【００３８】
ＰＣＩｅブリッジ４２には、ＬＰＣコントローラ４７、ＵＳＢコントローラ４９、メモリ・コントローラ５１、ＳＡＴＡコントローラ５３およびイーサネット（登録商標）・コントローラ５５が接続されている。これらのコントローラ４３〜５５をＰＣＩｅコントローラということにする。ＰＣＩｅコントローラは、それぞれエンド・ポイント４３ａ〜５５ａとファンクション４３ｃ〜５５ｃで構成されている。エンド・ポイント４３ａ〜５５ａは、それぞれコンフィグレーション・レジスタ４３ｂ〜５５ｂを含んでいる。ファンクション４３ｃ〜５５ｃには、それぞれメイン・メモリ１３、ビデオ・カード１５、ファームウェアＲＯＭ２１、ＵＳＢデバイス２３、補助メモリ２５、ＨＤＤ２７、ＬＡＮカード３１などの周辺デバイスが接続されている。
【００３９】
［メモリ・マップと動作環境］
図５は、メイン・メモリ１３および補助メモリ２５に対してＢＩＯＳ１０１が設定した物理アドレス空間を説明する図である。ＰＣＩｅデバイスは、メモリ空間、Ｉ／Ｏ空間、コンフィグレーション空間およびメッセージ空間の４つのアドレス空間をサポートする。ＣＰＵが周辺デバイスにアクセスする方法として一般に、メモリマップドＩ／Ｏ（Memory-mapped I/O）方式とポートマップドＩ／Ｏ（Port-mapped I/O）方式があるが、ＣＰＵ１１はメモリマップドＩ／Ｏ方式を採用する。メモリマップドＩ／Ｏ方式では、ＣＰＵ１１がアクセスする一つの物理アドレス空間にメイン・メモリ１３とＰＣＩｅコントローラを共存させ、メイン・メモリ１３に対するリード／ライト命令（ロード／ストア命令）を周辺デバイスに対するアクセスにも使用することができる。
【００４０】
図５（Ａ）は、メイン・メモリ１３の物理アドレス空間１００を説明する図で、図５（Ｂ）は補助メモリ２５の物理アドレス空間１５０を説明する図である。ＢＩＯＳ１０１は、プライマリＯＳ１０３の動作環境にメイン・メモリ１３を選定したときに物理アドレス空間１００を設定し、セカンダリＯＳ１１１の動作環境に補助メモリ２５を選定したときに物理アドレス空間１５０を設定する。なお、プライマリＯＳ１０３の動作環境に補助メモリ２５を選定して物理アドレス空間１５０を設定し、セカンダリＯＳ１１１の動作環境にメイン・メモリ１３を選定して物理アドレス空間１００を設定することもできる。
【００４１】
これらの物理アドレス環境１００、１５０を利用する手順は後に説明するが、ＢＩＯＳ１０１はブート時にメイン・メモリ１３および補助メモリ２５にそれぞれ図５（Ａ）、（Ｂ）に示す物理アドレス空間１００、１５０を構築してから、一方の動作環境をアクティブ状態に設定し他方のアドレス空間をスリープ状態に設定する。ここにスリープ状態の動作環境とは、コンピュータ１０がパワー・オン状態のときに、メイン・メモリ１３または補助メモリ２５のメモリ・イメージの記憶を維持しながら、ＢＩＯＳ１０１によりＣＰＵ１１の制御権が剥奪されたプライマリＯＳ１０３またはセカンダリＯＳ１１１の状態を意味する。これに対してアクティブ状態の動作環境とは、コンピュータ１０がパワー・オン状態のときに、ＢＩＯＳ１０１からＣＰＵ１１の制御権を受け取ったプライマリＯＳ１０３またはセカンダリＯＳ１１１の状態を意味する。
【００４２】
プライマリＯＳ１０３およびセカンダリＯＳ１１１は、メイン・メモリ１３および補助メモリ２５のいずれにロードされたかは認識しない。プライマリＯＳ１０３およびセカンダリＯＳ１１１はそれぞれに割り当てられた物理アドレス空間１００、１５０だけを認識しそれぞれの仮想アドレス空間をマッピングしてプロセスを実行する。プライマリＯＳ１０３はコンピュータ１０が通常する動作環境を提供し、セカンダリＯＳ１１１は安全性を向上したり、タッチスクリーンなどのユーザ・インターフェースに対応したりできる特別な動作環境を提供するようにしてもよい。
【００４３】
メモリマップドＩ／Ｏ方式では、ＢＩＯＳ１０１によりメイン・メモリ１３および補助メモリ２５のそれぞれの全体のアドレス範囲に、メモリ・アドレス範囲９１、９５とＰＣＩｅデバイス・アドレス範囲９３、９７が割り当てられる。したがって、プライマリＯＳ１０３およびセカンダリＯＳ１１１はそれぞれ、ＰＣＩｅデバイス・アドレス範囲９３、９７が設定された分だけ利用できるメイン・メモリ１３または補助メモリ２５のメモリ・アドレス範囲９１、９５が制限される。なお、ＯＳおよびチップ・セットが制限された物理アドレス範囲を拡張する周知の手法を採用することもできる。
【００４４】
ブートが完了したとき、メモリ・アドレス範囲９１にはＢＩＯＳ１０１、プライマリＯＳ１０３、およびアプリケーション１０５などのメモリ・イメージが記憶され、メモリ・アドレス範囲９５にはＢＩＯＳ１０１、セカンダリＯＳ１１１、およびアプリケーション１１３などのメモリ・イメージが記憶される。メモリ・アドレス範囲９１、９５に記憶されるＢＩＯＳ１０１は、ＰＯＳＴがある程度進行した段階でシャドウ化するために、ファームウェアＲＯＭ２１からメイン・メモリ１３または補助メモリ１５にロードされる。
【００４５】
ＢＩＯＳ１０１はプライマリＯＳ１０１またはセカンダリＯＳ１１１をブートする際に、ＰＣＩｅコントローラ４３〜５５にＰＣＩｅデバイス・アドレス範囲９３、９７のアドレス・ブロックを割り当て、コンフィグレーション・レジスタ４３ｂ〜５５ｂにアドレス範囲を書き込む。ＰＣＩｅデバイス・アドレス範囲９３、９５には、ビデオ・コントローラ４５、ＬＰＣコントローラ４７、ＵＳＢコントローラ４９、ＳＡＴＡコントローラ５３およびイーサネット（登録商標）・コントローラ５５などに対するアドレス・ブロックが割り当てられる。
【００４６】
ＢＩＯＳ１０１はメイン・メモリ１３の物理アドレス空間１００には、メモリ・コントローラ５１に対してアドレス・ブロックを割り当てない。したがって、プライマリＯＳ１０３の動作環境では、いかなるプログラムも補助メモリ２５にアクセスすることができない。ＢＩＯＳ１０１は、補助メモリ２５の物理アドレス空間１５０には、メモリ・コントローラ４３に対してアドレス・ブロックを割り当てない。したがってセカンダリＯＳ１１１の動作環境では、いかなるプログラムもメイン・メモリ１３にアクセスすることができない。
【００４７】
［パワー・ステートとサスペンド＆クイック・レジューム］
ＡＣＰＩの規格では、複数のパワー・ステートが定義されており、コンピュータ１０は、パワー・オン状態（Ｓ０ステート）、作業内容をメイン・メモリ１３に書き込んでメイン・メモリ１３の記憶を保持するために必要なデバイスと再起動に必要なデバイスにだけ電力を供給するサスペンド状態（Ｓ３ステート）、作業内容をＨＤＤ２７やその他の不揮発性メモリなどに書き込んで再起動に必要なデバイスにだけ電力を供給するハイバネーション状態（Ｓ４ステート）、および再起動に必要なデバイスにだけ電力を供給するソフトオフまたはパワー・オフ状態（Ｓ５ステート）のいずれかの状態に移行することができる。本実施の形態では、サスペンド状態のときにセカンダリＯＳ１１１の動作環境を構成するシステム・コンテキストを補助メモリ２５が記憶し、その記憶の維持に必要なデバイスにも電力が供給される。
【００４８】
通常、サスペンド状態からパワー・オン状態への復帰（レジューム）は、サスペンド状態に移行してからある程度の時間が経ったときに、ユーザの操作またはシステムに設定したスケジュールに基づいて行われるが、本実施の形態では、サスペンド状態に遷移するとただちにレジュームするサスペンド＆クイック・レジュームという方法を採用する。サスペンド＆クイック・レジュームは、ＣＰＵ１１をパワー・オン・リセットしてＣＰＵ１１の制御権を一旦ＢＩＯＳ１０１に渡すことを目的にしている。サスペンド状態に一瞬だけ遷移してからただちにレジュームすると、ＢＩＯＳ１０１はＣＰＵ１１の動作環境を変更したり、ＰＣＩｅコントローラに対するアクセスを阻止するための設定をしたりする。
【００４９】
［動作手順］
図６は、コンピュータ１０の動作手順を示すフローチャートである。ブロック２０１でコンピュータ１０がパワー・オフ状態のときに、パワー・ボタン３３が押下されるとコンピュータ１０に電源が供給されてブート・シーケンスを開始する。パワー・オフ状態からの起動をコールド・ブートといい、ＢＩＯＳ１０１はすべてのＰＣＩｅコントローラに対して完全なＰＯＳＴを実行する。これに対してサスペンド状態からの起動をウォーム・ブートといい、ＢＩＯＳ１０１はＰＯＳＴの一部を省略したり簡略化したりする。
【００５０】
パワー・オン・リセットされたＣＰＵ１１は、電源が安定すると内部のキャッシュやレジスタなどの初期化を行う。リセットされたＥＣ３１も、レジスタ３１ａ〜３１ｃの初期化を行う。初期化されたレジスタ３１ａはブート・フラグがコールド・ブート［０］を示し、レジスタ３１ｂはレジューム・フラグがサスペンド＆クイック・レジューム［１］を示し、レジスタ３１ｃは環境フラグがプライマリＯＳ１０３［０］を示す。
【００５１】
ＣＰＵ１１は、ファームウェアＲＯＭ２１の先頭アドレスにアクセスしてＢＩＯＳ１０１を順番に実行する。ＢＩＯＳ１０１は、レジスタ３１ｃを参照してメイン・メモリ１３をロード先として認識する。ＣＰＵ１１は途中で、シャドウ化するためにファームウェアＲＯＭ２１からメモリ・アドレス範囲９１にＢＩＯＳ１０１を読み出す。ＢＩＯＳ１０１を記憶するメイン・メモリ１３のアドレス・ブロックには、ファームウェアＲＯＭ２１のアドレスがマッピングされ、以後ＣＰＵ１１はファームウェアＲＯＭ２１のアドレスを指定したときメイン・メモリ１３からコードを読み取ってＢＩＯＳ１０１を実行する。
【００５２】
ブロック２０３でＢＩＯＳ１０１はレジスタ３１ａを参照して、コンピュータ１０に取り付けられているＰＣＩｅコントローラの検出、初期化および設定をする完全なＰＯＳＴを実行する。ＢＩＯＳ１０１はメイン・メモリ１３の容量とアドレスを認識すると、メモリ・アドレス範囲９１、およびＰＣＩｅコントローラにアドレス・ブロックを割り当てたＰＣＩｅデバイス・アドレス範囲９３を含む物理アドレス空間１００の構築を開始する。
【００５３】
ＢＩＯＳ１０１は割り当てたアドレス・ブロックを各コンフィグレーション・レジスタ４３ｂ〜５５ｂに設定する。このとき、補助メモリ２５を制御するメモリ・コントローラ５１のＰＯＳＴは省略してこれをディスエーブルに設定する。したがって、ＢＩＯＳ１０１はＰＣＩｅデバイス・アドレス範囲９３にメモリ・コントローラ１０１にアクセスするためのメモリ・ブロックを割り当てない。ＰＣＩｅコントローラに対するアドレス・ブロックの割り当てはＢＩＯＳ１０１だけが実行できる。したがって、ＢＩＯＳ１０１からＣＰＵ１１の制御権を受け取ったプライマリＯＳ１０３はメモリ・コントローラ５１を認識せず、物理アドレス空間１００を通じて補助メモリ２５にアクセスすることはできない。
【００５４】
あるいはＢＩＯＳ１０１は、メモリ・コントローラ５１のＰＯＳＴを終了してから、メモリ・コントローラ５１をディスエーブルに設定したりアドレス・ブロックを割り当てないようにしたりしてもよい。いずれにせよ、ＢＩＯＳ１０１はプライマリＯＳ１０３に制御権を渡す前に、プライマリＯＳ１１１による補助メモリ２５に対するアクセスを阻止するための処理をする。ブロック２０５でＢＩＯＳ１０１は、図５（Ａ）に示す物理アドレス空間１００を構築してプライマリＯＳ１０３に渡す。物理アドレス空間１００はプライマリＯＳ１０３の動作環境で使用される。
【００５５】
ＨＤＤ２７のブート・セクタには、プライマリＯＳ１０３をブートするコードおよびセカンダリＯＳ１１１をブートするコードが書き込まれている。ＰＯＳＴが終了するとブロック２０７でＢＩＯＳ１０１は、レジスタ３１ｃの環境フラグ［０］を参照してブート・セクタのプライマリＯＳ１０３をブートするコードに制御を移す。ＣＰＵ１１はＨＤＤ２７から順番に読み出したプライマリＯＳ１０３のモジュールを、物理アドレス空間１００を参照してメイン・メモリ１３の所定のアドレスに書き込む。
【００５６】
このとき、プライマリＯＳ１０３は、ＢＩＯＳ１０１が検出したＰＣＩｅコントローラのデバイス・ドライバをメモリ・アドレス範囲９１にロードするが、メモリ・コントローラ５１を認識しないためそのデバイス・ドライバはロードしない。プライマリＯＳ１０３またはプライマリＯＳ１０３上で動作するアプリケーション１０５は、プライマリＯＳ１０３のブートが完了したことを検出するとブロック２０９でサスペンド＆クイック・レジュームをするための切換イベントを生成する。切換イベントはユーザが入力デバイス３５から入力して生成してもよい。セカンダリＯＳ１１１の動作環境を構築しない場合は、切換イベントの生成前にブートが完了する。
【００５７】
切換イベントが生成されたことに応じてプライマリＯＳ１０３は、サスペンド状態で電源が停止するＣＰＵ１１および周辺デバイスのレジスタや揮発性メモリが保有するシステム・コンテキストなどのプライマリＯＳ１０３の動作環境を構成するために必要な情報をメモリ・アドレス範囲９１に記憶する。プライマリＯＳ１０３はサスペンドの準備が完了するとＢＩＯＳ１０１を通じてＥＣ３１のレジスタ３１ａにコールド・ブートを示すブート・フラグ［０］を設定し、レジスタ３１ｂにサスペンド＆クイック・レジュームを示すレジューム・フラグ［１］を設定し、レジスタ３１ｃにセカンダリＯＳ１１１をブートすることを示す環境フラグ［１］を設定する。
【００５８】
つづいてプライマリＯＳ１０３はＢＩＯＳ１０１を通じて、チップ・セット１９のＡＣＰＩレジスタ１３ａに遷移先としてサスペンド状態を設定する。ＡＣＰＩレジスタ１９ａにサスペンド状態が設定されたチップ・セット１９は、ＥＣ３１に指示してシステムの電源をサスペンド状態に遷移させる。ＥＣ３１は、サスペンド状態に遷移する際にレジスタ３１ｂを参照する。ＥＣ３１はレジスタ３１ｂに設定されたレジューム・フラグ［１］を確認すると、ＣＰＵ１１をパワー・オン・リセットするために電源を一瞬サスペンド状態に移行させてから、ただちにパワー・オン状態に復帰させる。
【００５９】
サスペンド状態の間、メイン・メモリ１３および補助メモリ２５がデータを記憶するための電力およびＥＣ３１の電力は維持されている。ブロック２１１でパワー・オン・リセットしたＣＰＵ１１はブロック２０１と同様の手順でＢＩＯＳ１０１を先頭アドレスから実行する。ＢＩＯＳ１０１は、レジスタ３１ｃの環境フラグ［１］を参照して補助メモリ２５をロード先に選定する。ＢＩＯＳ１０１はレジスタ３１ａを参照して、ブート・フラグ［０］を確認すると、ＰＣＩｅコントローラに対して完全なＰＯＳＴを実行する。ＣＰＵ１１は途中で、シャドウ化するためにメモリ・アドレス範囲９５にファームウェアＲＯＭ２１からＢＩＯＳ１０１を読み出す。
【００６０】
ブロック２１３でＢＩＯＳ１０１は、セカンダリＯＳ１１１をメイン・メモリ１３にアクセスさせないための処理をする。ＢＩＯＳ１０１はレジスタ３１ａのブート・フラグ［０］を参照して、コンピュータ１０に取り付けられているＰＣＩｅコントローラの検出、初期化および設定をする完全なＰＯＳＴを実行する。ＢＩＯＳ１０１は補助メモリ２５の容量とアドレスを認識すると、メモリ・アドレス範囲９５、およびＰＣＩｅデバイスにアドレス・ブロックを割り当てたＰＣＩｅデバイス・アドレス範囲９７を含む物理アドレス空間１００の構築を開始する。
【００６１】
ＢＩＯＳ１０１は割り当てたアドレス・ブロックを各コンフィグレーション・レジスタ４３ｂ〜５５ｂに設定する。このときＢＩＯＳ１０１は、メイン・メモリ１３を制御するメモリ・コントローラ４３に対してはＰＯＳＴを省略したり、ディスエーブルに設定したり、あるいはＰＣＩｅデバイス・アドレス範囲９７にメモリ・ブロックを割り当てないようにしたりしてセカンダリＯＳ１１１に制御権を渡す前に、セカンダリＯＳ１１１によるメイン・メモリ１３に対するアクセスを阻止するための処理をする。
【００６２】
したがってＢＩＯＳ１０１からＣＰＵ１１の制御権を受け取ったセカンダリＯＳ１１１はメモリ・コントローラ４３を認識せず、物理アドレス空間１５０を通じて、メイン・メモリ１３にアクセスすることはできない。ブロック２１５でＢＩＯＳ１０１は、図５（Ｂ）に示す物理アドレス空間１５０を構築しセカンダリＯＳ１１１に渡す。物理アドレス空間１５０はセカンダリＯＳ１１１の動作環境で使用される。
【００６３】
ＰＯＳＴが終了するとブロック２１７でＢＩＯＳ１０１は、レジスタ３１ｃの環境フラグ［１］を参照してブート・セクタのセカンダリＯＳ１１１をブートするコードに制御を移す。ＣＰＵ１１はＨＤＤ２７から順番に読み出したセカンダリＯＳ１１１のモジュールを、物理アドレス空間１５０を参照して補助メモリ２５の所定のアドレスにロードする。このとき、セカンダリＯＳ１１１は、ＢＩＯＳ１０１が検出したＰＣＩｅコントローラのデバイス・ドライバをメモリ・アドレス範囲９５にロードするが、メモリ・コントローラ４３を認識しないためそのデバイス・ドライバはロードしない。
【００６４】
ブロック２１９で、プライマリＯＳ１０３およびセカンダリＯＳ１１１のブートが完了してシステム全体のブートが完了する。このときプライマリＯＳ１０３はメモリ・イメージがメイン・メモリ１３に記憶されているが制御権が剥奪されたスリープ状態に遷移している。また、ＢＩＯＳ１０１から制御権を受け取ってブートを完了したセカンダリＯＳ１１１はアクティブ状態に遷移し、ユーザはセカンダリＯＳ１１１およびアプリケーション１１３を実行して作業をすることができる。
【００６５】
セカンダリＯＳ１１１またはアプリケーション１１３は正常であれば、メモリ・アドレス範囲９５で動作するが、たとえマルウェアに汚染されたり損傷したりしてもセカンダリＯＳ１１１の動作環境からはメイン・メモリ１３にアクセスすることができないため、スリープ状態に遷移しているプライマリＯＳ１０３のメモリ・イメージは保護される。
【００６６】
ブロック２３１で、ユーザはプライマリＯＳ１０３の動作環境に移行するために入力デバイス３５を操作して、コンピュータ１０に切換イベントを入力する。ブロック２３３で切換イベントを受け取ったセカンダリＯＳ１１１は、サスペンド状態で電源が停止するＣＰＵ１１および周辺デバイスのレジスタや揮発性メモリが保有するシステム・コンテキストなどのセカンダリＯＳ１１１の動作環境を構成するための情報をメモリ・アドレス範囲９５に記憶する。セカンダリＯＳ１１１はサスペンドの準備が完了するとＢＩＯＳ１０１を通じてＥＣ３１のレジスタ３１ａにウォーム・ブートを示すブート・フラグ［１］を設定し、レジスタ３１ｂにサスペンド＆クイック・レジュームを示すレジューム・フラグ［１］を設定し、レジスタ３１ｃに動作環境をプライマリＯＳ１０３に移行させることを示す環境フラグ［０］を設定する。
【００６７】
つづいてセカンダリＯＳ１１１はＢＩＯＳ１０１を通じて、チップ・セット１９のＡＣＰＩレジスタ１９ａに遷移先としてサスペンド状態を設定する。ＡＣＰＩレジスタ１９ａにサスペンド状態が設定されたチップ・セット１９は、ＥＣ３１に指示してシステムをサスペンド状態に遷移させる。ＥＣ３１は、サスペンド状態に遷移する際にレジスタ３１ｂを参照する。ＥＣ３１はレジスタ３１ｂに設定されたレジューム・フラグ［１］を確認すると、電源をサスペンド状態に移行させてＣＰＵ１１をパワー・オン・リセットすると、ただちに、パワー・オン状態に復帰させる。
【００６８】
パワー・オン・リセットしたＣＰＵ１１はＢＩＯＳ１０１を先頭アドレスから実行する。ＢＩＯＳ１０１はレジスタ３１ａを参照して、ブート・フラグ［１］を確認すると、周辺デバイスに簡略したＰＯＳＴを実行する。ウォーム・ブートのＰＯＳＴは簡略化されているため短時間で終了する。ＢＩＯＳ１０１は、レジスタ３１ｃの環境フラグ［０］を参照してメイン・メモリ１３が復帰先のメモリであると判断して、ブロック２０９でメモリ・アドレス範囲９１に記憶していたシステム・コンテキストをＣＰＵ１１、ＰＣＩｅコントローラおよび周辺デバイスにリストアする。システム・コンテキストのリストアは、コールド・ブートの際に決定したパラ−メータを復帰させるだけの処理であるため短時間で終了する。
【００６９】
ブロック２３５でプライマリＯＳ１０３はＣＰＵ１１の制御権を得てアクティブ状態に移行し、セカンダリＯＳ１１１がスリープ状態に移行する。プライマリＯＳ１０３がアクティブ状態に移行するとユーザはプライマリＯＳ１０３およびアプリケーション１０５を実行して作業をすることができる。このときプライマリＯＳ１０３またはアプリケーション１０５がマルウェアに汚染されたり損傷したりしても補助メモリ２５にアクセスすることはできないため、アクティブ状態のプライマリＯＳ１０３からスリープ状態のセカンダリＯＳ１１１のメモリ・イメージは保護される。
【００７０】
ブロック２３７では、ユーザが入力デバイス３５からセカンダリＯＳ１１１の動作環境へ移行する切換イベントを入力する。ブロック２３９でプライマリＯＳ１０３は、ＥＣ３１のレジスタ３１ａにウォーム・ブートを示すブート・フラグ［１］を設定し、レジスタ３１ｂにサスペンド＆クイック・レジュームを示すレジューム・フラグ［１］を設定し、レジスタ３１ｃに動作環境をセカンダリＯＳ１１１に移行させることを示す環境フラグ［１］を設定してサスペンド状態に遷移する。ブロック２４１では、セカンダリＯＳ１１１がＣＰＵ１１の制御権を得てアクティブ状態に移行し、プライマリＯＳ１０３がスリープ状態に移行してブロック２３１に戻る。
【００７１】
上記の手順によれば、プライマリＯＳ１０３とセカンダリＯＳ１１１は、いずれか一方がアクティブ状態に移行したときに他方がスリープ状態に移行する。そして、アクティブ状態の物理アドレス空間からはスリープ状態のメモリ・イメージを記憶するメイン・メモリ１３または補助メモリ２５にアクセスできない。３つ以上のＯＳが異なる動作環境を構築するようにしてもよい。
【００７２】
本実施の形態は、ブロック２０９で切換イベントをＯＳが生成する場合はその部分だけを修正する必要があるが、その他の修正は不要でＢＩＯＳ１０１を書き換えるだけで実現できる。また補助メモリ２５は新たに用意する必要があるが、コンピュータ１０の主要なハードウェアを変更したり追加したりする必要がない。ブートの順番はセカンダリＯＳ１１１が先であってもよい。この場合、システム全体のブートが完了したときにプライマリＯＳ１０３の動作環境に移行する。
【００７３】
プライマリＯＳ１０３の動作環境はネットワークを通じて危険に晒される。セカンダリＯＳ１１１のメモリ・イメージを記憶する補助メモリ２５にプライマリＯＳ１０３からアクセスできないようにすることでセカンダリＯＳ１１１の動作環境をプライマリＯＳ１０３の動作環境より安全にすることができる。ＢＩＯＳ１０１はセカンダリＯＳ１１１に制御権を渡す前に、イーサネット（登録商標）・コントローラ５５をディスエーブルに設定して、セカンダリＯＳ１１１の動作環境ではいかなるプログラムもネットワークにアクセスすることができないようにすることができる。
【００７４】
セカンダリＯＳ１１１の動作環境で処理するデータをプライマリＯＳ１０３の動作環境から隔離すればデータの安全性を高めることができる。そのためにＢＩＯＳ１０１はセカンダリＯＳ１１１に制御権を渡す前に、ＳＡＴＡコントローラ５３やＵＳＢコントローラ５５をディスエーブルに設定することができる。この場合セカンダリＯＳ１１１の動作環境では、プライマリＯＳ１０３の動作環境からアクセスできるＨＤＤ２７にデータを格納することも、筐体のコネクタに接続して使用する外付けのＵＳＢメモリにデータを格納することもできないため、データの流出を防ぐことができる。
【００７５】
セカンダリＯＳ１１１の動作環境で処理したデータは、セカンダリＯＳ１１１の動作環境からだけアクセスできる不揮発性メモリに格納することができる。ＢＩＯＳ１０３によるＰＣＩｅコントローラの設定方法は、ユーザがＢＩＯＳのセットアップ画面で変更することができる。メモリ・コントローラ４３、５１などの安全を確保するためにディスエーブルに設定したＰＣＩｅコントローラをイネーブルに設定する場合は、ユーザにパスワードを要求することができる。
【００７６】
［着脱式補助メモリ］
これまで、補助メモリ２５はコンピュータの筐体の内部に装着することを前提にして説明してきたが。補助メモリ２５は筐体の表面に形成したコネクタに装着して使用する着脱式とすることができる。図７は、着脱式の補助メモリ３００の構成を説明する機能ブロック図である。補助メモリ３００が、補助メモリ２５と機能的に異なる点は、ＥＥＰＲＯＭセル・モジュール３００ｅ、その動作を制御するＲ／Ｗ回路３００ｄおよび電池３００ｆを追加した点である。着脱式の補助メモリ３００は、複数のコンピュータにおいて、それぞれのプライマリＯＳ１０３の動作環境から隔離された共通のセカンダリＯＳ１１１の動作環境を実現することができる。
【００７７】
ＳＲＡＭセル・モジュール３００ｃは、補助メモリ２５のＳＲＡＭセル・モジュール２５ｃと同様に機能してセカンダリＯＳ１１１を記憶する。ＥＥＰＲＯＭセル・モジュール３００ｅには、セカンダリＯＳ１１１およびアプリケーション１１３などのセカンダリＯＳ１１１の動作環境で実行するプログラムを格納することができる。ＢＩＯＳ１０１は、補助メモリ３００をブート・デバイスに設定する。コンピュータ１０をブートするときにＢＩＯＳ１０１は、最初にＨＤＤ２７からプライマリＯＳ１０３をメイン・メモリ１３にブートしたあとに、サスペンド＆クイック・レジュームを実行してブート・デバイスを変更しセカンダリＯＳ１１１をＥＥＰＲＯＭセル・モジュール３００ｅからＳＲＡＭセル・モジュール３００ｃにブートすることができる。
【００７８】
電池３００ｆは、コンピュータ１０がサスペンド状態の間および補助メモリ３００が取り外されたときにＳＲＡＭセル・モジュール３００ｃの記憶を維持する。ＳＲＡＭセル・モジュール３００ｃに代えて不揮発性のＭＲＡＭセル・モジュールを採用することもできる。ＳＲＡＭセル・モジュール３００ｃの記憶を電池３００ｆが保持することで、補助メモリ３００をコンピュータ１０から取り外して動作中の他のコンピュータに接続したときに、プラグ・アンド・プレイでセカンダリＯＳ１１１の動作環境を追加することができる。
【００７９】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００８０】
１０  コンピュータ
１３  メイン・メモリ
２５  補助メモリ
３１  エンベデッド・コントローラ
４３  メモリ・コントローラ
４５  ビデオ・コントローラ
４７  ＬＰＣコントローラ
４９  ＵＳＢコントローラ
５１  ＰＣＩｅ規格のメモリ・コントローラ
５３  ＳＡＴＡコントローラ
５５  イーサネット・コントローラ
９１、９５  メモリ・アドレス範囲
９３、９７  ＰＣＩｅデバイス・アドレス範囲
１００  プライマリＯＳの物理アドレス空間
１０１  ＢＩＯＳ
１０３  プライマリＯＳ
１５０  セカンダリＯＳの物理アドレス空間
１１１  セカンダリＯＳ
【図１】
2014219947.tif 000003
【図２】
2014219947.tif 000004
【図３】
2014219947.tif 000005
【図４】
2014219947.tif 000006
【図５】
2014219947.tif 000007
【図６】
2014219947.tif 000008
【図７】
2014219947.tif 000009