説明

コンピュータシステム資源アクセス制御

【課題】ソフトウェアプログラムに関連付けられたアクセス権に基づいて要求を処理する。
【解決手段】複数の資源を含むコンピュータシステムにおいて、複数の資源の指定された資源にアクセスする要求をソフトウェアプログラムから受信し、複数の資源の指定された資源が保護資源204であるかどうかを判断し、複数の資源の指定された資源が保護資源204である場合において、コンピュータシステムが保護動作モードで動作しているときは、要求を拒否し、コンピュータシステムが保護動作モードで動作していないときは、ソフトウェアプログラムに関連付けられたアクセス権に基づいて要求を処理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータアーキテクチャに関し、特に、コンピュータシステムの資源へのアクセスを制御する技法に関する。
【0002】
[関連出願の相互参照]
本出願は、2004年8月3日に同時に出願された同一出願人の「Resource Protection in a Computer System with Direct Hardware Resource Access」と題する米国特許出願第10/910,630号に関連する。
【背景技術】
【0003】
コンピュータは、メモリ(例えば、ROMおよびRAM)、プロセッサレジスタ、および入出力デバイスを含めて、さまざまな資源を含む。
初期のコンピュータアーキテクチャでは、コンピュータで実行されるあらゆるプログラムが、制限なく、あらゆる資源にアクセスすることができた。
例えば、オペレーティングシステムであろうと、デバイスドライバであろうと、アプリケーションプログラムであろうと、あらゆるプログラムが、あらゆるメモリロケーションの値の読み出しおよび書き込みを行うことができた。
このようなコンピュータアーキテクチャは、設計および実施が比較的簡単であるという利点を有していたが、設計が不完全なプログラムまたは悪意のあるプログラムが、不適切な方法で資源を変更することによってコンピュータを誤動作させることができるという不都合を有していた。
例えば、アプリケーションプログラムは、オペレーティングシステムが依拠するデータを不注意で、または、悪意を持って変更することができ、それによって、オペレーティングシステムを誤動作させたり、クラッシュさせたりすることができた。
別の例として、第1のアプリケーションプログラムが、第2のアプリケーションプログラムが使用するデータを上書きすることができ、それによって、第2のアプリケーションプログラムを誤動作させたり、クラッシュさせたりすることができた。
【0004】
この問題に対処するために使用されてきた一技法は、コンピュータで実行される各ソフトウェアプログラムに、特定の1組の資源アクセス権(「特権」とも呼ばれる)を提供することである。
特定のアプリケーションプログラムは、例えば、メインメモリの特定のサブセットおよび特定の1組のI/Oデバイスにアクセスする権利を有することができる。
別のアプリケーションプログラムは、メインメモリの異なるサブセットおよび異なる1組のI/Oデバイスにアクセスする権利を有することができる。
オペレーティングシステムは、通常、すべての資源にアクセスする権利を有する。
【0005】
ハードウェアおよび/またはソフトウェアで実施することができる資源アクセス制御メカニズムは、これらのアクセス権を実施するために提供される。
特定のプログラムが、特定のオペレーションが特定の資源で実行されることを要求すると、アクセス制御メカニズムは、そのプログラムが、要求したオペレーションを指定した資源で実行する権利を有するかどうかを判断する。
そのプログラムがこのような権利を有する場合、アクセス制御メカニズムは、要求されたオペレーションが進行することを可能にする。
そうでない場合、アクセス制御メカニズムは、その要求を拒否し、通常、フォールトを生成する。
【0006】
特定のコンピュータシステムでは、多数の資源、および、各資源に関連付けることができる多種多様なアクセス権(資源から読み出す権利、資源へ書き込む権利、資源でソフトウェアを実行する権利等)が存在し得る。
ほとんどのシステムは、個々に構成可能な1組のアクセス権を各プログラムに割り当てることを可能にするのではなく、1組の「特権レベル」を定義し、これら特権レベルのそれぞれが、特定の1組のアクセス権に関連付けられる。
次に、各プログラムには、予め定義された特権レベルの1つが割り当てられ、それによって、そのプログラムには、割り当てられた特権レベルに関連付けられた1組のアクセス権が許可される。
【0007】
2つの特権レベルを有するコンピュータシステムの簡単な例を考える。
この2つの特権レベルとは、
(1)最高特権レベル(most-privileged level)(時に「カーネル特権レベル」と呼ばれる)、および、
(2)下位特権レベル(less-privileged level)(時に「アプリケーションプログラム特権レベル」と呼ばれる)
である。
カーネル特権レベルで実行されるプログラムは、すべての資源ですべてのオペレーションを実行する権利を有することができる一方、アプリケーションプログラム特権レベルで実行されるプログラムは、通常、プロセッサの命令セットの一定のサブセット内の命令のみを実行する権利、および、コンピュータのメモリのサブセットのみにアクセスする権利を有する。
このようなシステムでは、通常、オペレーティングシステムにカーネル特権レベルが割り当てられる一方、通常、アプリケーションプログラムにアプリケーションプログラム特権レベルが割り当てられる。
特権レベルを使用することによって、個々のアクセス権の割り当ておよび特定をプログラムごとに行う必要なく、特定のプログラムに許可されたアクセス権の割り当ておよび特定を、そのプログラムの特権レベルを参照することにより行うことが可能になる。
特権レベルの使用については、同一出願人の「Method and System for Privilege-Level-Access to Memory Within a Computer」と題する米国特許出願であって、2003年5月1日に公開された公開番号第US2003/0084256A1号にさらに詳細に説明されている。
この米国特許出願は、参照により本明細書に援用される。
【0008】
コンピュータシステムには、任意の個数の特権レベルが存在することができる。
通常、特権レベルには、0から開始して順次番号が付けられる。
例えば、0から3の番号が付けられた4つの特権レベルが存在するシステムを考える。
特権レベル0は、通常、最高特権レベルである。
オペレーティングシステムは、通常、特権レベル0を有する。
中間の特権レベル(特権レベル1や2等)は、デバイスドライバ、および、コンピュータの資源のサブセットへの比較的高いアクセス等級を必要とする他のソフトウェアプログラムに許可することができる。
最低特権レベル(例えば、特権レベル3)は、通常、アプリケーションプログラムに割り当てられる。
【特許文献1】米国特許公開第US2003/0084256A1号
【非特許文献1】Intel (R) Itanium (R) Architecture Software Developer's Manual,第2.1版(2002年10月)第2巻第11章
【非特許文献2】Itanium (R) Processor Family System Abstraction Layer Specification(2002年11月)
【非特許文献3】Intel (R) Itanium (R) Processor Family System Abstraction Layer Specification Update(2003年1月)
【発明の開示】
【発明が解決しようとする課題】
【0009】
特権レベルの使用等を通じて資源アクセス制御権を実施するコンピュータシステムは、それによって、プログラムが、システムを誤動作させるおそれのある方法で資源にアクセスことを防止する。
しかしながら、コンピュータアーキテクチャが進歩し続けるにつれて、上述した技法は、コンピュータシステムのすべての資源について、必要な種類および等級の資源アクセス制御を十分に提供しないことがある。
したがって、コンピュータシステムの資源へのアクセスを制御する改良された技法が必要とされている。
【課題を解決するための手段】
【0010】
複数の資源を含むコンピュータシステムにおいて、複数の資源の指定された資源にアクセスする要求をソフトウェアプログラムから受信し、複数の資源の指定された資源が保護資源であるかどうかを判断し、複数の資源の指定された資源が保護資源である場合において、コンピュータシステムが保護動作モードで動作しているときは、要求を拒否し、コンピュータシステムが保護動作モードで動作していないときは、ソフトウェアプログラムに関連付けられたアクセス権に基づいて要求を処理する技法が開示される。
【0011】
本発明のさまざまな態様および実施の形態の他の特徴および利点は、以下の説明および特許請求の範囲から明らかになろう。
【発明を実施するための最良の形態】
【0012】
コンピュータシステムの保護資源へのアクセスを制御する技法が開示される。
コンピュータシステムは複数の資源を含むことができる。
これら複数の資源には、保護資源および非保護資源の双方が含まれる。
コンピュータシステムは、最高特権レベルや下位特権レベル等の複数の特権レベルを認識することができる。
さらに、コンピュータシステムは、保護モードで動作することもできるし、非保護モードで動作することもできる。
保護モードでは、すべてのソフトウェアプログラム(最高特権を与えられた特権レベルを有するソフトウェアプログラムを含む)が、保護資源へのアクセスを拒否される。
非保護モードでは、適切な特権レベルを有するソフトウェアプログラムが、保護資源にアクセスすることができる。
一実施の形態では、特定のプログラムへ割り当てられたアドレス空間の範囲外のアドレスへ保護資源をマッピングすることによって、その特定のプログラムの保護資源へのアクセスを拒否することができる。
【0013】
図1を参照して、従来技術のコンピュータシステム100のブロック図を示す。
このコンピュータシステム100は、ハードウェアレイヤ102、オペレーティングシステムレイヤ104、およびアプリケーションプログラムレイヤ106を含む。
コンピュータシステム100のオペレーティングシステムおよびアプリケーションプログラムは、ハードウェアレイヤ102のハードウェアで実行される。
したがって、図1に示す「レイヤ」104および106は、ハードウェアレイヤ102の上に物理的に層化されたコンポーネントの物理的なレイヤを表すものではない。
そうでなく、コンピュータシステム100は、コンピュータシステム100のハードウェアおよびソフトウェア間の相互作用の説明を助けるものとしてのレイヤ102、104、および106から成るものとして示されている。
特に、コンピュータシステムをこのようなレイヤの観点で概念化して示し、高位レイヤの要素が低位レイヤの要素に依存することを強調し、かつ、レイヤ間の制御およびデータの流れを示すことは一般に行われることである。
【0014】
ハードウェアレイヤ102は、コンピュータシステム100の物理コンポーネントを備える。
このような物理コンポーネントには、例えば、プロセッサ108、メモリ記憶コンポーネント110a〜110c、内部バスおよび信号ライン116〜119、バスコントローラ120a〜120b、およびさまざまな周辺インターフェースカード124〜129が含まれ得る。
プロセッサ108は、メモリコンポーネント110a〜100cから取得された命令ストリームを実行する命令実行デバイスである。
プロセッサ108は、レジスタ130と呼ばれる内部メモリ記憶コンポーネントを含む。
レジスタ130には、メモリコンポーネント110a〜110cよりもはるかに高速にアクセスすることができる。
プロセッサ108は、内部バス116および117ならびにバスコントローラ120aを介して、メモリコンポーネント110a〜110cからのデータおよび命令の読み出し、ならびに、メモリコンポーネント110a〜110cへのデータおよび命令の書き込みを行う。
はるかに大きなデータ記憶容量は、周辺データ記憶デバイスに存在する。
この周辺データ記憶デバイスは、内部バス116、118、および119、バスコントローラ120a〜120b、ならびに周辺デバイス相互接続カード124〜129の1つまたは2つ以上を介してプロセッサ108によりアクセスされるディスクドライブ、CD−ROMドライブ、DVDドライブ、およびこのような他のコンポーネント等である。
例えば、記憶された大規模プログラムの命令は、ディスクドライブに存在し、そのプログラムの実行中に必要に応じて取り出して、メモリコンポーネント110a〜110cに記憶することができる。
高性能なコンピュータほど、それに対応してより複雑な内部バス相互接続および追加コンポーネントを有する複数のプロセッサを含むことができる。
【0015】
オペレーティングシステムレイヤ104は、オペレーティングシステムと呼ばれるソフトウェアプログラム112を含んだ論理レイヤである。
オペレーティングシステムは、ハードウェアレイヤ102のハードウェアコンポーネントを制御することができる。
現代のオペレーティングシステムは、比較的大きく、かつ、複雑であり、通常、同時に実行される多数のサブプログラムから成る。
一方、オペレーティングシステム112は、そのコアにおいて、アプリケーションプログラムにより利用されて、メモリおよび周辺デバイスからの読み出しやメモリおよび周辺デバイスへの書き込み等の機能をハードウェアレイヤ102のハードウェアコンポーネントに実行させることができるプログラムコードを含む。
【0016】
アプリケーションプログラミングレイヤ106は、1つまたは2つ以上のアプリケーションプログラムを含む。
図示および説明を簡略化するために、図1には、2つのアプリケーションプログラム134a〜134bを示す。
オペレーティングシステム112は、仮想メモリ領域136a〜136bをそれぞれアプリケーションプログラム134a〜134bに割り当てる。
この仮想メモリ領域136a〜136bは、物理メモリの追加領域ではなく、むしろ、メモリコンポーネント110a〜110cのメモリロケーションへマッピングされた論理領域であることに留意されたい。
アプリケーションプログラム134a〜134bによる、対応する仮想メモリ領域136a〜136bにアクセスする要求は、オペレーティングシステム112を通過する。
オペレーティングシステム112は、要求された読み出し/書き込みオペレーションを、メモリコンポーネント110a〜110cの適切なロケーション(単数または複数)に対して実行する。
これに加えて、オペレーティングシステム112は、アプリケーションプログラム134a〜134bによる、それらアプリケーションプログラムの各仮想メモリ領域136a〜136bの範囲外のメモリアドレスにアクセスするどの要求も拒否し、それによって、一定の資源アクセス制御を提供する。
【0017】
アプリケーションプログラム134a〜134bを、その対応する仮想メモリ領域136a〜136bのメモリへのアクセスに限定することができる一方法は、上述した特権ベースのアクセス制御技法を使用することによるものである。
例えば、最高特権を与えられた特権レベルは、オペレーティングシステム112に割り当てることができ、下位特権を与えられた特権レベルは、アプリケーションプログラム134a〜134bの双方に割り当てることができる。
オペレーティングシステム112は、オペレーティングシステム112の最高特権ステータスのために、メモリコンポーネント110a〜110cのどのメモリロケーションにもアクセスすることができる。
これとは対照的に、アプリケーションプログラム134a〜134bには、アプリケーションプログラム134a〜134bの下位特権ステータスのために、メモリ記憶コンポーネント110a〜110cに直接アクセスするプロセッサ命令を実行する能力を持たせないようにすることができる。
したがって、アプリケーションプログラム134a〜134bは、オペレーティングシステム112を通じて間接的にのみメモリコンポーネント110a〜110cにアクセスすることができる。
オペレーティングシステム112は、アプリケーションプログラム134a〜134bによる、それらの各仮想メモリ領域136a〜136bの範囲外のメモリロケーションにアクセスする要求の処理を拒絶することができる。
通常、オペレーティングシステムは、仮想メモリ部分のアクセス権をハードウェアにおいて指示し、それによって、ハードウェアが特権資源へのアクセスを許可または拒絶することが可能になる。
【0018】
アプリケーションレイヤ106は、オペレーティングシステム112によって提供されたさまざまなサービス138a〜138cを含むことができる。
これらさまざまなサービス138a〜138cを通じて、アプリケーションプログラム134a〜134bは、オペレーティングシステム112と通信することができる。
このようなサービス138a〜138cは、例えば、外部デバイスへのデータの書き込みや外部デバイスからのデータの取り出し、システム情報(内部クロックやシステム構成情報等)へのアクセス等のオペレーションの実行をアプリケーションプログラム134a〜134bに可能にすることができる。
【0019】
上記説明では、複数のプログラムが、図1に示すシステム100等のシングルプロセッサのコンピュータシステムで同時に実行されるものとして説明されているが、一時に1つのプロセスのみがプロセッサ108で実行される。
同時のプログラムの実行は、第1のプログラム134aからの命令および第2のプログラム134bからの命令の実行をプロセッサ108に交互に行わせることによって模擬的に行うことができる。
オペレーティングシステム104は、通常、第1のプログラム134aから命令のサブセットを取り出して、それら命令をプロセッサ108で実行し、第2のプログラム134bから命令のサブセットを取り出して、それら命令をプロセッサ108で実行し、以下同様に繰り返すことによって、このような「マルチスレッディング」を管理する。
このようなマルチスレッディングを効率的な方法で管理するオペレーティングシステムを実施するさまざまな技法は、当業者に既知である。
【0020】
このようなシステムでは、各プログラムに関連付けられた特権レベルが、そのプログラムからの命令がプロセッサ108で実行されている間に実施されることが重要である。
いくつかのシステムでは、このような実施は、レジスタファイル130にプロセッサステータスレジスタを含めることによって行われる。
このプロセッサステータスレジスタは、現在実行されているプログラムの特権レベルを指定する1つまたは2つ以上のビットを含む。
本明細書では、このようなビットを「カレント特権レベル」(CPL(current privilege level))ビットと呼ぶことにする。
例えば、2つの特権レベルを認識するシステムでは、単一のCPLビットを使用することができ、このCPLビットでは、0の値が最高特権レベルを表し、1の値が下位特権レベルを表す。
【0021】
このようなシステムでは、ハードウェアレイヤ102が、CPLビットへのアクセスを制御する。
下位特権コードが上位特権オペレーションを実行するには、下位特権コード(アプリケーションプログラム134a〜134bのコード等)は、ハードウェアレイヤ102を通じてオペレーティングシステムレイヤ104へフォールトまたはトラップをトリガしなければならない。
これに応答して、ハードウェアレイヤ102は、上位特権を与えられた特権レベルを示すようにCPLビットの値を設定し、制御を上位特権コードへ移して、下位特権コードの代わりに或るオペレーションを実行する。
最高特権を与えられた特権レベルを有するオペレーティングシステム112等のソフトウェアプログラムは、どの特権レベル(最高特権レベルを含む)を必要とするオペレーションも、下位特権コードに代わって実行できることが、この説明から理解されるべきである。
次に、上位特権コードは、割り込み復帰(return-from-interruption)命令を実行することができる。
この命令は、制御を下位特権コードに戻す前に、CPLビットの下位特権値を元に戻す。
【0022】
例えば、オペレーティングシステム112によるアプリケーションプログラム134a〜134bの一方の命令の実行を考える。
アプリケーションプログラム134a〜134bの一方からの命令の実行前に、オペレーティングシステム112は、(ハードウェアトラップ/フォールトを使用して)CPLビットの値を、下位特権を与えられた(アプリケーションプログラム)特権レベルを表す1に設定することができる。
次に、オペレーティングシステム112は、アプリケーションプログラム命令の実行を開始することができる。
このアプリケーションプログラム命令は、アプリケーションプログラム特権レベルに関連付けられた資源アクセス制限を伴って実行される。
システム管理オペレーション(制御レジスタの内容および特定動作向けデータ構造体(operating-specific data structure)の内容を操作するオペレーション等)を実行する前に、オペレーティングシステム112は、ハードウェアフォールトまたはトラップを使用して、CPLビットの値を、最高特権を与えられた(カーネル)特権レベルを表す0に設定することができる。
次に、オペレーティングシステム112は、所望のシステム管理機能を実行することができる。
この実行後、ハードウェアレイヤ102は、現在の特権レベルを、アプリケーションプログラムの特権レベルに戻すことができる。
このように、オペレーティングシステム112は、全システム資源への全面的なアクセスを有するオペレーションを実行できる一方、アプリケーションプログラム134a〜134bは、システム資源への限られたアクセスを提供される。
【0023】
図1に示すコンピュータシステムは、3つのレイヤ102、104、および106を含むが、現代のコンピュータアーキテクチャの中には、さらにレイヤを含むものがある。
例えば、図2Aを参照して、ハードウェアレイヤ102、オペレーティングシステムレイヤ104、アプリケーションレイヤ106、およびハードウェアインターフェースレイヤ202を含むコンピュータシステム200を示す。
ハードウェアインターフェースレイヤ202は、ハードウェアレイヤ102とオペレーティングシステムレイヤ104との間に挿入されている。
ハードウェアインターフェースレイヤ202は、その名前が示唆するように、オペレーティングシステムレイヤ104とハードウェアレイヤ102との間のインターフェースとして動作する。
ハードウェアインターフェースレイヤ202は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせを含むことができる。
【0024】
ハードウェアインターフェースレイヤ202の1つの目的は、プロセッサ108およびハードウェアレイヤ102の他のコンポーネントが実施される特定の方法に関係なく、オペレーティングシステムレイヤ104がこのようなコンポーネントと通信できる単一の抽象インターフェースを提供することとすることである。
その結果、ハードウェアインターフェースレイヤ202は、オペレーティングシステムレイヤ104もアプリケーションレイヤ106も変更することなく、さまざまな方法でプロセッサ108および他のハードウェアコンポーネントを実施することを可能にする。
その結果、ハードウェアレイヤ102のコンポーネントの設計者は、より大きな柔軟性を有し、オペレーティングシステム112およびアプリケーションプログラム134a〜134bの設計者は、オペレーティングシステム112およびアプリケーションプログラム134a〜134bを設計する際に、ハードウェアレイヤ102の実施の詳細を考慮する必要がない。
その結果、オペレーティングシステム112、アプリケーションプログラム134a〜134b、およびハードウェアレイヤ102のハードウェアコンポーネントを開発するのに必要な時間およびコストを削減することができる。
【0025】
例えば、Intel(登録商標)のItanium(登録商標)アーキテクチャは、プロセッサ抽象レイヤ(PAL)およびシステム抽象レイヤ(SAL)を定義する。
本発明の一実施の形態では、ハードウェアインターフェースレイヤ202はPALおよびSALを含む。
PALは、「Intel (R) Itanium (R) Architecture Software Developer's Manual」の第2.1版(2002年10月)の第2巻第11章に定義されている。
この文献は、参照により本明細書に援用される。
SALは、「Itanium (R) Processor Family System Abstraction Layer Specification」(2002年11月)およびその対応する「Intel (R) Itanium (R) Processor Family System Abstraction Layer Specification Update」(2003年1月)に定義されている。
これら文献の双方とも、参照により本明細書に援用される。
【0026】
一般に、PALは、プロセッサ108の複数の実施態様に対して単一のソフトウェアインターフェースを維持するために、ソフトウェアプログラム(オペレーティングシステム112やアプリケーションプログラム134a〜134b等)とプロセッサ108との間の抽象インターフェース(ファームウェアで実施される)を提供する。
PALは、オペレーティングシステム112がプロセッサ108の一貫したビューを維持できるように、異なるプロセッサの実施態様において異なる方法で実施される可能性のあるそれらプロセッサ機能をカプセル化する。
これらの機能には、プロセッサの初期化、構成、およびエラーハンドリング等の非動作時の(non-performance)重要な機能が含まれる。
PALは2つの主要なコンポーネントから成る。
第1のコンポーネントは、1組の割り込みエントリポイントである。
これら1組の割り込みエントリポイントは、リセット、初期化、およびマシンチェック等のハードウェアイベントによって直接呼び出される。
これらの割り込みエントリポイントは、プロセッサ初期化やエラー復旧等の機能を実行する。
第2のPALコンポーネントは1組のプロシージャである。
これら1組のプロシージャは、上位レベルのファームウェア(後述するSAL等)およびソフトウェアによって呼び出すことができ、それによって、
(1)プロセッサ108の識別、構成、および能力に関する情報を取得することができ、
(2)キャッシュの初期化等の実施態様に依存した機能を実行することができ、
(3)電力管理やプロセッサの特徴の有効/無効等の機能を通じてハードウェアレイヤ102と相互作用することをソフトウェア(例えば、オペレーティングシステム112およびアプリケーションプログラム134a〜134b)に可能にすることができる。
【0027】
SALは、当該SALがコンピュータシステム220のプラットフォームにファームウェアインターフェースを提供する点を除いて、PALが実行する機能と同様の機能を実行する。
用語「プラットフォーム」は、プロセッサ108、バス116〜119、およびメモリ110a〜110cを含むハードウェアレイヤ102のコンポーネントを指す。
SALは、プロセッサ108と直接相互作用しないが、オペレーティングシステム112と同様に、PALを通じてプロセッサ108と相互作用する。
【0028】
ハードウェアインターフェースレイヤ202が実行できる別の機能は、パーティショニング可能コンピュータシステムにおける複数の「パーティション」の確立および保守である。
用語「パーティショニング可能コンピュータシステム」は、複数のパーティションに論理的に細分可能なコンピュータシステムを指す。
この複数のパーティションのそれぞれには、コンピュータの資源の一部が割り当てられる。
例えば、各パーティションには、特定のプロセッサおよびメインメモリの一部を割り当てることができる。
さらに、各パーティションは、各パーティションのオペレーティングシステムおよびソフトウェアアプリケーションを実行することができ、それ以外に、独立した物理的なコンピュータと同様に動作することができる。
したがって、単一のパーティショニング可能コンピュータシステムは、複数の別個の物理的なコンピュータと同じ機能を提供する。
【0029】
ハードウェアインターフェースレイヤ202は、パーティションに資源を割り当てることができ、ソフトウェアプログラムがソフトウェアプログラムのパーティション内の資源のみにアクセスできることを保証する。
理想的には、パーティショニングされないコンピュータシステムで実行されるように設計された従来のオペレーティングシステムおよびアプリケーションプログラムも、パーティショニング可能コンピュータシステムのパーティションにおいて変更なしで実行することができる。
ハードウェアインターフェースレイヤ202は、特定のパーティションのオペレーティングシステムが発行したすべての資源アクセス要求をインターセプトし、その要求がアドレス指定する資源(例えば、メモリロケーション)を特定し、割り当てられた資源を使用してその要求を満たし、そして、オペレーティングシステムへその結果を返すことができる。
【0030】
このようなパーティション管理、より一般的には資源管理を実行するために、システム200は、パーティション構成情報208a〜208bを含むことができる。
このような情報208a〜208bは、例えば、各パーティションに割り当てられた資源(例えば、プロセッサ、メモリ、I/Oポート)を指定するテーブルを含むことができる。
ハードウェアインターフェースレイヤ202は、オペレーティングシステムレイヤ104が発行した資源アクセス要求を処理する際に、このような情報208a〜208bにアクセスすることができる。
【0031】
図2Aに示す特定のシステム200では、パーティション構成情報の第1の部分208aがハードウェアインターフェースレイヤ202に含まれるのに対して、パーティション構成情報の第2の部分208bは、ハードウェアレイヤ102に含まれることに留意されたい。
さらに、図2Aに示すシステム200では、オペレーティングシステムレイヤ104は、ハードウェアインターフェースレイヤ202を通じて、パーティション構成情報208a〜208bにのみアクセスできることにも留意されたい。
ハードウェアインターフェースレイヤ202は、例えば、オペレーティングシステムレイヤ104が、パーティション構成情報208a〜208bにアクセスするのに十分高い特権レベルを有することを確認することができる。
【0032】
ハードウェアレイヤ102は、図2Aでは、2つの部分102a〜102bを備えるものとして示されている。
このように、オペレーティングシステムレイヤ104は、ハードウェアインターフェースレイヤ202を通じて部分102b(パーティション構成情報208b等)の資源にのみアクセスすることができる。
一方、オペレーティングシステムレイヤ104は、ハードウェアレイヤ102の他の部分102aの資源に、直接、すなわちハードウェアインターフェースレイヤ202を通過することなく、アクセスすることができる。
変換索引バッファ(TLBs)214は、オペレーティングシステム104がハードウェアインターフェースレイヤ202を通過することなくアクセスできるハードウェアレイヤ102の資源の一例である。
【0033】
ハードウェアレイヤ102およびハードウェアインターフェースレイヤ202が保持するパーティション構成情報208a〜208bおよび他の情報は、例えば、レジスタ、オンボードメモリ、またはメインメモリ110a〜110cの一部に記憶することができる。
このような情報204a〜204bは、ハードウェアレイヤ102およびハードウェアインターフェースレイヤ202に対してアクセス可能ではあるが、オペレーティングシステム112に対してもアプリケーションプログラム134a〜134bに対してもアクセス可能でないことが望ましい場合がある。
しかしながら、オペレーティングシステム112は、通常、最高特権を与えられた特権レベルを有し、この特権レベルによると、オペレーティングシステム112はすべてのシステム資源にアクセスできるということを思い出されたい。
一方、パーティション構成情報208a〜208bの一部またはすべてが、メモリコンポーネント110a〜110c、または、オペレーティングシステム112に対してアクセス可能な別の資源に記憶される場合、上記で開示した技法が使用されると、オペレーティングシステム112はこのような情報208a〜208bを変更することができる。
最高特権を与えられた特権レベルを有するソフトウェアプログラムであっても、そのソフトウェアプログラムによるアクセスから、パーティション構成情報208a〜208b等の資源を保護する技法の例を次に説明する。
【0034】
図2Bを参照して、本発明の一実施の形態によるコンピュータシステム220の図を示す。
このコンピュータシステム220は、図2Aに示すコンピュータシステム200と同様に、ハードウェアレイヤ102、ハードウェアインターフェースレイヤ202、オペレーティングシステムレイヤ104、およびアプリケーションレイヤ106を含む。
また、システム220は、保護資源204a〜204bも含む。
詳細には、コンピュータシステム220のハードウェアインターフェースレイヤ202が保護資源204aを含む一方、コンピュータシステム220のハードウェアレイヤ102は保護資源204bを含む。
図2Bに示す実施の形態では、保護資源204aおよび204bは、それぞれパーティション構成情報208aおよび208bを含む。
これに加えて、保護資源204bは保護モード指示子206を含む。
以下でさらに詳細に説明するように、コンピュータシステム220は、オペレーティングシステムレイヤ104およびアプリケーションレイヤ106のソフトウェアがたとえ最大特権を与えられた特権レベルを有していても、そのソフトウェアの保護資源204a〜204bへのアクセスが防止される保護モードで動作することができる。
【0035】
保護モード指示子206は、コンピュータシステム220が保護モードで動作するかどうかを示す。
保護モード指示子206は、例えば、ハードウェアインターフェースレイヤ202のレジスタ(プロセッサステータスレジスタ(PSR)等)の1つまたは2つ以上のビットで実施することができる。
以下の説明のために、保護モード指示子206は1ビット値PMであり、PM=0の場合、コンピュータシステム220は非保護モードで動作し、PM=1の場合、コンピュータシステム220は保護モードで動作すると仮定する。
コンピュータシステム220が非保護モードで動作する場合、最高特権を与えられた特権レベルを有するソフトウェア(例えば、オペレーティングシステム112)は、保護資源204a〜204bを含めて、すべての資源への制限のないアクセスを与えられる。
【0036】
コンピュータシステム220が保護モードで動作する場合、すべての特権レベルのすべてのソフトウェアによる保護資源204a〜204bへのアクセスが拒否される。
本発明の一実施の形態では、保護モード指示子206の値は、ハードウェアインターフェースレイヤ202(例えば、PAL)によって開始されたハードウェアフォールトによってのみ変更することができる。
オペレーティングシステム112も他のどのソフトウェアプログラムも、そのソフトウェアプログラムの特権レベルにかかわらず、保護モード指示子206の値を変更することはできない。
これによって、ハードウェアインターフェースレイヤ202(例えば、PAL)のみが保護資源204a〜204bへのアクセスを取得して許可できることが保証される。
保護モード指示子206の値は、このようなハードウェアフォールトからの復帰時にその前の値(例えば、1)に戻すことができる。
【0037】
図3を参照して、ハードウェアインターフェースレイヤ202およびハードウェアレイヤ102によって実行されて、本発明の一実施の形態による保護モード指示子206の値を設定する方法300のフローチャートを示す。
図4を参照して、ハードウェアインターフェースレイヤ202およびハードウェアレイヤ102によって実行されて、本発明の一実施の形態による方法300を実行する動作を示すデータフロー図を示す。
【0038】
方法300は、例えば、ハードウェアインターフェースレイヤ202で実行される管理プロセス404によって実行することができる。
管理プロセス404は、例えば、保護資源204a〜204bへのアクセスがハードウェアレイヤ102によって認可されるSALの一部とすることができる。
図2Bおよび図4には、単一のハードウェアインターフェースレイヤ202のみが示されているが、ハードウェアインターフェースレイヤ202をさらに細分して、PALやSAL等のレイヤを追加することができる。
この場合、管理プロセス404はSALに存在することができ、保護資源204へのアクセス要求をPALに行うことができる。
【0039】
方法300は、例えば、システム起動時にオペレーティングシステム112が生成することができるリセット割り込み406によってトリガされる(ステップ302)。
リセット方法300は、ハードウェアインターフェースレイヤ202の既知のエントリポイントを有する割り込みサービスルーチンとして実施することができる。
リセット割り込み406は、例えば、コンピュータシステム220のコールドブート、ウォームブート、または他の種類のリセットを実行するために生成することができる。
また、方法300は、例えば、コンピュータシステム220で現在実行されているオペレーティングシステムをアンロードした後に実行することもできる。
【0040】
ハードウェアレイヤ202は、保護モード指示子206のデフォルト値を記憶するデフォルト保護モード指示子418を含む。
デフォルトにされた保護モード指示子418は、CMOSやフラッシュRAM等の永続記憶媒体または半永続記憶媒体に記憶することができる。
デフォルト保護モード指示子418の値は、製造時に初期値として設定することができる。
また、管理プロセス404は、リセットプロセス中および/またはリセットプロセス後に、デフォルト保護モード指示子418の値を変更することをユーザ408に可能にすることもできる。
例えば、コンピュータシステム220の電源投入時に、管理プロセス404は、構成ユーザインターフェース(UI)416をユーザ408に提示することができる。
この構成ユーザインターフェース416は、デフォルト保護モード指示子418等の構成情報の現在の値を表示する。
ユーザ408は、構成UI416を通じて構成変更コマンド420を管理プロセス404へ提供することができ、それによって、デフォルト保護モード指示子418の値を変更するように管理プロセス404へ命令することができる。
デフォルト保護モード指示子418は、ユーザ408が次に変更するまで、この値を維持することができる。
【0041】
図3に戻って、方法300は、保護モード指示子206のデフォルト値を特定する(ステップ304)。
管理プロセス404は、デフォルト保護モード指示子418からこの値を読み出すことによって、この値を特定することができる。
代替的に、デフォルト保護モード指示子418の値は、管理プロセス404内にハードコード化することもできる。
例えば、0のデフォルト保護モード指示子の値と共に管理プロセス404をハードコード化することができる。
この場合、管理プロセス404は、別個のデフォルト保護モード指示子418を必要とすることなく、ステップ304で0の値を特定することができる。
【0042】
管理プロセス404は、特定したデフォルト保護モードの値を保護モード指示子206へ書き込む(ステップ306)。
オペレーティングシステム112は、ハードディスクドライブ等の永続記憶媒体からオペレーティングシステムレイヤ104内へロードされる(ステップ308)。
ステップ308は、例えば、オペレーティングシステムレイヤ104のローダ(図示せず)によって実行することができる。
方法300は、ロードされたオペレーティングシステム112を用いてコンピュータシステム220をブートする(ステップ310)。
ステップ308および310を実行する技法は当業者に既知である。
以下でさらに詳細に説明するように、ブートプロセスが完了すると、オペレーティングシステム112(および、最高特権を与えられた特権レベルを有する他のあらゆるプログラム)は、保護モード指示子206の値に応じて、保護資源204(図2B)へのアクセスを許可されたり、拒否されたりする。
【0043】
図5を参照して、本発明の一実施の形態による資源アクセス要求を処理するのに実行できる方法500のフローチャートを示す。
図6を参照して、ハードウェアレイヤ102のコンポーネントによる方法500の実行を示すブロック図を示す。
【0044】
方法500は、非保護資源212の1つや保護資源204bの1つ等のハードウェアレイヤ102の資源にアクセスする要求602を受信する(ステップ502)。
図6に示す実施の形態では、ハードウェアレイヤ102は、非保護資源212および保護資源204bへのアクセスを制御するハードウェア資源アクセス制御メカニズム614を含む。
このハードウェア資源アクセス制御メカニズム614は、保護資源アクセス制御メカニズム612および特権ベースアクセス制御メカニズム610を含む。
保護資源アクセス制御メカニズム612は、保護資源204bへのアクセスを制御する。
特権ベースアクセス制御メカニズム610は、非保護資源212へのアクセスを制御する。
【0045】
ハードウェア資源アクセス制御メカニズム614は、例えば、オペレーティングシステム112からの要求602、または、アプリケーションレイヤ106で実行されるアプリケーション134a〜134bの1つからの要求602を受信することができる。
方法500は、このアクセス要求602が、保護資源204bのいずれかへのアクセスを要求するものであるかどうかを判断する(ステップ504)。
ステップ504を実行するのに使用できる技法の例については、以下でさらに詳細に説明する。
【0046】
要求602が、保護資源204のいずれへのアクセスも要求するものでない場合、方法500は、従来の特権ベースアクセス制御技法を使用して要求602を処理する(ステップ506)。
ステップ506は、例えば、特権ベースアクセス制御メカニズム610によって実行することができる。
特権ベースアクセス制御メカニズム610は、保護資源204bに内部アクセスすることができ、現在の特権レベル608等のこのような資源を利用して、要求された資源への要求側プログラムのアクセスを許可するかどうかを判断できることに留意されたい。
【0047】
その結果、非保護資源212にアクセスする要求は、特権ベース資源アクセス制御を使用する従来のシステムと同じ方法で処理することができる。
図5に示す方法500は、特権レベルに基づくアクセス制御を使用するが、これは本発明の要件ではない。
それとは逆に、非保護資源212にアクセスする要求は、どの方法によってもハンドリングすることができる。
【0048】
アクセス要求602が保護資源204bのいずれかへのアクセスを要求するものである場合、方法500は、コンピュータシステム220が保護モードで動作しているかどうかを判断する(ステップ508)。
保護資源アクセス制御メカニズム612は、例えば、保護モード指示子206の値を読み出すことによってステップ508を実行することができる。
コンピュータシステム220が保護モードで動作している場合、方法500は、アクセス要求602を拒否する(ステップ510)。
保護資源アクセス制御メカニズム612は、例えば、アクセス拒否604をオペレーティングシステム112へ送信することにより、または、フォールトを信号で伝達することにより、ステップ510を実行することができる。
したがって、コンピュータシステム220が保護モードで動作している場合には、最高特権を与えられた特権レベルを有するプログラムを含めて、すべてのプログラムは、保護資源204bへのアクセスを拒否される。
【0049】
コンピュータシステム220が保護モードで動作していない場合、方法500は、特権ベースアクセス制御メカニズム610を使用して要求602を処理する(ステップ512)。
以下でさらに詳細に説明するように、特権ベースアクセス制御メカニズム610は、要求側プログラムの特権レベルに基づいて要求602を許可することもできるし、拒否することもできる。
【0050】
アクセス制御メカニズム610は、現在の特権レベル608の値を特定し(ステップ514)、保護資源204にアクセスする権利を有する1組の特権レベルを特定する(ステップ516)。
特権レベルの特定のサブセットは、例えば、保護資源204bにアクセスする権利を有するものとして予め定義しておくことができる。
本発明の一実施の形態では、最高特権を与えられた特権レベル(例えば、特権レベル0)を有するプログラムのみが、保護資源204bにアクセスする権利を有する。
ただし、任意の特権レベルまたは特権レベルの組み合わせを、保護資源204bにアクセスできるものとして定義することができる。
【0051】
アクセス制御メカニズム610は、現在の特権レベル608が、保護資源204bにアクセスする権利を有する特定された1組の特権レベルにあるかどうかを判断する(ステップ518)。
現在の特権レベル608が、保護資源204bにアクセスする権利を有する特定された1組の特権レベルにない場合には、アクセス制御メカニズム610は、アクセス要求602を拒否する(ステップ520)。
アクセス制御メカニズム610は、例えば、要求602が拒否されたことを示す応答606をオペレーティングシステム112へ送信することができる。
現在の特権レベル608が、保護資源204bにアクセスする権利を有する特定された1組の特権レベルにある場合には、アクセス制御メカニズム610は、要求602を許可する(ステップ522)。
この許可は、要求されたオペレーションを指定された資源で実行することや、オペレーティングシステム112(または他の要求側プログラム)へ応答606で任意の適切な結果を返すこと等によって行われる。
応答606は、例えば、保護資源204から読み出されたデータを含むことができる。
【0052】
方法500の1つの効果は、コンピュータシステム220が保護モードで動作している場合に、保護資源204bへのすべてのソフトウェアプログラムのアクセスを拒否すること、および、コンピュータシステム220が非保護モードで動作している場合に、適切な特権レベル(最高特権レベル等)を有するソフトウェアプログラムに対してのみアクセスを許可することである。
換言すると、コンピュータシステム220が保護モードで動作している場合には、最高特権アクセスレベルを有するプログラムであっても、保護資源204bへのアクセスが拒否される。
【0053】
アクセス制御メカニズム610は、コンピュータシステム220が非保護モードで動作している場合にのみ、従来の技法を使用してアクセス要求602をハンドリングするものとして上述されているが、これは本発明の要件ではない。
それとは逆に、特権ベースアクセス制御メカニズム610は、保護資源および非保護資源にアクセスする要求を同様に処理することができる。
例えば、アクセス制御メカニズム610は、保護資源204にアクセスする権利を、非保護資源にアクセスする権利を定義するのと同様に定義することができる。
アクセス制御メカニズム610は、例えば、「保護資源読み出し」権および「保護資源書き込み」権を定義することができる。
アクセス制御メカニズム610は、このような権利を、存在する各特権レベルに関連付けることができる。
例えば、最大特権を与えられた特権レベルについては、保護資源204bからの読み出しおよび書き込みを行う権利を許可することができる一方、他のすべての特権レベルについては、保護資源204からの読み出しおよび書き込みを行う権利を拒否することができる。
このような権利が拒否されると、アクセス制御メカニズム610は、非保護資源にアクセスする要求をハンドリングするのに使用するのと同じ(従来の)手続きを使用して、保護資源204にアクセスする要求をハンドリングすることができる。
このような方式では、ステップ512は、ステップ506と同様に実施することができる。
【0054】
説明を簡単にするために、図6に示す実施の形態は、コンピュータシステム220が保護モードで動作しているかどうかを示す単一の保護モード指示子206を使用することに留意されたい。
このようなシステムでは、システム220が保護モードで動作している場合に、保護資源204bにアクセスする要求がたとえハードウェアインターフェースレイヤ202によって行われても、このような要求はすべて拒否される。
【0055】
代替的に、資源アクセス要求がソフトウェアプログラム(オペレーティングシステム112等)によって行われると、保護モード指示子206の現在の状態を一時レジスタに保存することができる。
その後、保護モード指示子206の値を「無効」値に設定することができ、その結果、要求をハンドリングするコンポーネント(例えば、ハードウェアインターフェースレイヤ202またはハードウェアレイヤ102)は、制限なく保護資源204にアクセスすることができる。
資源アクセス要求がハンドリングされると、制御をオペレーティングシステム112または他の要求側プロセスに戻す前に、保護モード指示子206の前の値を一時レジスタから戻すことができる。
【0056】
図6に示す実施の形態は、ハードウェアレイヤ102の保護資源204bにアクセスする要求が、オペレーティングシステム112によってハードウェアレイヤ102に直接行われることを必要とするが、同様の技法は、オペレーティングシステム112による保護資源204bにアクセスする要求を、ハードウェアインターフェースレイヤ202を通じて間接的にハンドリングすることにも適用できるし、ハードウェアインターフェースレイヤ202自体の保護資源204aにアクセスする要求をハンドリングすることにも適用できる。
これらの場合のいずれにおいても、図5に関して上述した技法を適用して、保護資源204にアクセスするオペレーティングシステムの要求の許可または拒否を行うことができる。
【0057】
図5に示す方法500は、資源アクセス要求602(図6)が、保護資源204のいずれかへのアクセスを要求するものであるかどうかを(ステップ504で)判断することを思い出されたい。
この判断は、さまざまな方法のどの方法でも行うことができる。
例えば、保護資源204は、1つまたは2つ以上の特定マシン向けレジスタ(MSR(machine-specific register))をハードウェアレイヤ102に含むことができる。
MSRは、複数のプロセッサを有するコンピュータシステムおよび/または複数のプロセッサコアを有するプロセッサに共通に使用されるレジスタの一種である。
このようなシステムでは、すべてのプロセッサ、シングルチップのすべてのプロセッサコア、または特定のプロセッサもしくはプロセッサコアがMSRを共有(使用に利用可能)することができる。
したがって、MSRは、従来のプロセッサレジスタと異なり、プロセッサおよび/またはプロセッサコア間で共有される情報を制御することもできるし、共有されない情報を制御することもできる。
1組のMSRを保護資源として予め定義することができる。
この場合、本明細書に開示した技法を使用して、このようなMSRへのアクセスを制御することができる。
この1組の保護MSRは、ハードウェアレイヤ102および/またはハードウェアインターフェースレイヤ202によって定義することができる。
アクセス要求602がMSRへのアクセスを要求するものである場合、管理プロセス404は、要求されたMSRが保護資源204の1つであることを上述したテーブルが示すかどうかを判断することによって、ステップ504を実行することができる。
【0058】
本発明の別の実施の形態では、オペレーティングシステム112に割り当てられたアドレス範囲の範囲外(および、保護資源204が保護される、コンピュータシステム220の他のあらゆるオペレーティングシステムに割り当てられたアドレス範囲の範囲外)にあるアドレス範囲に保護資源204をマッピングすることによって、保護資源204は実施される。
より具体的には、コンピュータシステム220のブートアップ時に特定のアドレス空間をオペレーティングシステム112に割り当てる技法は既知である。
コンピュータシステム220は、例えば、マルチパーティションコンピュータシステムとすることができる。
この場合、オペレーティングシステム112は、複数のオペレーティングシステムの1つとすることができ、複数のオペレーティングシステムのそれぞれは、コンピュータシステム220の別個のパーティションで実行される。
各パーティションにはアドレス空間(「物理アドレス空間」と呼ばれる)を関連付けることができ、このアドレス空間を通じて、そのパーティションのオペレーティングシステム112および他のコンポーネントは、そのパーティションに割り当てられた資源(メモリロケーションやMSR等)にアクセスすることができる。
【0059】
例えば、コンピュータシステム220は、あたかも、メモリコンポーネント110a〜110cが単一のメモリコンポーネントであるかのように、単一の連続したアドレス空間(「システムアドレス空間」と呼ばれる)を使用して、複数のメモリコンポーネント110a〜110cのメモリロケーションをアドレス指定することを可能にする1つまたは2つ以上のメモリコントローラを含むことができる。
以下の説明の例のために、コンピュータシステム220のシステムアドレス空間は、50ビットアドレスを使用してすべてにアドレス指定可能であると仮定する。
【0060】
さらに、コンピュータシステム220は2つのパーティションを含み、各パーティションは各パーティションのオペレーティングシステムを有するものと仮定する。
50ビットシステムアドレス空間が、2つのパーティション間で均等に分割されたとすると、各パーティションには、49ビットアドレス空間が割り当てられることになる。
このような各アドレス空間は、その高位ビットが明確である50ビットアドレス空間とみなすことができる。
このような例では、保護資源204を、高位ビット(例えば、ビット50)がセットされた50ビットアドレスにマッピングすることができる。
例えば、「メモリマップドI/O」を使用するメモリアドレスを使用してI/Oデバイスをアドレス指定することを可能にする技法が既知である。
他のあらゆる種類のコンピュータ資源も、特定のオペレーティングシステムに割り当てられた物理アドレス空間のメモリアドレスを通じて同様にアドレス指定可能とすることができる。
【0061】
保護資源204がオペレーティングシステム112(またはコンピュータシステム220の他のあらゆるオペレーティングシステムもしくはプロセス)によってアクセスされるのを防止するために、管理プロセス404は、(図3のステップ308の後に)各パーティション(および関連したオペレーティングシステム)に、49ビット物理アドレス空間がそのパーティションに割り当てられたことを通知することができる。
ブートアップ後、各オペレーティングシステムは、各オペレーティングシステムの49ビット物理アドレス空間のアドレスを使用してメモリにアクセスすることができる。
ハードウェアインターフェースレイヤ202を使用して、このような49ビットアドレスを、メモリコンポーネント110a〜110cの適切なメモリロケーションにアクセスするのに使用できる50ビットシステムアドレスへ変換する技法は既知である。
【0062】
図7を参照して、本発明の一実施の形態においてブートアップ時に管理プロセス404によって実行されて、保護資源204を、特定のオペレーティングシステムに割り当てられた物理アドレス空間の一部へマッピングする方法のフローチャートを示す。
図7に示す方法は、方法300(図3)のステップ308(オペレーティングシステム112のロード)とステップ310(システム220のブート)との間で実行することができる。
図7に示す方法は、マルチパーティションコンピュータシステムでは、パーティションごとに(したがって、オペレーティングシステムごとに)実行できることに留意されたい。
【0063】
オペレーティングシステム112をロードした(ステップ308)後、管理プロセス404は、デフォルトの物理アドレス空間を特定して、オペレーティングシステム112に割り当てる(ステップ702)。
上述したように、2つのパーティションのコンピュータシステムでは、デフォルトで、全システムアドレス空間よりも1ビット少ないビットを含んだ物理アドレス空間を各オペレーティングシステムに割り当てることができる。
例えば、50ビットシステムアドレスを有する2つのパーティションのコンピュータシステムでは、デフォルトで、49ビット物理アドレス空間を各オペレーティングシステムに割り当てることができる。
より一般的には、管理プロセス404は、コンピュータシステム220において、物理アドレス空間をパーティションに割り当てる任意の既存のメカニズムを使用してオペレーティングシステム112に割り当てられるデフォルトの物理アドレス空間を特定することができる。
例えば、パーティション構成情報208の構成レジスタは、コンピュータシステム220のパーティションに割り当てられるデフォルトの物理アドレス空間を定義することができる。
【0064】
管理プロセス404は、特定されたデフォルトの物理アドレス空間の一部へ保護資源204をマッピングする(ステップ704)。
例えば、0(LSB)から48(MSB)までの番号が付けられたビットを有する49ビット物理アドレス空間の場合、管理プロセス404は、保護資源204を、最上位ビット(例えば、ビット48)がセットされたアドレスへマッピングすることができる。
代替的に、管理プロセス404は、付加ビット(例えば、ビット49)をデフォルトのアドレス空間に追加して、この付加ビットがセットされたアドレスへ保護資源204をマッピングすることができる。
【0065】
管理プロセス404は、コンピュータシステム220が保護モードでブートするかどうかを判断する(ステップ706)。
管理プロセス404は、例えば、ステップ304(図3)で特定された保護モード指示子の値を参照することによってステップ706を実行することができる。
【0066】
コンピュータシステム220が保護モードでブートされない場合には、管理プロセス404は、デフォルトの物理アドレス空間をオペレーティングシステム112に割り当てる(ステップ708)。
コンピュータシステム220が保護モードでブートされる場合には、管理プロセス404は、デフォルトの物理アドレス空間の非保護部分をオペレーティングシステム112に割り当てる(ステップ710)。
この「非保護部分」は、保護資源204がマッピングされるアドレスを含まない、デフォルトの物理アドレス空間の部分を指す。
例えば、デフォルトの物理アドレス空間が49ビットアドレス空間である上述した実施の形態では、最上位ビット(例えば、ビット49)がセットされた(1に等しい)アドレス、すなわち、50ビットアドレス空間の上半分へ保護資源204をマッピングすることができる。
その場合、デフォルトのアドレス空間の「非保護部分」は、最上位ビットがクリアされた(0に等しい)49ビットアドレス空間、すなわち、50ビットアドレス空間の下半分になる。
管理プロセス404は、その物理アドレス空間が48ビット幅であり、それによって、第49ビットがセットされた(保護)アドレスが除かれることをオペレーティングシステム112に通知することによって、オペレーティングシステム112にこのようなアドレス空間を割り当てることができる。
【0067】
物理アドレス空間をオペレーティングシステム112に割り当てた後、管理プロセス404は、図3に関して上述したように、コンピュータシステムをブートする(ステップ310)。
その後、オペレーティングシステム112が、保護資源204へのアクセスを要求する資源アクセス要求を発行すると、コンピュータシステム200が保護モードで動作していない場合にのみ、コンピュータシステム200の従来のメモリアクセス制御メカニズムを利用して、オペレーティングシステム112が保護資源204にアクセスすることを可能にすることができる。
【0068】
例えば、図5に示す方法500は、ステップ504で、資源アクセス要求602(図6)が保護資源204へのアクセスを要求するものであるかどうかを判断することを思い出されたい。
ステップ504は、例えば、パーティショニング可能コンピュータシステムにすでに存在するメカニズムを使用して、要求602のアドレスが、オペレーティングシステム112に割り当てられた物理アドレス空間内にあるかどうかを判断することによって実行することができる。
コンピュータシステム200が保護モードで動作している間、オペレーティングシステム112が保護資源204にアクセスしようと試みると、これらの従来のメカニズムは、要求されたアドレスが、オペレーティングシステム112に割り当てられた物理アドレス空間の範囲外にあると認識することによって(例えば、その高位ビットがセットされているので)、このような試みを検出する。
コンピュータシステム200が非保護モードで動作している間、オペレーティングシステム112または他のプログラムが保護資源204にアクセスしようと試みると、図5に関して上述した技法を使用して、適切な特権レベルを有するプログラムのみが保護資源204にアクセスできることを保証することができる。
【0069】
本明細書に開示した技法の1つの利点は、それら技法によって、最高特権アクセスレベルを有するプログラムであっても、それらプログラムによるアクセスから、ハードウェアインターフェースレイヤ202のパーティション構成情報208等の指定された資源を保護することが可能になることである。
上述したように、アクセス特権を実施する従来のコンピュータシステムでは、最高特権アクセスレベルを有するプログラム(オペレーティングシステム等)は、コンピュータシステムのすべての資源にアクセスすることが可能にされる。
このような制限のないアクセスは、一定のコンピュータシステムでは許容できる場合があり、望ましい場合さえあるが、コンピュータシステム(パーティショニング可能コンピュータシステム等)によっては、最高特権アクセスレベルを有するプログラムであっても、それらプログラムによるアクセスから、一定の資源(パーティション構成情報208等)を保護することが望ましい場合ある。
このような資源をオペレーティングシステムに対してアクセス可能にすると、例えば、オペレーティングシステムが、パーティション構成情報208を変更することが可能になり、それによって、他のパーティションのオペレーションとインターフェースすることが可能になる。
このような結果、パーティショニング可能コンピュータによって保証されるべきパーティション間のセキュリティが侵害されることになる。
【0070】
本明細書に開示した技法のもう1つの利点は、それら技法によって、コンピュータシステムのオペレーティングシステム(単数または複数)またはアプリケーションプログラムを変更する必要なく、別の資源保護レベルをコンピュータシステムに追加することが可能になることである。
換言すると、本明細書に開示した技法は、オペレーティングシステム112とアプリケーションレイヤ106で実行されるアプリケーションプログラムとに対してトランスペアレントな方法で実施することができる。
それによって、このような技法は、上述した方法で保護資源204を保護する保護方式と共に作動するオペレーティングシステムおよびアプリケーションを変更するのに必要な費用および時間の追加を回避する。
さらに、このような技法は、オペレーティングシステム(単数または複数)およびアプリケーションプログラムとは独立に実施されるので、このような技法は、オペレーティングシステム(単数または複数)およびアプリケーションプログラムが実施される方法とは関係なく、所望の資源を保護することができる。
【0071】
この発明を特定の実施の形態の観点から上述してきたが、上記実施の形態は、例示としてのみ提供され、この発明の範囲を限定するものでも画定するものでもないことが理解されるべきである。
他のさまざまな実施の形態も特許請求の範囲の範囲内に含まれる。
他のさまざまな実施の形態には、以下のものが含まれるが、これらに限定されるものではない。
例えば、本明細書で説明した要素およびコンポーネントは、さらに分割されて、コンポーネントを追加することもできるし、互いに結合して、同じ機能を実行するさらに少ない数のコンポーネントを形成することもできる。
【0072】
保護資源204の特定の例を上記で提供しているが、本明細書に開示した技法は、あらゆる種類の資源を保護するのに使用することができる。
例えば、本明細書に開示した技法は、パーティションに関連したシステム構成情報、メモリの領域、I/Oコントローラ、プロセッサ構成情報、テスト/診断資源、およびレジスタを保護するのに使用することができる。
上記例の保護資源204は、ハードウェアレイヤ102およびハードウェアインターフェースレイヤ202の双方に配置されるが、これは本発明の要件ではない。
それとは逆に、本明細書に開示した技法は、コンピュータシステムのあらゆるコンポーネントまたはレイヤに配置された資源を保護するのに使用することができる。
同様に、アクセス制御は、上記例では、ハードウェアインターフェースレイヤ202の管理プロセス404によって実行されるが、これも本発明の要件ではない。
それとは逆に、アクセス制御は、コンピュータシステムのあらゆるコンポーネントまたはコンポーネントの組み合わせによって実行することができる。
さらに、IA−64のPALおよびSALが、ハードウェアインターフェースレイヤ202の例として本明細書で説明されるが、本明細書に開示した技法は、あらゆるコンピュータアーキテクチャと共に実施することができる。
【0073】
管理プロセス404は、本明細書では、さまざまな機能を実行するものとして説明されている。
代替的に、管理プロセス404は、例えば管理プロセッサとして実施することもできる。
管理プロセッサは、サーバで一般に使用されて、適切なオペレーティングシステムと共にサーバをブートアップする等のシステム管理機能を実行するプロセッサである。
【0074】
本明細書で説明した一定の例は、2つの特権レベル(最高特権レベルおよび下位特権レベル)を認識するアクセス制御方式に言及しているが、本明細書に開示した技法は、あらゆる個数の特権レベルを認識するアクセス制御方式と共に使用することができる。
さらに、上記で提供した例では、保護資源204は、コンピュータシステム220が保護モードで動作している場合に、最高特権レベルを有するプログラムによってのみアクセスすることができるが、これは本発明の要件ではない。
それとは逆に、コンピュータシステム220が保護モードで動作している場合に、所定の特権レベルならば、どの特権レベルを有するプログラムにもアクセスを提供することができる。
例えば、1組の特権レベル(特権レベル0や1等)を、保護資源204へのアクセスが許可される特権レベルの組として指定することができる。
【0075】
上述した例では、コンピュータシステム220は、保護モードまたは非保護モードのいずれでも動作するように構成することができるが、これは本発明の要件ではない。
それとは逆に、常に保護モードで動作するように特定のコンピュータシステムを構成することができる。
この場合、オペレーティングシステムレイヤ104およびアプリケーションレイヤ102で実行されるプログラムには、保護資源204へのアクセスが提供されることはない。
【0076】
上述した技法は、例えば、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせで実施することができる。
上述した技法は、プログラマブルコンピュータで実行される1つまたは2つ以上のコンピュータプログラムで実施することができる。
このプログラマブルコンピュータは、プロセッサ、プロセッサによって読み出し可能な記憶媒体(例えば、揮発性メモリおよび不揮発性メモリ、ならびに/または、記憶素子を含む)、少なくとも1つの入力デバイス、ならびに少なくとも1つの出力デバイスを含む。
入力デバイスを使用して入力された入力にプログラムコードを適用して、説明した機能を実行し、出力を生成することができる。
この出力は、1つまたは2つ以上の出力デバイスへ提供することができる。
【0077】
添付した特許請求の範囲の範囲内に入る各コンピュータプログラムは、あらゆるプログラミング言語で実施することができ、アセンブリ言語、マシン言語、高級手続型プログラミング言語、オブジェクト指向型プログラミング言語等で実施することができる。
このプログラミング言語は、例えば、コンパイラ型プログラミング言語であってもよいし、インタープリタ型プログラミング言語であってもよい。
【0078】
このような各コンピュータプログラムは、マシン可読記憶デバイスに有形に実施されて、コンピュータプロセッサにより実行されるコンピュータプログラム製品で実施することができる。
この発明の方法のステップは、コンピュータプロセッサが、コンピュータ可読媒体に有形に実施されたプログラムを実行し、入力に対して操作を行って出力を生成することによりこの発明の機能を実行することによって実行することができる。
適切なプロセッサには、例として、汎用マイクロプロセッサおよび専用マイクロプロセッサの双方が含まれる。
一般に、プロセッサは、読み出し専用メモリおよび/またはランダムアクセスメモリから命令およびデータを受け取る。
コンピュータプログラム命令を有形に実施するのに適した記憶デバイスには、例えば、すべての形態の不揮発性メモリが含まれる。
この不揮発性メモリは、EPROM、EEPROM、およびフラッシュメモリデバイスを含む半導体メモリデバイス、内部ハードディスクやリムーバブルディスク等の磁気ディスク、光磁気ディスク、ならびにCD−ROM等である。
上記のいずれも、特別に設計されたASIC(特定用途向け集積回路)またはFPGA(フィールドプログラマブルゲートアレイ)によって補完することもできし、ASICまたはFPGAに実装することもできる。
また、コンピュータは、一般に、内部ディスク(図示せず)やリムーバブルディスク等の記憶媒体からもプログラムおよびデータを受け取ることができる。
これらの要素は、従来のデスクトップコンピュータまたはワークステーションコンピュータ、および、本明細書で説明した方法を実施するコンピュータプログラムを実行するのに適した他のコンピュータにも見ることができる。
これらの要素は、あらゆるデジタル印刷エンジンもしくはマーキングエンジン、表示モニタ、または、用紙、フィルム、表示スクリーン、もしくは他の出力媒体にカラーピクセルもしくはグレースケールピクセルを生成できる他のラスタ出力デバイスと共に使用することができる。
【図面の簡単な説明】
【0079】
【図1】ハードウェアレイヤ、オペレーティングシステムレイヤ、およびアプリケーションレイヤを含む従来技術のコンピュータシステムのブロック図である。
【図2A】ハードウェアレイヤ、ハードウェアインターフェースレイヤ、オペレーティングシステムレイヤ、およびアプリケーションレイヤを含む従来技術のコンピュータシステムのブロック図である。
【図2B】本発明の一実施の形態による保護資源を含むコンピュータシステムのブロック図である。
【図3】本発明の一実施の形態において実行されて、本発明の一実施の形態による保護モード指示子の値を設定する一方法のフローチャートである。
【図4】図2Bのハードウェアインターフェースレイヤによって実行されて、本発明の一実施の形態による図3の方法を実行する動作を示すデータフロー図である。
【図5】本発明の一実施の形態による資源アクセス要求を処理する方法のフローチャートである。
【図6】本発明の一実施の形態による図2Bのハードウェアインターフェースレイヤによって実行されて図5の方法を実行する動作を示すブロック図である。
【図7】本発明の一実施の形態によるブートアップ時に図2Bのハードウェアインターフェースレイヤによって実行されて、保護資源をアドレス空間の一部へマッピングする方法のフローチャートである。
【符号の説明】
【0080】
102a,102b・・・ハードウェアレイヤ,
104・・・オペレーティングシステムレイヤ,
106・・・アプリケーションレイヤ,
112・・・オペレーティングシステム,
202・・・ハードウェアインターフェースレイヤ,
204a,204b・・・保護資源,
206・・・保護モード指示子,
208a,208b・・・パーティション構成情報,
212・・・非保護資源,
404・・・管理プロセス,
406・・・リセット割り込み,
408・・・ユーザ,
416・・・構成ユーザインターフェース,
418・・・デフォルト保護モード指示子,
420・・・構成変更コマンド,
610・・・特権ベースアクセス制御メカニズム,
612・・・保護資源アクセス制御メカニズム,
614・・・ハードウェア資源アクセス制御メカニズム,

【特許請求の範囲】
【請求項1】
複数の資源(204a〜204b、212)を含むコンピュータシステム(220)で使用され、コンピュータによって実施される方法(500)であって、
(A)前記複数の資源(204a〜204b、212)の指定された資源にアクセスする要求(602)を、ソフトウェアプログラム(112)から受信する(502)ステップと、
(B)前記複数の資源(204a〜204b、212)の前記指定された資源が保護資源(204b)であるかどうかを判断する(504)ステップと、
(C)前記複数の資源の前記指定された資源が保護資源である場合において、
(C−1)前記コンピュータシステム(220)が保護動作モードで動作しているときは、前記要求を拒否する(510)ステップと、
(C−2)前記コンピュータシステム(220)が前記保護動作モードで動作していないときは、前記ソフトウェアプログラム(112)に関連付けられたアクセス権に基づいて、前記要求(602)を処理する(512)ステップと、
を実行するステップと、
を含む方法。
【請求項2】
前記ステップ(C−2)は、
(C−2−a)前記ソフトウェアプログラムに関連付けられた特権レベルを特定する(514)ステップと、
(C−2−b)前記特権レベルに関連付けられた前記アクセス権を特定する(516)ステップと、
(C−2−c)前記アクセス権が、前記複数の資源の前記指定された資源にアクセスする権利を含む場合(518)にのみ、前記要求を許可する(522)ステップと
を含む請求項1に記載の方法。
【請求項3】
(D)前記複数の資源(204a〜204b、212)の前記指定された資源が、保護資源(204b)でない場合(504)に、前記ソフトウェアプログラムに関連付けられたアクセス権に基づいて前記要求(602)を処理する(506)ステップ
をさらに含む請求項1に記載の方法。
【請求項4】
複数の資源(204a〜204b、212)を含むコンピュータシステム(220)で使用されるデバイスであって、
前記複数の資源(204a〜204b、212)の指定された資源にアクセスする要求(602)をソフトウェアプログラム(112)から受信する(502)手段と、
前記複数の資源(204a〜204b、212)の前記指定された資源が保護資源(204b)であるかどうかを判断する(504)手段と、
保護資源アクセス制御手段であって、
前記コンピュータシステム(220)が保護動作モードで動作しており、かつ、前記複数の資源の前記指定された資源が保護資源である場合に、前記要求(602)を拒否する(510)手段と、
前記コンピュータシステム(220)が前記保護動作モードで動作しておらず、かつ、前記複数の資源の前記指定された資源が保護資源である場合に、前記ソフトウェアプログラム(112)に関連付けられたアクセス権に基づいて前記要求(602)を処理する(512)手段と、
を備える保護資源アクセス制御手段と
を備えるデバイス。
【請求項5】
複数の資源(204a〜204b、212)を含むコンピュータシステム(220)で使用され、コンピュータによって実施される方法であって、
(A)前記コンピュータシステム(220)のソフトウェアプログラム(112)によるアクセスから保護される前記複数の資源(204a〜204b、212)のサブセット(204b)を特定するステップと、
(B)前記複数の資源(204a〜204b、212)の前記保護されるサブセット(204b)と、アドレス空間の第1のサブセットとの間のマッピングを特定する(704)ステップと、
(C)前記コンピュータシステム(220)が、保護動作モードで動作する場合(706)に、前記アドレス空間の第2のサブセットであって、前記第1のサブセットを含まない第2のサブセットを前記ソフトウェアプログラム(112)に割り当てる(710)ステップと、
(D)前記コンピュータシステム(220)が、前記保護動作モードで動作しない場合(706)に、前記アドレス空間の第3のサブセットであって、前記第1のサブセットを含む第3のサブセットを、前記ソフトウェアプログラムに割り当てる(708)ステップと
を含む方法。
【請求項6】
前記コンピュータシステム(220)は、
複数のパーティション
を備え、
前記アドレス空間は、
前記複数のパーティションの選択されたパーティションに関連付けられた物理アドレス空間
を含み、
前記ソフトウェアプログラム(112)は、
前記複数のパーティションの前記選択されたパーティションで実行されるオペレーティングシステム
を含む
請求項5に記載の方法。
【請求項7】
複数の資源(204a〜204b、212)を含むコンピュータシステム(220)で使用されるデバイスであって、
前記コンピュータシステム(220)のソフトウェアプログラム(112)によるアクセスから保護される前記複数の資源(204a〜204b、212)のサブセット(204b)を特定する手段と、
前記複数の資源(204a〜204b、212)の前記保護されるサブセット(204b)と、アドレス空間の第1のサブセットとの間のマッピングを特定する(704)手段と、
前記コンピュータシステムが保護動作モードで動作する場合に、前記アドレス空間の第2のサブセットであって、前記第1のサブセットを含まない第2のサブセットを、前記ソフトウェアプログラムに割り当てる手段と、
前記コンピュータシステム(220)が、前記保護動作モードで動作しない場合(706)に、前記アドレス空間の第3のサブセットであって、前記第1のサブセットを含む第3のサブセットを、前記ソフトウェアプログラム(112)に割り当てる(710)手段と
を備えるデバイス。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate