JP5715658B2 - コンピュータに安全な動作環境を構築する方法、コンピュータ・プログラムおよびコンピュータ - Google Patents

コンピュータに安全な動作環境を構築する方法、コンピュータ・プログラムおよびコンピュータ Download PDF

Info

Publication number
JP5715658B2
JP5715658B2 JP2013100791A JP2013100791A JP5715658B2 JP 5715658 B2 JP5715658 B2 JP 5715658B2 JP 2013100791 A JP2013100791 A JP 2013100791A JP 2013100791 A JP2013100791 A JP 2013100791A JP 5715658 B2 JP5715658 B2 JP 5715658B2
Authority
JP
Japan
Prior art keywords
operating system
computer
memory
random access
access memory
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
JP2013100791A
Other languages
English (en)
Other versions
JP2014219947A (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.)
Lenovo Singapore Pte Ltd
Original Assignee
Lenovo Singapore Pte Ltd
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 Lenovo Singapore Pte Ltd filed Critical Lenovo Singapore Pte Ltd
Priority to JP2013100791A priority Critical patent/JP5715658B2/ja
Priority to US14/275,008 priority patent/US9483278B2/en
Publication of JP2014219947A publication Critical patent/JP2014219947A/ja
Application granted granted Critical
Publication of JP5715658B2 publication Critical patent/JP5715658B2/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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6209Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本発明は、コンピュータに安全な動作環境を構築する技術に関し、さらには複数の動作環境を備えるコンピュータにおいて相互に干渉しない独立した動作環境を構築する技術に関する。
コンピュータの同一のハードウェア環境で、それぞれ特徴を備える複数のオペレーティング・システム(OS)を切り換えて実行する技術が知られている。特許文献1は、複数のOSを搭載したコンピュータにおいて動作するOSを切り換える発明を開示する。同文献には、起動時に複数のOSのブート・ローダに順次アクセスして、システムに共存するすべてのOSを、割り当てられたメイン・メモリの論理メモリ・ブロックにロードすることが記載されている。また動作するOSを切り換える際にサスペンドすることが記載されている。
特許文献2は、動作しないOSが使用するメモリ空間をSMM空間に移したり、SMM空間の境界を変更したりして動作していないOSを保護する技術を開示する。特許文献3は、複数のOSの切り換えが可能な情報処理装置において、あるOSが保持する情報を他のOSから保護することができる情報処理装置を開示する。
特開2001−256066号公報 米国特許第8234506号明細書 特開2005−11336号公報
特許文献1の発明では、同一の物理メモリ上に動作しているOSと動作しないOSが共存する形で記憶される。OSは、リング・プロテクションという特権階層を形成するプロセッサで動作するときに最も高い特権モードで動作して、すべてのメモリ空間にアクセスすることができる。OS以外のプログラムは、OSが管理する範囲でOSより低い特権モードでしか動作できない。したがって、OSが正常である限りOSが管理するプログラムのプロセスは、他のプログラムが記憶された領域にアクセスすることはない。しかしOSがマルウェアに汚染されたり、ルート・キットといわれる不正なプログラムを通じてアプリケーション・プログラム(アプリケーション)がOSの特権モードを取得したりすると、動作していないOSが書き換えられたりウィルスを埋め込まれたりする可能性がある。
特許文献2の発明は、OSがアクセスできる空間をBIOSが制御しているので安全性は高いが、同一の物理メモリ上に2つのOSをロードしてSMM空間を制御しているため柔軟性に欠ける面がある。特許文献3の発明では、第1のOSと第2のOSがそれぞれ異なるハードウェアを管理する環境下で切替管理部という特別なハードウェアを用意して実現している。また、メモリはOSごとにバンクが分かれておりメモリ保護機構でアクセスできるバンクを切り替えるようになっている。CPUをリセット信号で切り替えているため残っているCPUの内部状態を切り替えるために複雑な処理が必要になる。
そこで本発明の目的は、複数の動作環境を有するコンピュータにおいて、アクティブ状態の動作環境がスリープ状態の動作環境に影響を与えないようにする方法を提供することにある。さらに本発明の目的は、OSおよびハードウェアの変更をしないでスリープ状態の動作環境を保護する方法を提供することにある。さらに本発明の目的は、コンピュータに通常の動作環境よりも安全性が高い動作環境を構築する方法を提供することにある。さらに本発明の目的は、同一の動作環境を複数のコンピュータに構築する方法を提供することにある。さらに本発明の目的は、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することにある。
本発明の第1の態様では、複数のオペレーティング・システムを実行することが可能なコンピュータが、プロセッサと第1のランダム・アクセス・メモリと第2のランダム・アクセス・メモリとシステム・ファームウェアを有する。プロセッサは第1のオペレーティング・システムまたは第2のオペレーティング・システムを実行することができる。第1のランダム・アクセス・メモリと第2のランダム・アクセス・メモリは異なるコントローラに接続される。
第1のランダム・アクセス・メモリには、第1のオペレーティング・システムがロードされ、第2のランダム・アクセス・メモリには第2のオペレーティング・システムがロードされる。システム・ファームウェアはサスペンド状態からレジュームする際に、第2のオペレーティング・システムをスリープ状態に遷移させながら第1のオペレーティング・システムをアクティブ状態に遷移させ、または第1のオペレーティング・システムをスリープ状態に遷移させながら第2のオペレーティング・システムをアクティブ状態に遷移させることができる。
このような構成によれば、アクティブ状態のオペレーティング・システムとスリープ状態のオペレーティング・システムは異なるランダム・アクセス・メモリにロードされているため書き換えに対する安全性が向上する。しかもシステムをサスペンド状態からレジュームするときにパワー・オン・リセットによりプロセッサの制御権を得たシステム・ファーウェアが切り換え処理をするため、OSやハードウェアを変更しないで動作環境を切り換えることができる。
第1のランダム・アクセス・メモリと第2のランダム・アクセス・メモリは異なるコントローラに接続され、システム・ファームウェアが異なるデバイスとして認識できるものであれば物理的に分離している必要はなく、物理的に1つのメモリ・モジュールに形成してもよい。第1のランダム・アクセス・メモリはコンピュータが通常使用する容量の大きなメイン・メモリとし、第2のランダム・アクセス・メモリは、周辺デバイスとして使用するメイン・メモリよりも容量の小さなメモリ・モジュールとすることができる。第2のランダム・アクセス・メモリは、第1のランダム・アクセス・メモリの物理アドレス空間に割り当てられたアドレスを使用してプロセッサがメモリマップドI/O方式でアクセスできるものでもよい。
システムが第2のランダム・アクセス・メモリの動作を制御する第2のコントローラを有するときに、システム・ファームウェアは、第1のオペレーティング・システムをアクティブ状態に遷移させている間に第1のオペレーティング・システムによる第2のコントローラに対するアクセスを阻止するようにシステムを設定することができる。第2のコントローラはプロセッサに接続されたチップ・セットに組み込むことができる。
システム・ファームウェアはコンピュータがパワー・オフ状態からブートする際に第1のオペレーティング・システムによる第2のコントローラに対するアクセスを阻止するように設定することができる。システムが第1のランダム・アクセス・メモリの動作を制御する第1のコントローラを有するときに、システム・ファームウェアは、第2のオペレーティング・システムをアクティブ状態に遷移させている間に第2のオペレーティング・システムによる第1のコントローラに対するアクセスを阻止するようにシステムを設定することができる。
第1のコントローラは、プロセッサに組み込まれたメモリ・コントローラとすることができる。システム・ファームウェアはコンピュータがサスペンド状態からレジュームする際に第2のオペレーティング・システムによる第1のコントローラに対するアクセスを阻止するようにシステムを設定することができる。オペレーティング・システムは、システム・ファームウェアが設定したアクセス禁止を解除することができないため、サスペンド状態のオペレーティング・システムの書き換えに対する安全を確保することができる。
システム・ファームウェアは第2のコントローラまたは第1のコントローラに対するアクセスを許可する際に、パスワードを要求するようにしてもよい。システム・ファームウェアは、コンピュータをサスペンド状態からただちにレジュームさせるサスペンド&クイック・レジュームにより第1のオペレーティング・システムと第2のオペレーティング・システムに対してアクティブ状態とスリープ状態を切り換えることができる。
本発明の第2の態様では、第2のランダム・アクセス・メモリを着脱式のメモリ・モジュールに収納する。着脱式とは、ユーザがコンピュータの筐体を開放しないで着脱できるように構成されていることを意味する。したがって、筐体を開放してからコネクタに着脱するタイプのメモリ・モジュールは本発明における着脱式には相当しない。インターフェースは無線方式でもコネクタまたはケーブルによる有線方式でもよい。着脱式にすることで複数のコンピュータにセカンダリ・オペレーティング・システムの動作環境を形成することができる。
メモリ・モジュールは第2のオペレーティング・システムを格納する不揮発性メモリを備えてもよい。そして第2のオペレーティング・システムを不揮発性メモリから第2のランダム・アクセス・メモリにロードすることができる。第2のランダム・アクセス・メモリを不揮発性のメモリ・セルで構成すれば、メモリ・モジュールを取り外している間もメモリ・イメージの記憶を保持して、接続先のコンピュータにただちに第2のオペレーティング・システムの動作環境を構築することができる。
本発明の第3の態様では、第2のオペレーティング・システムの動作環境において、システム・ファームウェアが複数の周辺デバイスの中から選択したいずれかの周辺デバイスにアクセスできないようにする。選択した周辺デバイスは、不揮発性の記憶デバイスおよび通信デバイスとすることができる。このような構成によれば、第2のオペレーティング・システムの動作環境は第1のオペレーティング・システムの動作環境よりも安全性を向上させることができる。
本発明により、複数の動作環境を有するコンピュータにおいて、アクティブ状態の動作環境がスリープ状態の動作環境に影響を与えないようにする方法を提供することができた。さらに本発明により、OSおよびハードウェアの変更をしないでスリープ状態の動作環境を保護する方法を提供することができた。さらに本発明により、コンピュータに通常の動作環境よりも安全性が高い動作環境を構築する方法を提供することができた。さらに本発明により、同一の動作環境を複数のコンピュータに構築する方法を提供することができた。さらに本発明により、そのような方法を実現するコンピュータおよびコンピュータ・プログラムを提供することができた。
コンピュータの動作環境の概要を説明する図である。 本発明の説明に必要なコンピュータのハードウェア構成を説明する機能ブロック図である。 補助メモリ25の構成の一例を説明する機能ブロック図である。 コンピュータ10が搭載するPCIeシステムの構成の一例を説明する機能ブロック図である。 メイン・メモリ13および補助メモリ25に対する物理アドレス空間を説明する図である。 コンピュータ10の動作手順を示すフローチャートである。 補助メモリ300の構成を説明する機能ブロック図である。
[動作環境の概要]
最初に本実施の形態において実現する動作環境を説明する。動作環境は、コンピュータのハードウェアとソフトウェアが構成する。CPUは少なくとも複数のOSを切り換えて動作することができる。動作環境は実装されているOSの数に相当するだけ存在し、一例としてプライマリOSの動作環境とセカンダリOSの2つの動作環境を構築する。コンピュータのそれぞれの動作環境は、コンピュータに異なる特質をもたらす。
たとえば、プライマリOSの動作環境はキーボードおよびマウスからの入力を可能にしたコンテンツ作成に適したものとし、セカンダリOSの動作環境はタッチパネルの操作を可能にしてコンテンツの閲覧に適したものとすることができる。あるいは、プライマリOSの動作環境はすべての周辺デバイスの利用が可能であるが情報の流出やマルウェアからの汚染の危険性が残る環境とし、セカンダリOSの動作環境は一部の周辺デバイスの利用を制限することで不便性は残るが安全な環境とすることができる。
プライマリOSの動作環境は通常使用する環境で、セカンダリOSの動作環境は特別な作業をする場合に使用する動作環境とすることができる。プライマリOSの動作環境とセカンダリOSの動作環境は、一方がアクティブ状態のときに他方は必ずスリープ状態に遷移する。スリープ状態の動作環境を構成するOSのメモリ・イメージはメイン・メモリまたは補助メモリに維持されているためプライマリOSの動作環境とセカンダリOSの動作環境は極めて短い時間で切り換えが可能である。
スリープ状態のOSのメモリ・イメージを記憶しているメイン・メモリまたは補助メモリには、アクティブ状態のOSからアクセスできないように構成することができる。CPUはいずれの動作環境でも共有されるが、プライマリOSをロードするメイン・メモリとセカンダリOSのメモリ・イメージを記憶する補助メモリはCPUからみて独立している。
すべての周辺デバイスはいずれの動作環境でも利用できるようにしてよいが、セカンダリOSの動作環境では一部の周辺デバイスの動作が制約されることもある。アプリケーションは、2つの動作環境で共用していても独立していてもよく、また両者が混在していてもよい。セカンダリOSおよび補助メモリは、コンピュータに着脱できるメモリ・モジュールに搭載する場合もある。プライマリOSとセカンダリOSは、プライマリOSの動作環境に格納してもよいしそれぞれの動作環境に格納してもよい。
[コンピュータのハードウェア]
図2は、コンピュータ10の本発明の説明に必要な構成の一例を示す機能ブロック図である。図3は、補助メモリ25の構成の一例を説明する機能ブロック図である。図4は、コンピュータ10が搭載するPCIeバス・システムの構成の一例を説明する機能ブロック図である。CPU11には、メイン・メモリ13およびビデオ・カード15が接続されている。一例としてCPU11は、X86アーキテクチャまたはこれと互換性があるマイクロプロセッサとすることができる。
CPU11は、メイン・メモリ13の動作を制御するメモリ・コントローラ43、ビデオ・カード15の動作を制御するビデオ・コントローラ45、および仮想アドレスを物理アドレスに変換するメモリ管理ユニットなどを含んでいる。メイン・メモリ13は、DDRーSDRAMの規格に適合する揮発性のメモリでCPU11にデュアル・チャネルで接続されている。メイン・メモリ13の容量は一例として8GBとすることができる。
CPU11は、メイン・メモリ13に直接アクセスしてプログラムを実行するが、後に説明するように補助メモリ25にも直接アクセスしてプログラムを実行する。ビデオ・カード15はディスプレイ17に表示する画像データを生成する。チップ・セット19は、DMI(Direct Media Interface)規格のバスでCPU11に接続されている。チップ・セット19には、LPC(Low Pin Count)コントローラ47、USB(Universal Serial Bus)コントローラ49、PCIe(PCI Express)規格のメモリ・コントローラ51、SATA(Serial Advanced Technology Attachment)コントローラ53およびイーサネット(登録商標:Ethernet)コントローラ55などの周辺デバイスを制御するコントローラが組み込まれている。また、チップ・セット19は、コンピュータ10のパワー・ステートを制御するためのACPIレジスタ19aを含む。
LPCコントローラ47にはファームウェアROM21が接続され、USBコントローラ49にはUSBデバイス23が接続され、メモリ・コントローラ51には補助メモリ25が接続され、SATAコントローラ53にはHDD27が接続され、イーサネット(登録商標)・コントローラ55にはLANカード29が接続されている。ファームウェアROM21は、BIOSまたはこれに代わるUEFIなどのシステム・ファームウェアを格納する。
本発明においては、OSおよびその環境下で動作するプログラムはマルウェアに汚染される可能性があることを想定するが、BIOSは、ファームウェアROM21の保護されたブート・ブロックという領域に書き込まれており、動作時には常に改竄されていないことを確認する一貫性の検証が行われることを前提にして安全な動作環境を構築する。
コンピュータ10のハードウェア、BIOSおよびOSはACPI(Advanced Configuration and Power Interface)の規格に適合している。BIOSは、コンピュータの電源が起動されたときのPOST(Power On Self-Test)や認証などの他に、本発明を実現するためのシステムの動作環境を切り換える処理を行うコードおよびスリープ状態のメモリ・イメージを保護する処理を行うコード、および安全な動作環境を構築するためのコードを含む。
HDD27はブート・ドライブで、CPU11が実行するOSやアプリケーション・プログラムを格納する。HDD27は、一例としてプライマリOSとセカンダリOSの2種類のOSを格納する。プライマリOSとセカンダリOSは同一のブート・パーティションに格納してもよいし、異なるブート・パーティションに格納してもよい。BIOSによりプライマリOSはメイン・メモリ13にロードされ、セカンダリOSは補助メモリ25にロードされる。ここにプログラムのロードとは、HDD27に格納されたプログラムをCPU11が実行するためにメイン・メモリ13または補助メモリ25に実行可能な状態で記憶する処理をいう。他の例では、セカンダリOSは着脱可能なメモリ・モジュールの不揮発性メモリからロードされる。
EC31は、CPU、ROM、RAMなどで構成されたマイクロ・コンピュータで、コンピュータ10の温度や電源などの管理をするプログラムをCPU11から独立した動作環境で実行する。EC31はプライマリOSの動作環境およびセカンダリOSの動作環境のいずれでも動作する。EC31は、入力コントローラを含んでおりパワー・ボタン33、キーボードおよびポインティング・デバイスなどの入力デバイス35が接続されている。EC31は、サスペンド状態でも記憶を維持することができるレジスタ31a〜31cを含む。
レジスタ31a〜31cはOSまたはBIOSが設定し動作環境を構築したり変更したりする際にBIOSまたはEC31が参照する。レジスタ31aは、コールド・ブート[0]とウォーム・ブート[1]の種別を示すブート・フラグを設定する。レジスタ31bは、ユーザからのイベントを受け取ってレジュームする通常レジューム[0]とサスペンド&クイック・レジューム[1]の種別を示すレジューム・フラグを設定する。サスペンド&クイック・レジュームについては後に説明する。レジスタ31cはCPU11の制御権を渡すOSがプライマリOS103[0]とセカンダリOS111[1]のいずれかを示す環境フラグを設定する。DC/DCコンバータ37はコンピュータ10に電力を供給する。EC31は、DC/DCコンバータ37の動作を制御してコンピュータのパワー・ステートを変更する。
図2で例示したチップ・セット19の構成、周辺デバイスのインターフェースの種類および接続方法などは本発明を限定するものではなく、当業者にとって本発明が実現できることが明らかな他の構成を採用する場合も本発明の範囲に含まれる。たとえばメイン・メモリ13およびビデオ・カード15がCPU11に接続される例を示したが、それらはチップ・セットに接続されていてもよい。また、チップ・セットは、1個のPCHを例示して説明したがMCHとICHといったような2個のチップ・セットのアーキテクチャを採用してもよい。
図3で補助メモリ25は、PCIeコア・ブロック25a、R/W回路25b、およびSRAMセル・モジュール25cを含む。PCIeコア・ブロック25aは、PCIeのプロトコルを処理するためのトランザクション層、データ・リンク層、および物理層をサポートする。R/W回路25bは、PCIeコア・ブロック25aから受け取ったデータを解読してSRAMセル・モジュール25cに対するリード/ライト制御の信号を出力する。R/W回路25bは、SRAMセル・モジュール25cから受け取った読み取りデータをPCIeコア・ブロック25aに出力する。SRAMセル・モジュール25cは、SRAMで構成されたメモリ・アレイおよび駆動回路で構成されている。一例としてSRAMセル・モジュール25cの容量は2GBとすることができる。
[PCIeシステム]
コンピュータ10のバス・システムは、PCIeを基本にして構成されている。図4でCPU11のコア40には、PCIeルート・コンプレックス41が接続されている。PCIeルート・コンプレックス41は3つのポートを備えており、それぞれにメモリ・コントローラ43、PCIeブリッジ42およびビデオ・コントローラ45が接続されている。
PCIeブリッジ42には、LPCコントローラ47、USBコントローラ49、メモリ・コントローラ51、SATAコントローラ53およびイーサネット(登録商標)・コントローラ55が接続されている。これらのコントローラ43〜55をPCIeコントローラということにする。PCIeコントローラは、それぞれエンド・ポイント43a〜55aとファンクション43c〜55cで構成されている。エンド・ポイント43a〜55aは、それぞれコンフィグレーション・レジスタ43b〜55bを含んでいる。ファンクション43c〜55cには、それぞれメイン・メモリ13、ビデオ・カード15、ファームウェアROM21、USBデバイス23、補助メモリ25、HDD27、LANカード31などの周辺デバイスが接続されている。
[メモリ・マップと動作環境]
図5は、メイン・メモリ13および補助メモリ25に対してBIOS101が設定した物理アドレス空間を説明する図である。PCIeデバイスは、メモリ空間、I/O空間、コンフィグレーション空間およびメッセージ空間の4つのアドレス空間をサポートする。CPUが周辺デバイスにアクセスする方法として一般に、メモリマップドI/O(Memory-mapped I/O)方式とポートマップドI/O(Port-mapped I/O)方式があるが、CPU11はメモリマップドI/O方式を採用する。メモリマップドI/O方式では、CPU11がアクセスする一つの物理アドレス空間にメイン・メモリ13とPCIeコントローラを共存させ、メイン・メモリ13に対するリード/ライト命令(ロード/ストア命令)を周辺デバイスに対するアクセスにも使用することができる。
図5(A)は、メイン・メモリ13の物理アドレス空間100を説明する図で、図5(B)は補助メモリ25の物理アドレス空間150を説明する図である。BIOS101は、プライマリOS103の動作環境にメイン・メモリ13を選定したときに物理アドレス空間100を設定し、セカンダリOS111の動作環境に補助メモリ25を選定したときに物理アドレス空間150を設定する。なお、プライマリOS103の動作環境に補助メモリ25を選定して物理アドレス空間150を設定し、セカンダリOS111の動作環境にメイン・メモリ13を選定して物理アドレス空間100を設定することもできる。
これらの物理アドレス環境100、150を利用する手順は後に説明するが、BIOS101はブート時にメイン・メモリ13および補助メモリ25にそれぞれ図5(A)、(B)に示す物理アドレス空間100、150を構築してから、一方の動作環境をアクティブ状態に設定し他方のアドレス空間をスリープ状態に設定する。ここにスリープ状態の動作環境とは、コンピュータ10がパワー・オン状態のときに、メイン・メモリ13または補助メモリ25のメモリ・イメージの記憶を維持しながら、BIOS101によりCPU11の制御権が剥奪されたプライマリOS103またはセカンダリOS111の状態を意味する。これに対してアクティブ状態の動作環境とは、コンピュータ10がパワー・オン状態のときに、BIOS101からCPU11の制御権を受け取ったプライマリOS103またはセカンダリOS111の状態を意味する。
プライマリOS103およびセカンダリOS111は、メイン・メモリ13および補助メモリ25のいずれにロードされたかは認識しない。プライマリOS103およびセカンダリOS111はそれぞれに割り当てられた物理アドレス空間100、150だけを認識しそれぞれの仮想アドレス空間をマッピングしてプロセスを実行する。プライマリOS103はコンピュータ10が通常する動作環境を提供し、セカンダリOS111は安全性を向上したり、タッチスクリーンなどのユーザ・インターフェースに対応したりできる特別な動作環境を提供するようにしてもよい。
メモリマップドI/O方式では、BIOS101によりメイン・メモリ13および補助メモリ25のそれぞれの全体のアドレス範囲に、メモリ・アドレス範囲91、95とPCIeデバイス・アドレス範囲93、97が割り当てられる。したがって、プライマリOS103およびセカンダリOS111はそれぞれ、PCIeデバイス・アドレス範囲93、97が設定された分だけ利用できるメイン・メモリ13または補助メモリ25のメモリ・アドレス範囲91、95が制限される。なお、OSおよびチップ・セットが制限された物理アドレス範囲を拡張する周知の手法を採用することもできる。
ブートが完了したとき、メモリ・アドレス範囲91にはBIOS101、プライマリOS103、およびアプリケーション105などのメモリ・イメージが記憶され、メモリ・アドレス範囲95にはBIOS101、セカンダリOS111、およびアプリケーション113などのメモリ・イメージが記憶される。メモリ・アドレス範囲91、95に記憶されるBIOS101は、POSTがある程度進行した段階でシャドウ化するために、ファームウェアROM21からメイン・メモリ13または補助メモリ15にロードされる。
BIOS101はプライマリOS101またはセカンダリOS111をブートする際に、PCIeコントローラ43〜55にPCIeデバイス・アドレス範囲93、97のアドレス・ブロックを割り当て、コンフィグレーション・レジスタ43b〜55bにアドレス範囲を書き込む。PCIeデバイス・アドレス範囲93、95には、ビデオ・コントローラ45、LPCコントローラ47、USBコントローラ49、SATAコントローラ53およびイーサネット(登録商標)・コントローラ55などに対するアドレス・ブロックが割り当てられる。
BIOS101はメイン・メモリ13の物理アドレス空間100には、メモリ・コントローラ51に対してアドレス・ブロックを割り当てない。したがって、プライマリOS103の動作環境では、いかなるプログラムも補助メモリ25にアクセスすることができない。BIOS101は、補助メモリ25の物理アドレス空間150には、メモリ・コントローラ43に対してアドレス・ブロックを割り当てない。したがってセカンダリOS111の動作環境では、いかなるプログラムもメイン・メモリ13にアクセスすることができない。
[パワー・ステートとサスペンド&クイック・レジューム]
ACPIの規格では、複数のパワー・ステートが定義されており、コンピュータ10は、パワー・オン状態(S0ステート)、作業内容をメイン・メモリ13に書き込んでメイン・メモリ13の記憶を保持するために必要なデバイスと再起動に必要なデバイスにだけ電力を供給するサスペンド状態(S3ステート)、作業内容をHDD27やその他の不揮発性メモリなどに書き込んで再起動に必要なデバイスにだけ電力を供給するハイバネーション状態(S4ステート)、および再起動に必要なデバイスにだけ電力を供給するソフトオフまたはパワー・オフ状態(S5ステート)のいずれかの状態に移行することができる。本実施の形態では、サスペンド状態のときにセカンダリOS111の動作環境を構成するシステム・コンテキストを補助メモリ25が記憶し、その記憶の維持に必要なデバイスにも電力が供給される。
通常、サスペンド状態からパワー・オン状態への復帰(レジューム)は、サスペンド状態に移行してからある程度の時間が経ったときに、ユーザの操作またはシステムに設定したスケジュールに基づいて行われるが、本実施の形態では、サスペンド状態に遷移するとただちにレジュームするサスペンド&クイック・レジュームという方法を採用する。サスペンド&クイック・レジュームは、CPU11をパワー・オン・リセットしてCPU11の制御権を一旦BIOS101に渡すことを目的にしている。サスペンド状態に一瞬だけ遷移してからただちにレジュームすると、BIOS101はCPU11の動作環境を変更したり、PCIeコントローラに対するアクセスを阻止するための設定をしたりする。
[動作手順]
図6は、コンピュータ10の動作手順を示すフローチャートである。ブロック201でコンピュータ10がパワー・オフ状態のときに、パワー・ボタン33が押下されるとコンピュータ10に電源が供給されてブート・シーケンスを開始する。パワー・オフ状態からの起動をコールド・ブートといい、BIOS101はすべてのPCIeコントローラに対して完全なPOSTを実行する。これに対してサスペンド状態からの起動をウォーム・ブートといい、BIOS101はPOSTの一部を省略したり簡略化したりする。
パワー・オン・リセットされたCPU11は、電源が安定すると内部のキャッシュやレジスタなどの初期化を行う。リセットされたEC31も、レジスタ31a〜31cの初期化を行う。初期化されたレジスタ31aはブート・フラグがコールド・ブート[0]を示し、レジスタ31bはレジューム・フラグがサスペンド&クイック・レジューム[1]を示し、レジスタ31cは環境フラグがプライマリOS103[0]を示す。
CPU11は、ファームウェアROM21の先頭アドレスにアクセスしてBIOS101を順番に実行する。BIOS101は、レジスタ31cを参照してメイン・メモリ13をロード先として認識する。CPU11は途中で、シャドウ化するためにファームウェアROM21からメモリ・アドレス範囲91にBIOS101を読み出す。BIOS101を記憶するメイン・メモリ13のアドレス・ブロックには、ファームウェアROM21のアドレスがマッピングされ、以後CPU11はファームウェアROM21のアドレスを指定したときメイン・メモリ13からコードを読み取ってBIOS101を実行する。
ブロック203でBIOS101はレジスタ31aを参照して、コンピュータ10に取り付けられているPCIeコントローラの検出、初期化および設定をする完全なPOSTを実行する。BIOS101はメイン・メモリ13の容量とアドレスを認識すると、メモリ・アドレス範囲91、およびPCIeコントローラにアドレス・ブロックを割り当てたPCIeデバイス・アドレス範囲93を含む物理アドレス空間100の構築を開始する。
BIOS101は割り当てたアドレス・ブロックを各コンフィグレーション・レジスタ43b〜55bに設定する。このとき、補助メモリ25を制御するメモリ・コントローラ51のPOSTは省略してこれをディスエーブルに設定する。したがって、BIOS101はPCIeデバイス・アドレス範囲93にメモリ・コントローラ101にアクセスするためのメモリ・ブロックを割り当てない。PCIeコントローラに対するアドレス・ブロックの割り当てはBIOS101だけが実行できる。したがって、BIOS101からCPU11の制御権を受け取ったプライマリOS103はメモリ・コントローラ51を認識せず、物理アドレス空間100を通じて補助メモリ25にアクセスすることはできない。
あるいはBIOS101は、メモリ・コントローラ51のPOSTを終了してから、メモリ・コントローラ51をディスエーブルに設定したりアドレス・ブロックを割り当てないようにしたりしてもよい。いずれにせよ、BIOS101はプライマリOS103に制御権を渡す前に、プライマリOS111による補助メモリ25に対するアクセスを阻止するための処理をする。ブロック205でBIOS101は、図5(A)に示す物理アドレス空間100を構築してプライマリOS103に渡す。物理アドレス空間100はプライマリOS103の動作環境で使用される。
HDD27のブート・セクタには、プライマリOS103をブートするコードおよびセカンダリOS111をブートするコードが書き込まれている。POSTが終了するとブロック207でBIOS101は、レジスタ31cの環境フラグ[0]を参照してブート・セクタのプライマリOS103をブートするコードに制御を移す。CPU11はHDD27から順番に読み出したプライマリOS103のモジュールを、物理アドレス空間100を参照してメイン・メモリ13の所定のアドレスに書き込む。
このとき、プライマリOS103は、BIOS101が検出したPCIeコントローラのデバイス・ドライバをメモリ・アドレス範囲91にロードするが、メモリ・コントローラ51を認識しないためそのデバイス・ドライバはロードしない。プライマリOS103またはプライマリOS103上で動作するアプリケーション105は、プライマリOS103のブートが完了したことを検出するとブロック209でサスペンド&クイック・レジュームをするための切換イベントを生成する。切換イベントはユーザが入力デバイス35から入力して生成してもよい。セカンダリOS111の動作環境を構築しない場合は、切換イベントの生成前にブートが完了する。
切換イベントが生成されたことに応じてプライマリOS103は、サスペンド状態で電源が停止するCPU11および周辺デバイスのレジスタや揮発性メモリが保有するシステム・コンテキストなどのプライマリOS103の動作環境を構成するために必要な情報をメモリ・アドレス範囲91に記憶する。プライマリOS103はサスペンドの準備が完了するとBIOS101を通じてEC31のレジスタ31aにコールド・ブートを示すブート・フラグ[0]を設定し、レジスタ31bにサスペンド&クイック・レジュームを示すレジューム・フラグ[1]を設定し、レジスタ31cにセカンダリOS111をブートすることを示す環境フラグ[1]を設定する。
つづいてプライマリOS103はBIOS101を通じて、チップ・セット19のACPIレジスタ13aに遷移先としてサスペンド状態を設定する。ACPIレジスタ19aにサスペンド状態が設定されたチップ・セット19は、EC31に指示してシステムの電源をサスペンド状態に遷移させる。EC31は、サスペンド状態に遷移する際にレジスタ31bを参照する。EC31はレジスタ31bに設定されたレジューム・フラグ[1]を確認すると、CPU11をパワー・オン・リセットするために電源を一瞬サスペンド状態に移行させてから、ただちにパワー・オン状態に復帰させる。
サスペンド状態の間、メイン・メモリ13および補助メモリ25がデータを記憶するための電力およびEC31の電力は維持されている。ブロック211でパワー・オン・リセットしたCPU11はブロック201と同様の手順でBIOS101を先頭アドレスから実行する。BIOS101は、レジスタ31cの環境フラグ[1]を参照して補助メモリ25をロード先に選定する。BIOS101はレジスタ31aを参照して、ブート・フラグ[0]を確認すると、PCIeコントローラに対して完全なPOSTを実行する。CPU11は途中で、シャドウ化するためにメモリ・アドレス範囲95にファームウェアROM21からBIOS101を読み出す。
ブロック213でBIOS101は、セカンダリOS111をメイン・メモリ13にアクセスさせないための処理をする。BIOS101はレジスタ31aのブート・フラグ[0]を参照して、コンピュータ10に取り付けられているPCIeコントローラの検出、初期化および設定をする完全なPOSTを実行する。BIOS101は補助メモリ25の容量とアドレスを認識すると、メモリ・アドレス範囲95、およびPCIeデバイスにアドレス・ブロックを割り当てたPCIeデバイス・アドレス範囲97を含む物理アドレス空間100の構築を開始する。
BIOS101は割り当てたアドレス・ブロックを各コンフィグレーション・レジスタ43b〜55bに設定する。このときBIOS101は、メイン・メモリ13を制御するメモリ・コントローラ43に対してはPOSTを省略したり、ディスエーブルに設定したり、あるいはPCIeデバイス・アドレス範囲97にメモリ・ブロックを割り当てないようにしたりしてセカンダリOS111に制御権を渡す前に、セカンダリOS111によるメイン・メモリ13に対するアクセスを阻止するための処理をする。
したがってBIOS101からCPU11の制御権を受け取ったセカンダリOS111はメモリ・コントローラ43を認識せず、物理アドレス空間150を通じて、メイン・メモリ13にアクセスすることはできない。ブロック215でBIOS101は、図5(B)に示す物理アドレス空間150を構築しセカンダリOS111に渡す。物理アドレス空間150はセカンダリOS111の動作環境で使用される。
POSTが終了するとブロック217でBIOS101は、レジスタ31cの環境フラグ[1]を参照してブート・セクタのセカンダリOS111をブートするコードに制御を移す。CPU11はHDD27から順番に読み出したセカンダリOS111のモジュールを、物理アドレス空間150を参照して補助メモリ25の所定のアドレスにロードする。このとき、セカンダリOS111は、BIOS101が検出したPCIeコントローラのデバイス・ドライバをメモリ・アドレス範囲95にロードするが、メモリ・コントローラ43を認識しないためそのデバイス・ドライバはロードしない。
ブロック219で、プライマリOS103およびセカンダリOS111のブートが完了してシステム全体のブートが完了する。このときプライマリOS103はメモリ・イメージがメイン・メモリ13に記憶されているが制御権が剥奪されたスリープ状態に遷移している。また、BIOS101から制御権を受け取ってブートを完了したセカンダリOS111はアクティブ状態に遷移し、ユーザはセカンダリOS111およびアプリケーション113を実行して作業をすることができる。
セカンダリOS111またはアプリケーション113は正常であれば、メモリ・アドレス範囲95で動作するが、たとえマルウェアに汚染されたり損傷したりしてもセカンダリOS111の動作環境からはメイン・メモリ13にアクセスすることができないため、スリープ状態に遷移しているプライマリOS103のメモリ・イメージは保護される。
ブロック231で、ユーザはプライマリOS103の動作環境に移行するために入力デバイス35を操作して、コンピュータ10に切換イベントを入力する。ブロック233で切換イベントを受け取ったセカンダリOS111は、サスペンド状態で電源が停止するCPU11および周辺デバイスのレジスタや揮発性メモリが保有するシステム・コンテキストなどのセカンダリOS111の動作環境を構成するための情報をメモリ・アドレス範囲95に記憶する。セカンダリOS111はサスペンドの準備が完了するとBIOS101を通じてEC31のレジスタ31aにウォーム・ブートを示すブート・フラグ[1]を設定し、レジスタ31bにサスペンド&クイック・レジュームを示すレジューム・フラグ[1]を設定し、レジスタ31cに動作環境をプライマリOS103に移行させることを示す環境フラグ[0]を設定する。
つづいてセカンダリOS111はBIOS101を通じて、チップ・セット19のACPIレジスタ19aに遷移先としてサスペンド状態を設定する。ACPIレジスタ19aにサスペンド状態が設定されたチップ・セット19は、EC31に指示してシステムをサスペンド状態に遷移させる。EC31は、サスペンド状態に遷移する際にレジスタ31bを参照する。EC31はレジスタ31bに設定されたレジューム・フラグ[1]を確認すると、電源をサスペンド状態に移行させてCPU11をパワー・オン・リセットすると、ただちに、パワー・オン状態に復帰させる。
パワー・オン・リセットしたCPU11はBIOS101を先頭アドレスから実行する。BIOS101はレジスタ31aを参照して、ブート・フラグ[1]を確認すると、周辺デバイスに簡略したPOSTを実行する。ウォーム・ブートのPOSTは簡略化されているため短時間で終了する。BIOS101は、レジスタ31cの環境フラグ[0]を参照してメイン・メモリ13が復帰先のメモリであると判断して、ブロック209でメモリ・アドレス範囲91に記憶していたシステム・コンテキストをCPU11、PCIeコントローラおよび周辺デバイスにリストアする。システム・コンテキストのリストアは、コールド・ブートの際に決定したパラ−メータを復帰させるだけの処理であるため短時間で終了する。
ブロック235でプライマリOS103はCPU11の制御権を得てアクティブ状態に移行し、セカンダリOS111がスリープ状態に移行する。プライマリOS103がアクティブ状態に移行するとユーザはプライマリOS103およびアプリケーション105を実行して作業をすることができる。このときプライマリOS103またはアプリケーション105がマルウェアに汚染されたり損傷したりしても補助メモリ25にアクセスすることはできないため、アクティブ状態のプライマリOS103からスリープ状態のセカンダリOS111のメモリ・イメージは保護される。
ブロック237では、ユーザが入力デバイス35からセカンダリOS111の動作環境へ移行する切換イベントを入力する。ブロック239でプライマリOS103は、EC31のレジスタ31aにウォーム・ブートを示すブート・フラグ[1]を設定し、レジスタ31bにサスペンド&クイック・レジュームを示すレジューム・フラグ[1]を設定し、レジスタ31cに動作環境をセカンダリOS111に移行させることを示す環境フラグ[1]を設定してサスペンド状態に遷移する。ブロック241では、セカンダリOS111がCPU11の制御権を得てアクティブ状態に移行し、プライマリOS103がスリープ状態に移行してブロック231に戻る。
上記の手順によれば、プライマリOS103とセカンダリOS111は、いずれか一方がアクティブ状態に移行したときに他方がスリープ状態に移行する。そして、アクティブ状態の物理アドレス空間からはスリープ状態のメモリ・イメージを記憶するメイン・メモリ13または補助メモリ25にアクセスできない。3つ以上のOSが異なる動作環境を構築するようにしてもよい。
本実施の形態は、ブロック209で切換イベントをOSが生成する場合はその部分だけを修正する必要があるが、その他の修正は不要でBIOS101を書き換えるだけで実現できる。また補助メモリ25は新たに用意する必要があるが、コンピュータ10の主要なハードウェアを変更したり追加したりする必要がない。ブートの順番はセカンダリOS111が先であってもよい。この場合、システム全体のブートが完了したときにプライマリOS103の動作環境に移行する。
プライマリOS103の動作環境はネットワークを通じて危険に晒される。セカンダリOS111のメモリ・イメージを記憶する補助メモリ25にプライマリOS103からアクセスできないようにすることでセカンダリOS111の動作環境をプライマリOS103の動作環境より安全にすることができる。BIOS101はセカンダリOS111に制御権を渡す前に、イーサネット(登録商標)・コントローラ55をディスエーブルに設定して、セカンダリOS111の動作環境ではいかなるプログラムもネットワークにアクセスすることができないようにすることができる。
セカンダリOS111の動作環境で処理するデータをプライマリOS103の動作環境から隔離すればデータの安全性を高めることができる。そのためにBIOS101はセカンダリOS111に制御権を渡す前に、SATAコントローラ53やUSBコントローラ55をディスエーブルに設定することができる。この場合セカンダリOS111の動作環境では、プライマリOS103の動作環境からアクセスできるHDD27にデータを格納することも、筐体のコネクタに接続して使用する外付けのUSBメモリにデータを格納することもできないため、データの流出を防ぐことができる。
セカンダリOS111の動作環境で処理したデータは、セカンダリOS111の動作環境からだけアクセスできる不揮発性メモリに格納することができる。BIOS103によるPCIeコントローラの設定方法は、ユーザがBIOSのセットアップ画面で変更することができる。メモリ・コントローラ43、51などの安全を確保するためにディスエーブルに設定したPCIeコントローラをイネーブルに設定する場合は、ユーザにパスワードを要求することができる。
[着脱式補助メモリ]
これまで、補助メモリ25はコンピュータの筐体の内部に装着することを前提にして説明してきたが。補助メモリ25は筐体の表面に形成したコネクタに装着して使用する着脱式とすることができる。図7は、着脱式の補助メモリ300の構成を説明する機能ブロック図である。補助メモリ300が、補助メモリ25と機能的に異なる点は、EEPROMセル・モジュール300e、その動作を制御するR/W回路300dおよび電池300fを追加した点である。着脱式の補助メモリ300は、複数のコンピュータにおいて、それぞれのプライマリOS103の動作環境から隔離された共通のセカンダリOS111の動作環境を実現することができる。
SRAMセル・モジュール300cは、補助メモリ25のSRAMセル・モジュール25cと同様に機能してセカンダリOS111を記憶する。EEPROMセル・モジュール300eには、セカンダリOS111およびアプリケーション113などのセカンダリOS111の動作環境で実行するプログラムを格納することができる。BIOS101は、補助メモリ300をブート・デバイスに設定する。コンピュータ10をブートするときにBIOS101は、最初にHDD27からプライマリOS103をメイン・メモリ13にブートしたあとに、サスペンド&クイック・レジュームを実行してブート・デバイスを変更しセカンダリOS111をEEPROMセル・モジュール300eからSRAMセル・モジュール300cにブートすることができる。
電池300fは、コンピュータ10がサスペンド状態の間および補助メモリ300が取り外されたときにSRAMセル・モジュール300cの記憶を維持する。SRAMセル・モジュール300cに代えて不揮発性のMRAMセル・モジュールを採用することもできる。SRAMセル・モジュール300cの記憶を電池300fが保持することで、補助メモリ300をコンピュータ10から取り外して動作中の他のコンピュータに接続したときに、プラグ・アンド・プレイでセカンダリOS111の動作環境を追加することができる。
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
10 コンピュータ
13 メイン・メモリ
25 補助メモリ
31 エンベデッド・コントローラ
43 メモリ・コントローラ
45 ビデオ・コントローラ
47 LPCコントローラ
49 USBコントローラ
51 PCIe規格のメモリ・コントローラ
53 SATAコントローラ
55 イーサネット・コントローラ
91、95 メモリ・アドレス範囲
93、97 PCIeデバイス・アドレス範囲
100 プライマリOSの物理アドレス空間
101 BIOS
103 プライマリOS
150 セカンダリOSの物理アドレス空間
111 セカンダリOS

Claims (22)

  1. 複数のオペレーティング・システムを実行することが可能なコンピュータであって、
    第1のオペレーティング・システムまたは第2のオペレーティング・システムの実行が可能なプロセッサと、
    前記第1のオペレーティング・システムをロードする第1のランダム・アクセス・メモリと、
    前記第1のランダム・アクセス・メモリとは異なるコントローラに接続され前記第2のオペレーティング・システムをロードする第2のランダム・アクセス・メモリと、
    前記コンピュータがサスペンド状態からレジュームする際に、前記第2のオペレーティング・システムをスリープ状態に遷移させながら前記第1のオペレーティング・システムをアクティブ状態に遷移させ、または前記第1のオペレーティング・システムをスリープ状態に遷移させながら前記第2のオペレーティング・システムをアクティブ状態に遷移させるように前記コンピュータを機能させるシステム・ファームウェアと
    を有するコンピュータ。
  2. 前記第2のランダム・アクセス・メモリの動作を制御する第2のコントローラを有し、
    前記システム・ファームウェアは、前記第1のオペレーティング・システムをアクティブ状態に遷移させている間に前記第1のオペレーティング・システムによる前記第2のコントローラに対するアクセスを阻止するように機能させる請求項1に記載のコンピュータ。
  3. 前記第2のコントローラが前記プロセッサに接続されたチップ・セットに組み込まれているメモリ・コントローラである請求項2に記載のコンピュータ。
  4. 前記システム・ファームウェアは前記コンピュータがパワー・オフ状態からブートする際に前記第2のコントローラに対するアクセスを阻止するように機能させる請求項2または請求項3に記載のコンピュータ。
  5. 前記第1のランダム・アクセス・メモリの動作を制御する第1のコントローラを有し、
    前記システム・ファームウェアは、前記第2のオペレーティング・システムをアクティブ状態に遷移させている間に前記第2のオペレーティング・システムによる前記第1のコントローラに対するアクセスを阻止するように機能させる請求項2から請求項4のいずれかに記載のコンピュータ。
  6. 前記第1のコントローラが前記プロセッサに組み込まれたメモリ・コントローラである請求項5に記載のコンピュータ。
  7. 前記システム・ファームウェアは前記コンピュータがサスペンド状態からレジュームする際に前記第1のコントローラに対するアクセスを阻止するように機能させる請求項5または請求項6に記載のコンピュータ。
  8. 前記コンピュータがサスペンド状態からただちにレジュームする際に前記システム・ファームウェアは、前記第1のオペレーティング・システムと前記第2のオペレーティング・システムの一方がアクティブ状態に遷移し他方がスリープ状態に遷移するように機能させる請求項1から請求項7のいずれかに記載のコンピュータ。
  9. 複数のオペレーティング・システムを実行することが可能なコンピュータであって、
    第1のオペレーティング・システムまたは第2のオペレーティング・システムの実行が可能なプロセッサと
    前記第1のオペレーティング・システムを格納するディスク・ドライブと、
    前記第1のオペレーティング・システムがロードされる第1のランダム・アクセス・メモリと、
    第2のオペレーティング・システムがロードされる第2のランダム・アクセス・メモリを含む着脱式のメモリ・モジュールの接続が可能なインターフェースと、
    サスペンド状態からレジュームする際に、前記第2のオペレーティング・システムのメモリ・イメージを前記第2のランダム・アクセス・メモリに維持しながら前記第1のオペレーティング・システムに前記プロセッサの制御権を渡し、または、前記第1のオペレーティング・システムのメモリ・イメージを前記第1のランダム・アクセス・メモリに維持しながら前記第2のオペレーティング・システムに前記プロセッサの制御権を渡すように前記コンピュータを機能させるシステム・ファームウェアと
    を有するコンピュータ。
  10. 前記メモリ・モジュールが前記第2のオペレーティング・システムを格納する不揮発性メモリを含み、前記第2のオペレーティング・システムが前記不揮発性メモリからロードされる請求項9に記載のコンピュータ。
  11. 前記第2のランダム・アクセス・メモリが不揮発性のメモリ・セルで構成されている請求項9または請求項10に記載のコンピュータ。
  12. 複数のオペレーティング・システムを実行することが可能なコンピュータであって、
    第1のオペレーティング・システムまたは第2のオペレーティング・システムの実行が可能なプロセッサと、
    前記第1のオペレーティング・システムをロードする第1のランダム・アクセス・メモリと、
    前記第1のランダム・アクセス・メモリとは異なるコントローラに接続され前記第2のオペレーティング・システムをロードする第2のランダム・アクセス・メモリと、
    前記第1のオペレーティング・システムおよび前記第2のオペレーティング・システムからアクセスすることが可能な複数の周辺デバイスと、
    サスペンド状態からレジュームする際に、前記第1のオペレーティング・システムと前記第2のオペレーティング・システムを一方がアクティブ状態で他方がスリープ状態になるように切り換え、前記第2のオペレーティング・システムがアクティブ状態のときに前記複数の周辺デバイスの中から選択したいずれかの周辺デバイスにアクセスできないように前記コンピュータを機能させるシステム・ファームウェアと
    を有するコンピュータ。
  13. 前記システム・ファームウェアは、前記第1のオペレーティング・システムがアクティブ状態のときに前記第1のオペレーティング・システムから前記第2のランダム・アクセス・メモリにアクセスできないように前記コンピュータを機能させる請求項12に記載のコンピュータ。
  14. 前記選択した周辺デバイスが、不揮発性の記憶デバイスである請求項12または請求項13に記載のコンピュータ。
  15. 前記選択した周辺デバイスが、ネットワークに接続するための通信デバイスである請求項12から請求項14のいずれかに記載のコンピュータ。
  16. 複数のオペレーティング・システムを実行することが可能なコンピュータにおいて前記オペレーティング・システムのメモリ・イメージを保護する方法であって、
    システム・ファームウェアが第1のオペレーティング・システムを第1のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
    システム・ファームウェアが前記第1のオペレーティング・システムのメモリ・イメージを前記第1のランダム・アクセス・メモリに維持しながら第2のオペレーティング・システムを前記第1のランダム・アクセス・メモリとは異なるコントローラに接続された第2のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
    サスペンド状態からレジュームする際に、前記システム・ファームウェアが前記第2のオペレーティング・システムに前記プロセッサの制御権を渡すように前記コンピュータを機能させるステップと
    を有する方法。
  17. 前記システム・ファームウェアが、前記第2のオペレーティング・システムによる前記第1のランダム・アクセス・メモリに対するチャネルをディスエーブルに設定するステップと、
    前記システム・ファームウェアが前記第1のオペレーティング・システムによる前記第2のランダム・アクセス・メモリに対するチャネルをディスエーブルに設定するステップと
    を有する請求項16に記載の方法。
  18. 複数のオペレーティング・システムを実行することが可能な第1のコンピュータが構築した動作環境を複数のオペレーティング・システムを実行することが可能な第2のコンピュータに移転する方法であって、
    第2のランダム・アクセス・メモリと不揮発性メモリを含むメモリ・モジュールを前記第1のコンピュータに接続するステップと、
    システム・ファームウェアが第1のオペレーティング・システムを第1のランダム・アクセス・メモリにロードするように前記第1のコンピュータを機能させるステップと、
    システム・ファームウェアが前記第1のオペレーティング・システムのメモリ・イメージを前記第1のランダム・アクセス・メモリに維持しながら第2のオペレーティング・システムを前記第2のランダム・アクセス・メモリにロードするように前記第2のコンピュータを機能させるステップと、
    サスペンド状態からレジュームする際に、前記システム・ファームウェアが前記第1のオペレーティング・システムと前記第2のオペレーティング・システムを一方がアクティブ状態で他方がスリープ状態になるように切り換えるステップと、
    前記第2のランダム・アクセス・メモリの記憶を維持しながら前記メモリ・モジュールを前記第1のコンピュータから取り外すステップと、
    前記メモリ・モジュールを前記第2のコンピュータに接続するステップと
    を有する方法。
  19. 前記第2のオペレーティング・システムが前記不揮発性メモリに格納されている請求項18に記載の方法。
  20. 前記第2のオペレーティング・システムの動作環境で生成したデータを前記不揮発性メモリに記憶するステップを有する請求項18または請求項19に記載の方法。
  21. 複数の周辺デバイスを搭載し複数のオペレーティング・システムを実行することが可能なコンピュータにおいて、安全性を向上した動作環境を構築する方法であって、
    システム・ファームウェアが第1のオペレーティング・システムを第1のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
    前記システム・ファームウェアが第2のオペレーティング・システムを前記第1のランダム・アクセス・メモリとは異なるコントローラに接続された第2のランダム・アクセス・メモリにロードするように前記コンピュータを機能させるステップと、
    サスペンド状態からレジュームする際に、前記第1のオペレーティング・システムと前記第2のオペレーティング・システムを一方がアクティブ状態で他方がスリープ状態になるように切り換えるステップと、
    前記システム・ファームウェアが前記第2のオペレーティング・システムがアクティブ状態のときに前記複数の周辺デバイスの中から選択したいずれかの周辺デバイスにアクセスできないように前記コンピュータを機能させるステップと
    を有する方法。
  22. 第1のオペレーティング・システムまたは第2のオペレーティング・システムを実行することが可能なプロセッサを備えるコンピュータに、
    前記第1のオペレーティング・システムを第1のランダム・アクセス・メモリにロードする機能と、
    前記第2のオペレーティング・システムを前記第1のランダム・アクセス・メモリとは異なるコントローラに接続された第2のランダム・アクセス・メモリにロードする機能と、
    前記システム・ファームウェアが前記第1のランダム・アクセス・メモリに対するチャネルを閉じて前記第1のランダム・アクセス・メモリが記憶する前記第1のオペレーティング・システムのメモリ・イメージを維持しながら前記第2のオペレーティング・システムに前記プロセッサの制御権を渡す機能と、
    前記システム・ファームウェアが前記第2のランダム・アクセス・メモリに対するチャネルを閉じて前記第2のランダム・アクセス・メモリが記憶する前記第2のオペレーティング・システムのメモリ・イメージを維持しながら前記第1のオペレーティング・システムに前記プロセッサの制御権を渡す機能と、
    を実現させるためのコンピュータ・プログラム。
JP2013100791A 2013-05-11 2013-05-11 コンピュータに安全な動作環境を構築する方法、コンピュータ・プログラムおよびコンピュータ Active JP5715658B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013100791A JP5715658B2 (ja) 2013-05-11 2013-05-11 コンピュータに安全な動作環境を構築する方法、コンピュータ・プログラムおよびコンピュータ
US14/275,008 US9483278B2 (en) 2013-05-11 2014-05-12 Arrangement for secure independent operating environments in a computer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013100791A JP5715658B2 (ja) 2013-05-11 2013-05-11 コンピュータに安全な動作環境を構築する方法、コンピュータ・プログラムおよびコンピュータ

Publications (2)

Publication Number Publication Date
JP2014219947A JP2014219947A (ja) 2014-11-20
JP5715658B2 true JP5715658B2 (ja) 2015-05-13

Family

ID=51865714

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013100791A Active JP5715658B2 (ja) 2013-05-11 2013-05-11 コンピュータに安全な動作環境を構築する方法、コンピュータ・プログラムおよびコンピュータ

Country Status (2)

Country Link
US (1) US9483278B2 (ja)
JP (1) JP5715658B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160055031A1 (en) * 2014-11-13 2016-02-25 Mediatek Inc. Dual-System Architecture With Fast Recover And Switching Of Operating System
US10387652B2 (en) * 2015-04-17 2019-08-20 Hewlett Packard Enterprise Development Lp Firmware map data
JP6706159B2 (ja) * 2016-06-22 2020-06-03 キヤノン株式会社 情報処理装置、及びその制御方法
US11010475B1 (en) * 2016-10-07 2021-05-18 Janus Technologies Inc. Secure computer with multiple operating systems
US10564986B2 (en) * 2016-12-22 2020-02-18 Intel Corporation Methods and apparatus to suspend and resume computing systems
WO2018119904A1 (zh) * 2016-12-29 2018-07-05 华为技术有限公司 一种实现安全操作系统切换的片上系统和方法
CN109002402B (zh) * 2017-06-06 2021-08-13 佛山市顺德区顺达电脑厂有限公司 快速外围组件互连界面卡的初始化方法
US10572410B2 (en) * 2018-01-23 2020-02-25 Qualcomm Incorporated Function-specific communication on a multi-drop bus for coexistence management
EP3935492A4 (en) * 2019-05-17 2023-02-08 Hewlett-Packard Development Company, L.P. DISABLING SOFTWARE PERSISTENCE

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000076087A (ja) * 1998-08-28 2000-03-14 Hitachi Ltd マルチオペレーティングシステム制御方法
JP2001256066A (ja) 2000-02-29 2001-09-21 Internatl Business Mach Corp <Ibm> コンピュータシステム、オペレーティングシステムの切り替えシステム、オペレーティングシステムの実装方法、オペレーティングシステムの切り替え方法、記憶媒体及びプログラム伝送装置
JP2003150379A (ja) * 2001-11-07 2003-05-23 Inventec Corp 複数のpdaオペレーティングシステムをメニューを通して起動させる方法
JP2003196096A (ja) * 2001-12-07 2003-07-11 Internatl Business Mach Corp <Ibm> コンピュータシステム、その起動制御方法及びプログラム
JP2005011336A (ja) 2003-05-29 2005-01-13 Matsushita Electric Ind Co Ltd オペレーティングシステム切り替え可能な情報処理装置
TWI279678B (en) * 2005-09-07 2007-04-21 Mitac Technology Corp Method for fast switching between different operating systems in computer device with multiple operating systems
JP4342576B2 (ja) * 2006-07-25 2009-10-14 株式会社エヌ・ティ・ティ・ドコモ 複数オペレーティングシステム切替制御装置及びコンピュータシステム
US8234506B2 (en) 2006-10-08 2012-07-31 International Business Machines Corporation Switching between unsecure system software and secure system software
WO2008117411A1 (ja) * 2007-03-27 2008-10-02 Fujitsu Limited グリッド処理制御装置
JP5521824B2 (ja) * 2010-06-24 2014-06-18 富士通株式会社 情報処理装置及び起動方法
US9940283B2 (en) * 2011-04-11 2018-04-10 Ineda Systems Inc. Application sharing in multi host computing systems
WO2013035141A1 (ja) * 2011-09-05 2013-03-14 Suginaka Junko 情報処理装置、その起動制御方法、その起動制御プログラム及び外部デバイス
CN103294545B (zh) * 2012-02-23 2017-07-04 纬创资通股份有限公司 切换双操作系统的方法以及电子装置
US9304543B2 (en) * 2012-09-27 2016-04-05 Hewlett-Packard Development Company, L.P. Master mode and slave mode of computing device

Also Published As

Publication number Publication date
JP2014219947A (ja) 2014-11-20
US9483278B2 (en) 2016-11-01
US20140337610A1 (en) 2014-11-13

Similar Documents

Publication Publication Date Title
JP5715658B2 (ja) コンピュータに安全な動作環境を構築する方法、コンピュータ・プログラムおよびコンピュータ
US10936303B2 (en) Secure IoT device update
JP5711160B2 (ja) パスワードを保護する方法およびコンピュータ
EP3274788B1 (en) Technologies for improved hybrid sleep power management
JP4695082B2 (ja) メモリをクリアするように形成されるメモリコントローラを含む、高信頼実行環境を採用するコンピュータシステム
KR101920980B1 (ko) 멀티-운영 체제 디바이스들에 대한 액세스 격리
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
US7930576B2 (en) Sharing non-sharable devices between an embedded controller and a processor in a computer system
KR101562973B1 (ko) 메모리 장치 및 메모리 장치의 동작 방법
US9753739B2 (en) Operating system management of second operating system
JP2008287505A (ja) 情報処理装置およびレガシーエミュレーション処理停止制御方法
US10715526B2 (en) Multiple cores with hierarchy of trust
KR20010006749A (ko) 설치된 모든 대용량 저장 장치들의 리부트/파워 온리컨피그레이션을 최종 사용한 컨피그레이션과 동일하게하도록 각각의 대용량 저장 장치의 비휘발성 메모리에시스템 레벨 대용량 저장 컨피그레이션 데이터를 저장하는장치 및 방법
JP2011076134A (ja) システム管理モードの特権レベルを保護するコンピュータ
US9910677B2 (en) Operating environment switching between a primary and a secondary operating system
US7117334B2 (en) Dynamic node partitioning utilizing sleep state
JP5894044B2 (ja) ハイブリッド・ディスク・ドライブにデータを記憶する方法および携帯式コンピュータ
JP5378451B2 (ja) 起動時の信頼性とpost時間の短縮を図る方法およびコンピュータ
JP4403221B2 (ja) デバイス制御装置、コンピュータ、及び、デバイス制御方法
JP2007172062A (ja) 情報処理装置およびアクセス制御方法
TW201324155A (zh) 快閃記憶體儲存系統及其資料保護方法
JP2014531099A (ja) 動作コンテキストの切り替え
JP2011181030A (ja) コンピュータシステム及びその制御方法

Legal Events

Date Code Title Description
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: 20150310

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150313

R150 Certificate of patent or registration of utility model

Ref document number: 5715658

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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