(57)【特許請求の範囲】
【請求項１】
情報処理装置に、
一つの仮想アドレス空間に対して、特権レベルの異なる動作モードごとに生成され、当該動作モードに応じた第一のアクセス権が設定された各ページテーブルのアドレスを、前記仮想アドレス空間を管理するオペレーティングシステムより受け付け、該アドレスを該オペレーティングシステムに関連付けてページテーブル対応情報記憶手段に記録するページテーブル管理手順と、
前記オペレーティングシステムの前記動作モードの切り替えに応じ、前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定するコンテキストスイッチ制御手順と、
前記第二のアクセス権を超えるメモリアクセスに応じ、現在の前記動作モードに対応した前記アドレスを前記メモリ管理ユニットに設定し、トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、該アドレスに係るページテーブルに設定された前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するフォールト処理手順とを実行させ、
前記メモリ管理ユニットは、前記第二のアクセス権を、当該メモリ管理ユニットに前記アドレスが設定されているページテーブルに係る前記第一のアクセス権に優先させてメモリアクセスの制御を行うメモリアクセス制御プログラム。
【請求項２】
一つの仮想アドレス空間に対して、前記特権レベルの異なる動作モードごとに、当該動作モードに応じた前記第一のアクセス権が設定されたページテーブルを生成し、該ページテーブルのアドレスを前記ページテーブル管理手順に通知するページテーブル設定手順を前記オペレーティングシステムに実行させる請求項１記載のメモリアクセス制御プログラム。
【請求項３】
前記情報処理装置に、
前記仮想アドレス空間に対して前記動作モードごとに割り当てられた識別子を前記オペレーティングシステムより受け付け、前記識別子を識別子記憶手段に記録する識別子管理手順を実行させ、
前記コンテキストスイッチ制御手順は、グローバルなページを含まない仮想アドレス空間については、前記動作モードの切り替えに応じ、切り替え先の前記動作モードに対応する前記識別子及び前記ページテーブルのアドレスを前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、当該メモリ管理ユニットに設定された前記識別子を付与して、当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュする請求項１又は２記載のメモリアクセス制御プログラム。
【請求項４】
前記仮想アドレス空間に対して前記動作モードごとに前記識別子を割り当て、該識別子を前記識別子管理手順に通知する識別子設定手順を前記オペレーティングシステムに実行させる請求項３記載のメモリアクセス制御プログラム。
【請求項５】
前記ページテーブルのエントリの分類単位であるドメインの識別情報を前記オペレーティングシステムより受け付け、ローカルなページのみが属するローカルな前記ドメインに関して、前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するドメイン管理手順を前記情報処理装置に実行させ、
前記ページテーブル管理手順は、前記動作モード及び前記ドメインの組み合わせごとに生成されたページテーブルのアドレスを受け付け、
前記コンテキストスイッチ制御手順は、前記動作モードの切り替えに応じ、前記メモリ管理ユニットに前記アドレスが設定されているページテーブルに対して前記ローカルなドメインに係るエントリは異なり、グローバルなページが属するグローバルな前記ドメインに係るエントリは共通するページテーブルの前記アドレスと、切り替え先の前記動作モードに対応する前記識別子とを前記メモリ管理ユニットに設定し、前記グローバルなドメインに関して前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定し、
前記フォールト処理手順は、前記第二のアクセス権を超えるメモリアクセスに応じ、前記ローカルなドメインに係るエントリは共通し、前記グローバルなドメインに係るエントリは異なるページテーブルの前記アドレスを前記メモリ管理ユニットに設定し、前記トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、前記グローバルなドメインに関して前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、前記ローカルなドメインに係るページについては、当該メモリ管理ユニットに設定された前記識別子を付与して当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュし、前記ドメインごとの前記第二のアクセス権を優先させてメモリアクセスを制御する請求項３又は４記載のメモリアクセス制御プログラム。
【請求項６】
情報処理装置が、
一つの仮想アドレス空間に対して、特権レベルの異なる動作モードごとに生成され、当該動作モードに応じた第一のアクセス権が設定された各ページテーブルのアドレスを、前記仮想アドレス空間を管理するオペレーティングシステムより受け付け、該アドレスを該オペレーティングシステムに関連付けてページテーブル対応情報記憶手段に記録するページテーブル管理手順と、
前記オペレーティングシステムの前記動作モードの切り替えに応じ、前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定するコンテキストスイッチ制御手順と、
前記第二のアクセス権を超えるメモリアクセスに応じ、現在の前記動作モードに対応した前記アドレスを前記メモリ管理ユニットに設定し、トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、該アドレスに係るページテーブルに設定された前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するフォールト処理手順とを実行し、
前記メモリ管理ユニットは、前記第二のアクセス権を、当該メモリ管理ユニットに前記アドレスが設定されているページテーブルに係る前記第一のアクセス権に優先させてメモリアクセスの制御を行うメモリアクセス制御方法。
【請求項７】
一つの仮想アドレス空間に対して、特権レベルの異なる動作モードごとに生成され、当該動作モードに応じた第一のアクセス権が設定された各ページテーブルのアドレスを、前記仮想アドレス空間を管理するオペレーティングシステムより受け付け、該アドレスを該オペレーティングシステムに関連付けてページテーブル対応情報記憶手段に記録するページテーブル管理手段と、
前記オペレーティングシステムの前記動作モードの切り替えに応じ、前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定するコンテキストスイッチ制御手段と、
前記第二のアクセス権を超えるメモリアクセスに応じ、現在の前記動作モードに対応した前記アドレスを前記メモリ管理ユニットに設定し、トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、該アドレスに係るページテーブルに設定された前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するフォールト処理手段とを有し、
前記メモリ管理ユニットは、前記第二のアクセス権を、当該メモリ管理ユニットに前記アドレスが設定されているページテーブルに係る前記第一のアクセス権に優先させてメモリアクセスの制御を行う情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置に関する。
【背景技術】
【０００２】
図１は、従来における仮想アドレスから物理アドレスへの変換機構の一例を説明するための図である。
【０００３】
同図に示されるように、仮想アドレスから物理アドレスへの変換は、ページテーブルを用いて実現される。ページテーブルは、対応するプロセスの仮想アドレスと、主記憶装置等の物理アドレスとのマッピング情報をページ単位で記憶するデータである。すなわち、ページテーブルにおける一つのエントリは、一つのページに対応する。各エントリは、対応するページに対する特権レベル（例えば、特権モード、非特権モード）ごとのアクセス権等も記憶する。アーキテクチャによっては、一つのエントリでいくつかのページの塊を表すこともできる。図１では、ページテーブルのエントリのみで物理メモリへの変換を行う例を示したが、通常は、ページテーブルを階層的に使用し、仮想アドレスから物理アドレスへの変換を行う。
【０００４】
ページテーブルを用いたアドレス変換は、ＭＭＵ（Memory Management Unit：メモリ管理ユニット）によって行われる。すなわち、コンテキストスイッチの発生により、ＭＭＵには実行中のプロセスに対応するページテーブルのアドレスが設定される。ＭＭＵは、当該アドレスに係るページテーブルを参照して、アドレス変換を実行する。但し、ページテーブルは、主記憶装置等に記憶され、アクセスに対するコストが高い。そこで、一般的にＴＬＢ（Translation Look-aside Buffer）が使用されて、ページテーブルへの実質的なアクセス速度の高速化が図られている。
【０００５】
図２は、ＴＬＢを利用した仮想アドレスから物理アドレスへの変換機構の一例を説明するための図である。ＴＬＢは、ページテーブルのエントリのキャッシュである。ＴＬＢは、ＭＭＵ内に実装されるため、変換対象のアドレスに対応するエントリがＴＬＢ内に存在すれば、アドレス変換が高速化される。
【０００６】
但し、各仮想空間のアドレスは重複しうる。したがって、ＴＬＢ内に同時期にキャッシュ可能なアドレスは実行中のプロセスのページテーブルのエントリに限られる。そこで、コンテキストスイッチの発生に応じ、ＴＬＢの内容はフラッシュされる。
【０００７】
ＴＬＢのフラッシュを回避し、更なる性能の向上を図るために、アドレス空間ＩＤ（ＡＳＩＤ（Address Space Identifier））を使用するアーキテクチャも存在する。ＡＳＩＤとは、各プロセスの仮想アドレス空間に対する識別子である。
【０００８】
図３は、ＡＳＩＤを利用した仮想アドレスから物理アドレスへの変換機構の一例を説明するための図である。同図において、一方の仮想アドレス空間のＡＳＩＤは「０」であり、他方の仮想アドレス空間のＡＳＩＤは「１」とされている。ＡＳＩＤが有効なアーキテクチャにおいて、ＴＬＢ内では、各エントリにＡＳＩＤが付与されて管理される。したがって、ＴＬＢ内において、異なるプロセスに対応するページテーブルのエントリの共存が可能となる。その結果、コンテキストスイッチの発生に応じたＴＬＢのフラッシュを回避することができる。
【０００９】
以上が、以下の説明において前提となる、従来のアドレス変換機構の仕組みの一例である。
【００１０】
他方において、近年、組み込み機器（例えば、携帯電話）において使用されるＣＰＵの性能が向上してきている。その結果、斯かるＣＰＵにおいて、仮想化によって複数ＯＳを動作させることが可能となってきている。但し、組み込み機器は、ＰＣやサーバ用のＣＰＵのように、仮想化をサポートしているＣＰＵではなく、組み込み機器に特化したＣＰＵを使用している。つまり、組み込み機器におけるＣＰＵは、性能面において仮想化は可能であるが、機能面においてはソフトウェアによる補完が必要である。
【００１１】
例えば、組み込み機器のＣＰＵの動作モードは、特権モードと非特権モードの区別しかない。特権モードは、ＯＳのカーネルの動作時のモードとして使用され、非特権モードは、ユーザタスクの動作時のモードとして使用されている。しかしながら、仮想化された場合、ハイパーバイザによって特権モードが使用される。したがって、各ゲストＯＳのカーネルの動作時（以下、「カーネルモード」という。）とユーザタスクの動作時（以下、「ユーザモード」という。）との仮想アドレス空間に対するアクセス権を非特権モード内において区別する必要がある。カーネルモードとユーザモードとに応じたメモリアクセス保護を実現するためである。なお、ハイパーバイザとは、物理的なコンピュータが仮想化された仮想マシンを実現するプログラムである。ゲストＯＳとは、ハイパーバイザによって実現された仮想マシン上で動作するＯＳをいう。
【００１２】
カーネルモードとユーザモードとを非特権モード内において区別するための仕組みとして、従来、以下の方法が検討されている。
【００１３】
第一の方法（例えば、非特許文献１）では、一つのプロセスに対して二つのページテーブルが用意される。二つのページテーブルのうちの一方は、ゲストＯＳがカーネルモードで動作時のページテーブルとされる。すなわち、当該ページテーブルの各エントリには、非特権モードのアクセス権として、カーネルモードに対するアクセス権が設定される。他方は、ゲストＯＳがユーザモードで動作時のページテーブルとされる。すなわち、当該ページテーブルの各エントリには、非特権モードのアクセス権として、ユーザモードに対するアクセス権が設定される。ハイパーバイザは、ゲストＯＳの動作モード（カーネルモード／ユーザモード）の切り替えを検知し、切り替え先のモードに応じたページテーブルのアドレスをＭＭＵに設定する。その結果、非特権モードに対して、カーネルモードとユーザモードとの二つの動作モードを実質的に実現することができる。
【００１４】
しかし、第一の方法では、カーネルモード及びユーザモードの切り替えの度にＴＬＢをフラッシュする必要があった。ＴＬＢ内において、カーネルモード用のページテーブルのエントリと、ユーザモード用のページテーブルとのエントリとを区別することができないからである。
【００１５】
第二の方法（例えば、特許文献１）では、ページをドメインという概念によって分類し、ドメイン単位でアクセス権を設定することにより、ＣＰＵの非特権モードにおけるゲストＯＳのカーネルモードとユーザモードとの区別が図られている。
【００１６】
図４は、ドメインを利用したアクセス権の設定の仕組みを説明するための図である。同図のページテーブルには、３つのエントリｅ１〜ｅ３の項目（物理アドレス、ドメイン、及びフラグ）について、具体的な値が例示されている。物理アドレスは、エントリに係る仮想アドレスに対する物理アドレスである。ドメインは、ページが属するドメインの番号である。同図において、ドメイン番号は、０〜ｎの値を有する。フラグは、非特権モードにおけるページに対するアクセス権を示すフラグである。
【００１７】
同図では、ドメインに対するアクセス権の設定（ドメイン設定）として、ドメイン０、１、２、及びｎのそれぞれに、アクセス可、アクセス不可、フラグ、アクセス可が設定さえた例が示されている。
【００１８】
この場合、ドメイン０に属するエントリｅ１に係るページついては、エントリｅ１のフラグの値に拘わらず、アクセスが許可される。ドメイン１に属するエントリｅ２に係るページについては、エントリｅ２のフラグの値に拘わらず、アクセスが禁止される。ドメイン２に属するエントリ３に係るページについては、フラグの値に従ってアクセス権が判断される。
【００１９】
このようにページテーブルのアクセス権に対して上書き可能なドメイン設定を利用すれば、同一のページテーブルを用いつつ、各ページに対するアクセス権を変化させることができる。すなわち、カーネルモードとユーザモードとで、ドメイン設定を変更することにより、ＴＬＢをフラッシュすることなく、各動作モードに応じたメモリのアクセス保護を実現することができる。なお、ドメインを採用したアーキテクチャとして、ＡＲＭアーキテクチャが存在する。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】米国特許出願公開第２００８／０２４４２０６号明細書
【特許文献２】特開２００７−１２２３０５号公報
【非特許文献】
【００２１】
【非特許文献１】Ｊｕｎ  Ｎａｋａｊｉｍａ，Ａｓｉｔ  Ｍａｌｌｉｃｋ，Ｉａｎ  Ｐｒａｔｔ，Ｋｅｉｒ  Ｆｒａｓｅｒ，「Ｘ８６−６４  ＸｅｎＬｉｎｕｘ：Ａｒｃｈｉｔｅｃｔｕｒｅ，  Ｉｍｐｌｅｍｅｎｔａｔｉｏｎ，  ａｎｄ  Ｏｐｔｉｍｉｚａｔｉｏｎｓ」，Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  Ｌｉｎｕｘ  Ｓｙｍｐｏｓｉｕｍ，Ｊｕｌｙ  ２００６．
【発明の概要】
【発明が解決しようとする課題】
【００２２】
しかしながら、第二の方法では、一つのドメイン内において、カーネルモードとユーザモードとのアクセス権の全ての組み合わせを実現することができず、柔軟性に欠けるという問題がある。
【００２３】
図５は、第二の方法の問題点を説明するための図である。表（１）は、ユーザモードとカーネルモードとのアクセス権の組み合わせについて、一つのドメイン内において実現した二つのパターンを示す。パターン１は、ユーザモードのアクセス権は「アクセス禁止」であり、カーネルモードのアクセス権は「読み書き可」である。パターン２は、ユーザモードのアクセス権及びカーネルモードのアクセス権共に、「読み込み可」である。なお、パターン１とパターン２とが一つのドメイン内で実現されるということは、同一のドメインに属する或るページについてパターン１が実現され、他のいずれかのページについてパターン２が実現されることをいう。
【００２４】
表（２）は、表（１）の各パターンを実現するための、ページテーブルの非特権モードに対するアクセス権の設定と、ドメイン設定との内容を示す。なお、ドメイン設定は、ユーザモードとカーネルモードとで切り替えられるため、それぞれについて設定内容が示されている。
【００２５】
表（２）において、パターン１用設定は、パターン１を実現するための設定内容である。パターン１用設定において、ページテーブルのアクセス権として設定可能な値は、「アクセス禁止」、「何でもよい」、又は「読み書き可」である。なお、「何でもよい」とは、どのようなアクセス権でも構わないということである。
【００２６】
ページテーブルに「アクセス禁止」が設定されている場合、パターン１を実現するためには、ユーザモードのドメイン設定は、「フラグ」であり、カーネルモードのドメイン設定は「アクセス可」である必要がある。この場合、ユーザモードのアクセス権は、ページテーブルのアクセス権である「アクセス禁止」となり、カーネルモードのアクセス権は、ページテーブルのアクセス権が上書きされて「アクセス可（＝読み書き可）」となる。したがって、パターン１が実現される。
【００２７】
同様の考え方で、ページテーブルのアクセス権が「何でもよい」の場合は、ユーザモードのドメイン設定は、「アクセス不可」であり、カーネルモードのドメイン設定は、「アクセス可」である必要がある。また、ページテーブルのアクセス権が「読み書き可」の場合は、ユーザモードのドメイン設定は、「アクセス不可」であり、カーネルモードのドメイン設定は、「フラグ」又は「アクセス可」である必要がある。
【００２８】
表（２）において、パターン２用設定は、パターン２を実現するための設定内容である。パターン２用設定において、ページテーブルのアクセス権として設定可能な値は、「読み込み可」に限定される。この場合、パターン２を実現するためには、ユーザモード及びカーネルモードの双方のドメイン設定が、それぞれ「フラグ」である必要がある。
【００２９】
ここで、パターン１用設定におけるドメイン設定の内容と、パターン２用設定におけるドメイン設定の内容とを比較すると、双方において共通する設定内容は存在しない。したがって、表（１）の内容は、一つのドメイン内において実現することはできないということになる。
【００３０】
なお、特許文献２は、ゲストＯＳの動作モードに対して、ページテーブルとＡＳＩＤを割り当て、ゲストＯＳからの動作モードの切り替え指示に応じ、ページテーブルとＡＳＩＤとを切り替えることで、モード切り替え時のＴＬＢフラッシュを回避するというものである。
【００３１】
しかし、ゲストＯＳの動作モードが、ユーザモードとカーネルモードといった対のものを想定していないことから、ゲストＯＳからの指示ではなく、ハイパーバイザが強制的にカーネルモードへ切り替えることはできない。
【００３２】
そこで、一つの側面として、ＴＬＢのフラッシュを削減させることのできるメモリアクセス制御プログラム、メモリアクセス制御方法、及び情報処理装置の提供を目的とする。
【課題を解決するための手段】
【００３３】
一つの案では、情報処理装置に、一つの仮想アドレス空間に対して、特権レベルの異なる動作モードごとに生成され、当該動作モードに応じた第一のアクセス権が設定された各ページテーブルのアドレスを、前記仮想アドレス空間を管理するオペレーティングシステムより受け付け、該アドレスを該オペレーティングシステムに関連付けてページテーブル対応情報記憶手段に記録するページテーブル管理手順と、前記オペレーティングシステムの前記動作モードの切り替えに応じ、前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定するコンテキストスイッチ制御手順と、前記第二のアクセス権を超えるメモリアクセスに応じ、現在の前記動作モードに対応した前記アドレスを前記メモリ管理ユニットに設定し、トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、該アドレスに係るページテーブルに設定された前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するフォールト処理手順とを実行させ、前記メモリ管理ユニットは、前記第二のアクセス権を、当該メモリ管理ユニットに前記アドレスが設定されているページテーブルに係る前記第一のアクセス権に優先させてメモリアクセスの制御を行う。
【発明の効果】
【００３４】
ＴＬＢのフラッシュを削減させることができる。
【図面の簡単な説明】
【００３５】
【図１】従来における仮想アドレス空間から物理メモリアドレス空間への変換機構の一例を説明するための図である。
【図２】ＴＬＢを利用した仮想アドレスから物理アドレスへの変換機構の一例を説明するための図である。
【図３】ＡＳＩＤを利用した仮想アドレスから物理アドレスへの変換機構の一例を説明するための図である。
【図４】ドメインを利用したアクセス権の設定の仕組みを説明するための図である。
【図５】第二の方法の問題点を説明するための図である。
【図６】第一の実施の形態におけるドメインアクセス権の決定方法を説明するための図である。
【図７】第一の実施の形態の動作モード切り替え時における処理内容の一例を説明するための図である。
【図８】許可されるべきメモリアクセスに対してフォールトが発生するケースを説明するための図である。
【図９】第一の実施の形態のフォールト発生時における処理内容の一例を説明するための図である。
【図１０】第一の実施の形態における情報処理装置のハードウェア構成例を示す図である。
【図１１】第一の実施の形態における情報処理装置のソフトウェア構成例を示す図である。
【図１２】第一の実施の形態のＡＳＩＤ設定部が実行する処理手順を説明するためのフローチャートである。
【図１３】第一の実施の形態のＡＳＩＤ管理部が実行する処理手順を説明するためのフローチャートである。
【図１４】第一の実施の形態のＡＳＩＤ管理表のエントリの構成例を示す図である。
【図１５】第一の実施の形態のページテーブル設定部が実行する処理手順を説明するためのフローチャートである。
【図１６】第一の実施の形態のページテーブル管理部が実行する処理手順を説明するためのフローチャートである。
【図１７】第一の実施の形態のページテーブル対応表のエントリの構成例を示す図である。
【図１８】第一の実施の形態のドメイン設定部が実行する処理手順を説明するためのフローチャートである。
【図１９】第一の実施の形態のドメイン管理部が実行する処理手順を説明するためのフローチャートである。
【図２０】第一の実施の形態のドメイン利用表のエントリの構成例を示す図である。
【図２１】第一の実施の形態のコンテキストスイッチ制御部が実行する処理手順を説明するためのフローチャートである。
【図２２】第一の実施の形態のフォールト処理部が実行する処理手順を説明するためのフローチャートである。
【図２３】第二の実施の形態の動作モード切り替え時における処理内容の一例を説明するための図である。
【図２４】第二の実施の形態のＡＳＩＤ管理表のエントリの構成例を示す図である。
【図２５】第二の実施の形態のコンテキストスイッチ制御部が実行する処理手順を説明するためのフローチャートである。
【図２６】拡張されたドメイン利用表のエントリの構成例を示す図である。
【図２７】第三の実施の形態における有効なページテーブル及び有効なＡＳＩＤの遷移例を説明するための図である。
【図２８】第三の実施の形態におけるドメインアクセス権の決定方法を説明するための図である。
【図２９】グローバルなドメインごとにページテーブルを分ける意義を説明するための図である。
【図３０】第三の実施の形態のページテーブル対応表のエントリの構成例を示す図である。
【図３１】第三の実施の形態のコンテキストスイッチ制御部が実行する処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００３６】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態は、仮想環境が前提とされる。すなわち、一般的にハイパーバイザと呼ばれるプログラムによって実現される仮想マシン上において、ゲストＯＳ（オペレーティングシステム）に割り当てられた、ＣＰＵ１の一つの特権レベルにおいて、実質的に二種類の特権レベルを実現する方法について説明する。すなわち、特権モードと非特権モードの二つの特権レベルを有するＣＰＵの場合、特権モードは、ハイパーバイザに割り当てられ、非特権モードはゲストＯＳに割り当てられる。本実施の形態では、ゲストＯＳに割り当てられた非特権モード内において二つの特権レベルが実質的に実現され、各特権レベルに応じたアクセス制御が行われる。二つの特権レベルのうち、仮想化されていない環境における非特権モードに相当する動作モードを「ユーザモード」といい、仮想化されていない環境における特権モードに相当する動作モードを「カーネルモード」という。すなわち、ユーザモードとは、ページテーブルのエントリにおいて非特権モードに対して設定されたアクセス権が適用されるべき動作モードである。カーネルモードとは、ページテーブルのエントリにおいて特権モードに対して設定されたアクセス権が適用されるべき動作モードである。
【００３７】
また、本実施の形態では、第一のアクセス権の一例であるページ単位のアクセス権に対して優先される、第二のアクセス権が導入される。ページ単位のアクセス権とは、ページテーブルのエントリ（ＴＬＢ１５１（Translation Look-aside Buffer：トランスレーション・ルックアサイド・バッファ）にキャッシュされているエントリも含む。）において設定されるアクセス権をいう。一つの第二のアクセス権は、一以上のページ（ページテーブルのエントリ）を設定範囲とすることができる。当該設定範囲に対して設定された第二のアクセス権は、当該設定範囲に属するページに対してページテーブルのエントリにおいて設定されたアクセス権（第一のアクセス権）に対して優先される。本実施の形態では、斯かる第二のアクセス権を実現するための手段として、ドメインという概念を導入する。ドメインには、ドメインごとに、ページテーブルに設定されたアクセス権に対して優先されるアクセス権を設定することができるという性質を有する。また、ドメインは、仮想アドレス空間に係るページを分類（ページテーブルのエントリを分類）する単位（分類単位）を定義できるという性質も有する。すなわち、ドメインによって、仮想アドレス空間に係るページ（ページテーブルのエントリ）を、複数のグループ又は領域（空間）に分割又は分類することができる。
【００３８】
なお、ドメインによって仮想アドレス空間に係るページを分類できるという性質については、本実施の形態（特に、第一の実施の形態及び第二の実施の形態）において、必要とはされない。全てのページに対して一つのドメインしか設定できなくてもよい。本実施の形態において、ドメインに対して設定されたアクセス権を「ドメインアクセス権」という。すなわち、ドメインアクセス権は、第二のアクセス権の一例である。
【００３９】
第一の実施の形態について説明する。第一の実施の形態では、一つのプロセス（仮想アドレス空間）に対して二つのページテーブルが生成される。一方のページテーブル（以下、「カーネル用ページテーブル」という。）のエントリには、非特権モードのアクセス権として、カーネルモードに対するアクセス権が設定される。他方のページテーブル（以下、「ユーザ用ページテーブル」という。）には、非特権モードのアクセス権として、ユーザモードに対するアクセス権が設定される。但し、ＭＭＵ（Memory Management Unit：メモリ管理ユニット）には、いずれか一方のページテーブルのアドレスが設定される。通常のＭＭＵに設定可能なページテーブルのアドレスは、一つに限られるからである。なお、双方のページテーブルのマッピング情報（仮想アドレスと物理アドレスとの対応情報）は、同じである。また、双方のページテーブルの特権モードのアクセス権は、ハイパーバイザに対して適用される。以下、ＭＭＵにアドレスが設定されているページテーブルを、本実施の形態において「有効なページテーブル」という。後述されるように、有効なページテーブルは、動作モード（ユーザモード、カーネルモード）の切り替えに応じて、直ちに切り替えられない。有効なページテーブルの切り替えは、ＴＬＢフラッシュを要するからである。換言すれば、動作モードの切り替えに対して、有効なページテーブルの切り替えを遅延させることで、ＴＬＢのフラッシュが遅延される。その結果、ＴＬＢのフラッシュの機会が削減される。
【００４０】
ドメインアクセス権の値は、図６に示されるように決定される。図６は、第一の実施の形態におけるドメインアクセス権の決定方法を説明するための図である。本実施の形態において、ドメインに対して設定可能なアクセス権は、「アクセス可」、「アクセス不可」、及び「フラグ」に分類される。「アクセス可」は、読み書きが許可されるアクセス権である。「アクセス不可」は、いかなるアクセスも禁止されるアクセス権である。「フラグ」は、ページテーブルのエントリに設定されたアクセス権が有効とされる（使用される）ことを示すアクセス権である。なお、「アクセス可」、「アクセス不可」、「フラグ」のそれぞれは、ドメインを利用可能なＡＲＭアーキテクチャにおける、「マネージャ」、「クライアント」、「ノーアクセス」に対応する。
【００４１】
同図に示されるように、ドメインアクセス権は、有効なページテーブルとゲストＯＳの動作モードとに応じて決定される。具体的には、動作モードがユーザモードであり、有効なページテーブルがユーザ用ページテーブルである場合、ドメインアクセス権は「フラグ」となる。動作モードがユーザモードであり、有効なページテーブルがカーネル用ページテーブルである場合、ドメインアクセス権は「アクセス不可」となる。動作モードがカーネルモードであり、有効なページテーブルがユーザ用ページテーブルである場合、ドメインアクセス権は「フラグ」となる。動作モードがカーネルモードであり、有効なページテーブルがカーネル用ページテーブルである場合、ドメインアクセス権は「フラグ」となる。
【００４２】
なお、一つの仮想アドレス空間に対して複数のドメインが割り当てられている場合、ドメインアクセス権の値は、全てのドメインに対して共通な値が適用される。斯かる点に鑑みて、第一の形態において、ドメインによってページをグループ分けできるという性質は、必要とはされないのである。なお、ドメイン間の重複はないこととする。すなわち、一つのページが複数のドメインに属することは許可されない。
【００４３】
第一の実施の形態において、動作モード切り替え時には、例えば、図７に示されるような処理が実行される。
【００４４】
図７は、第一の実施の形態の動作モード切り替え時における処理内容の一例を説明するための図である。同図には、一つのＶＭ１２上のゲストＯＳの動作モードが切り替わった場合に実行される処理内容が示されている。切り替え前の動作モードは、ユーザモードであるとする。また、動作モードの切り替え前の有効なページテーブルは、ユーザ用ページテーブルであるとする。すなわち、ＭＭＵ１０５には、ユーザ用ページテーブルのアドレスが登録されている。
【００４５】
ハイパーバイザ１１は、ユーザモードからカーネルモードへの切り替えを検知すると（Ｓ１１）、ドメイアクセス設定として「フラグ」をＭＭＵ１０５に設定する（Ｓ１２）。但し、カーネルモードへの切り替えに応じて、カーネル用ページテーブルは、即時的に有効なページテーブルにはされない（Ｓ１３）。すなわち、有効なページテーブルは、ユーザ用ページテーブルのままである。したがって、ＴＬＢ１５１のフラッシュの実行はされない。
【００４６】
なお、動作モードがカーネルモードであり、有効なページテーブルがカーネル用ページテーブルである場合も、処理手順は同様である。すなわち、ドメインアクセス権は、「アクセス不可」に設定されるが、有効なページテーブルは変更されない。ＴＬＢ１５１のフラッシュも実行されない。
【００４７】
このように、第一の実施の形態では、ゲストＯＳの動作モードの切り替えに応じて動作モードと有効なページテーブルとの間に不整合（ずれ）が生じうる。具体的には、ユーザモードのときにカーネル用ページテーブルが有効な状態や、カーネルモードのときにユーザ用ページテーブルが有効な状態が発生しうる。このように不整合が生じている状態のメモリのアクセス保護は、ドメインアクセス権によって確保される。すなわち、ユーザモードのときにカーネル用ページテーブルが有効な状態においては、ドメインアクセス権は「アクセス不可」であるため、ユーザモードの本来の権限を超えたメモリアクセスは拒否される。また、カーネルモードのときにユーザ用ページテーブルが有効な状態においては、ドメインアクセスは「フラグ」である。すなわち、ユーザモードに対するアクセス権に基づいて、メモリアクセスの許否が判定される。ユーザモードのアクセス権は、カーネルモードのアクセス権より小さい。したがって、この場合も、カーネルモードの本来の権限を超えたメモリアクセスは拒否される。
【００４８】
要するに、動作モードと有効なページテーブルとの間に不整合が生じている状態において、動作モードの本来の権限が制限されるように（本来のアクセス権より小さいアクセス権が許可されるように）ドメインアクセス権が設定される。換言すれば、動作モードの切り替えが発生した場合は、二つの動作モードのうち、相対的にアクセス権の小さい動作モードのアクセス権以下となるように、ドメインアクセスが設定される。その結果、本来のアクセス権を超えたメモリアクセスが許可されるのが防止される。なお、本来のアクセス権とは、動作モードに対応するページテーブルのエントリに設定されているアクセス権である。
【００４９】
しかし、この場合、動作モードの本来のアクセス権において許可されるメモリアクセスまで拒否される可能性がある。すなわち、本来の許可されるべきメモリアクセスであるにも拘わらず、フォールト（アクセス違反）が発生する。
【００５０】
例えば、図８は、許可されるべきメモリアクセスに対してフォールトが発生するケースを説明するための図である。
【００５１】
同図において、表（１）には、ユーザモード及びカーネルモードのそれぞれのページテーブルのエントリのアクセス権について、６通りの設定例が示されている。
【００５２】
表（２）は、有効なページテーブルが、ユーザ用ページテーブルであるかカーネル用ページテーブルであるかに応じて、動作モードごとに適用されるアクセス権が示されている。なお、表（１）におけるページテーブルのアクセス権と、表（２）における適用されるアクセス権との対応関係は、列の一致によって確保されている。
【００５３】
表（２）において、ユーザ用ページテーブルが有効な場合、動作モードがカーネルモードであるときに適用されるアクセス権は、表（１）におけるユーザモードのページテーブルのアクセス権に設定された値となる。図６において説明したように、この場合のドメインアクセス権は「フラグ」となるからである。そうすると、この場合に、太線で囲まれたアクセス権（２列目及び３列目）が適用されるときは、カーネルモードの権限内のメモリアクセスであるのにも拘わらずドメインアクセス権に対する違反のフォールトが発生する。具体的には、表（１）において、カーネルモードの２列目のアクセス権は「ｒｗ（アクセス可）」であり、３列目のアクセス権は「ｒｗ」である。一方、表（２）において、ユーザ用ページテーブルが有効な場合のカーネルモードの２列目のアクセス権は「ｒｏ（読み込み可）」であり、３列目のアクセス権は「ｎｏ（アクセス不可）」である。すなわち、ページテーブルにおいては、「ｒｗ」のアクセス権が与えられているにも拘わらず、実際には「ｒｏ」又は「ｎｏ」のアクセス権が適用される。
【００５４】
また、表（２）において、カーネル用ページテーブルが有効な場合、動作モードがユーザモードであるときに適用されるアクセス権は、全てのケースにおいて「ｎｏ」となる。図６において説明したように、この場合のドメインアクセス権は「アクセス不可」となるからである。そうすると、この場合に、太線で囲まれたアクセス権（１列目、２列目、及び４列目）が適用されるときは、ユーザモードの権限内のメモリアクセスであるのにも拘わらずドメインアクセス権に対する違反のフォールトが発生する。具体的には、表（１）において、ユーザモードの１列目のアクセス権は「ｒｗ」であり、２列目及び４列目のアクセス権は「ｒｏ（読み込み可）」である。一方、表（２）において、カーネル用ページテーブルが有効な場合のユーザモードの１列目、２列目、及び４列目のアクセス権は「ｎｏ」である。すなわち、ページテーブルにおいては、「ｒｗ」又は「ｒｏ」のアクセス権が与えられているにも拘わらず、実際には「ｎｏ」のアクセス権が適用される。
【００５５】
そこで、本実施の形態では、フォールトの発生時において、図９に示される処理が実行される。
【００５６】
図９は、第一の実施の形態のフォールト発生時における処理内容の一例を説明するための図である。同図の初期状態は、図７における動作モードの切り替え後の状態であるとする。すなわち、動作モードはカーネルモードである。また、有効なページテーブルは、ユーザ用ページテーブルである。
【００５７】
この状態において、ハイパーバイザ１１は、フォールトを検知すると（Ｓ２１）、ＴＬＢ１５１をフラッシュさせる（Ｓ２２）。続いて、ハイパーバイザ１１は、カーネル用ページテーブルのアドレスをＭＭＵ１０５に設定する（Ｓ２３）。すなわち、カーネル用ページテーブルが排他的に有効化される。続いて、ハイパーバイザ１１は、ドメインアクセス設定として「フラグ」をＭＭＵ１０５に設定する（Ｓ２４）（図６参照）。すなわち、ドメインアクセス権は、動作モードの切り替え時のみならず、フォールト発生時にも更新される。フォールト発生時には、上記の処理によって、ゲストＯＳの動作モードと有効なページテーブルとの不整合が是正されるため、ドメインアクセス権は、有効なページテーブルのエントリのアクセス権に一致するように「フラグ」にされるのである。
【００５８】
その後、ハイパーバイザ１１は、ゲストＯＳに制御を移す。
【００５９】
上記の仕組みによれば、ＴＬＢ１５１のフラッシュの機会を必要なときに限定することができる。また、動作モードと有効なページテーブルとが整合していない場合であっても、ドメインアクセス権を利用したアクセス制御により、適切にアクセス保護を図ることができる。
【００６０】
続いて、上記において説明した内容に関して、具体的な情報処理装置への適用例について説明する。
【００６１】
図１０は、第一の実施の形態における情報処理装置のハードウェア構成例を示す図である。同図において、情報処理装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、主記憶装置１０３と、ＣＰＵ１０４と、ＭＭＵ１０５とを有する。
【００６２】
情報処理装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００６３】
主記憶装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、主記憶装置１０３に格納されたプログラムに従って情報処理装置１０に係る機能を実行する。ＭＭＵ１０５は、メモリ管理手段の一例であり、いわゆるメモリ管理ユニット（ＭＭＵ１０５（Memory Management Unit））である。すなわち、ＭＭＵ１０５は、ＣＰＵ１０４が要求するメモリアクセスに関して、仮想アドレスから物理アドレスへの変換や、アクセス制御（メモリ保護制御）等を実行する。
【００６４】
なお、ＣＰＵ１０４は、仮想化をサポートするための特別な機構を有していなくてよい。また、情報処理装置１０は、汎用的なコンピュータに限定されない。携帯電話や各種の電子機器等の組み込み機器が、情報処理装置１０として本実施の形態に適用されてもよい。
【００６５】
図１１は、第一の実施の形態における情報処理装置のソフトウェア構成例を示す図である。情報処理装置１０は、ハイパーバイザ１１を有する。
【００６６】
ハイパーバイザ１１は、情報処理装置１０を仮想化する制御プログラムであり、すなわち、ハイパーバイザ１１がＣＰＵ１０４に実行させる処理によって、一以上のＶＭ１２が、情報処理装置１０内で動作する。ハイパーバイザ１１は、仮想マシンモニタ（ＶＭＭ（Virtual Machine Monitor））とも呼ばれる。なお、本実施の形態において、ハイパーバイザ１１は、メモリアクセス制御プログラムの一例である。
【００６７】
ＶＭ１２は、いわゆる仮想マシン（Virtual Machine)であり、ゲストＯＳ１２１に対して、情報処理装置１０をエミュレートする。各ＶＭ１２上では、ゲストＯＳ１２１（Operating System）が動作可能である。各ゲストＯＳ１２１上では、各種のソフトウェアのプロセスが動作する。なお、ゲストＯＳとは、ＶＭ上で動作するＯＳをいう。
【００６８】
一般的に、仮想マシンを実現する仮想化技術には、二つの種類が存在する。一つは、ＯＳを修正することなくそのまま動作可能な完全仮想化（ＨＶＭ（Hardware Virtual Machine）とも呼ばれる。）である。もう一つは、特権命令をハイパーバイザへの呼び出し（ハイパーコールと呼ばれる。）に修正してＯＳを動作させる準仮想化（ＰＶ（Para Virtualization）とも呼ばれる）である。本実施の形態では、いずれの仮想化技術が採用されてもよい。
【００６９】
完全仮想化の場合、仮想マシン上で実行された特権命令は、ＣＰＵ１０４が発生させる例外によりハイパーバイザ１１に通知される。準仮想化の場合、特権命令はハイパーコールによってハイパーバイザ１１に通知される。ハイパーコールはソフトウェア割り込み等のＣＰＵ１０４の機能を利用して実現される。完全仮想化の場合も、ハイパーコールによる通知が可能である。本実施の形態においても、このようなハイパーコール又は例外等の通知機構を利用して、ＶＭ１２からハイパーバイザ１１への指示が行われる。
【００７０】
図１１において、各ＶＭ１２上で動作するゲストＯＳ１２１のカーネルは、ＡＳＩＤ設定部１２２、ページテーブル設定部１２３、及びドメイン設定部１２４等を有する。
【００７１】
ＡＳＩＤ設定部１２２は、識別子設定手段の一例である。ＡＳＩＤ設定部１２２は、ゲストＯＳ１２１が管理しているプロセスごとに割り当てられるＡＳＩＤ（Address Space Identifier））をハイパーバイザ１１に通知する。ＡＳＩＤとは、各プロセスの仮想アドレス空間に対する識別子である。各ゲストＯＳ１２１において割り当てられるＡＳＩＤが重複しないようにするために、ゲストＯＳ１２１で使用するＡＳＩＤが仮想化されてもよい。具体的には、ゲストＯＳ１２１では全てのＡＳＩＤが使用でき、ハイパーバイザ１１は、ゲストＯＳ１２１が認識している仮想的なＡＳＩＤを実際のＡＳＩＤに変換する。
【００７２】
ページテーブル設定部１２３は、ゲストＯＳ１２１が管理している仮想アドレス空間に関するページテーブルのアドレスをハイパーバイザ１１に通知する。一つの仮想アドレス空間（プロセス）についてユーザモード用のページテーブル（ユーザ用ページテーブル）とカーネルモード用のページテーブル（カーネル用ページテーブル）との二つページテーブルが生成され、それぞれのアドレスがハイパーバイザ１１に通知される。
【００７３】
ドメイン設定部１２４は、ゲストＯＳ１２１が使用するドメインの識別子（以下、「ドメイン番号」という。）をハイパーバイザ１１に通知する。なお、各ゲストＯＳ１２１が使用するドメイン番号は、ゲストＯＳ１２１間において重複しないように、予め決められている。例えば、ゲストＯＳ１２１の設定情報として、各ゲストＯＳ１２１に設定されている。または、ＡＳＩＤと同様に、ゲストＯＳ１２１間においてドメイン番号が重複しないようにするために、ゲストＯＳ１２１で使用するドメイン番号が仮想化されてもよい。いずれの場合であっても、実際のドメイン番号（ページテーブルに記録されるドメイン番号）は、ゲストＯＳ１２１間で重複しないようにすることが望ましい。重複する場合には、ゲストＯＳ１２１の切り替えの際にハイパーバイザにてＴＬＢフラッシュが必要となる。
【００７４】
ハイパーバイザ１１は、ＡＳＩＤ管理部１１１、ページテーブル管理部１１２、ドメイン管理部１１３、コンテキストスイッチ制御部１１４、フォールト処理部１１５、ＶＭ管理部１１６、ＡＳＩＤ管理表１１７、ページテーブル対応表１１８、及びドメイン利用表１１９等を有する。
【００７５】
ＡＳＩＤ管理部１１１は、識別子管理手段の一例である。ＡＳＩＤ管理部１１１は、ゲストＯＳ１２１のＡＳＩＤ設定部１２２からの指示に応じ、当該ゲストＯＳ１２１が動作しているＶＭ１２に対応するＡＳＩＤ管理表１１７の更新を行う。ＡＳＩＤ管理部１１１は、また、ＶＭ１２の終了時に、当該ＶＭ１２に対応するＡＳＩＤ管理表１１７の削除を行う。
【００７６】
ＡＳＩＤ管理表１１７は、識別子記憶手段の一例である。ＡＳＩＤ管理表１１７は、例えば、主記憶装置１０３内に、ＶＭ１２ごと（ゲストＯＳ１２１ごと）に生成される。ＡＳＩＤ管理表１１７には、対応するＶＭ１２上で動作するゲストＯＳ１２１によって割り当てられたＡＳＩＤの一覧を記憶する。通常、ゲストＯＳ１２１は、プロセスごとにＡＳＩＤを割り当てる。したがって、ＡＳＩＤ管理表１１７のエントリ数は、対応するＶＭ１２上のプロセス数に一致する。
【００７７】
ページテーブル管理部１１２は、ゲストＯＳ１２１のページテーブル設定部１２３からの指示に応じ、当該ゲストＯＳ１２１が動作しているＶＭ１２のページテーブル対応表１１８の更新を行う。ページテーブル管理部１１２は、また、ＶＭ１２の終了時に、当該ＶＭ１２に対応するページテーブル対応表１１８の削除を行う。
【００７８】
ページテーブル対応表１１８は、ページテーブル対応情報記憶手段の一例である。ページテーブル対応表１１８は、例えば、主記憶装置１０３内に、ＶＭ１２ごと（ゲストＯＳ１２１ごと）に生成される。ページテーブル対応表１１８は、ユーザ用ページテーブルのアドレスとカーネル用ページテーブルのアドレスと、現在使用中の（現在有効な）ページテーブルのアドレスとを対応付けて記憶する。通常、ゲストＯＳ１２１は、プロセスごとにページテーブルを割り当てる。したがって、ページテーブル対応表１１８のエントリ数は、対応するＶＭ１２上のプロセス数に一致する。
【００７９】
ドメイン管理部１１３は、ゲストＯＳ１２１のドメイン設定部１２４からの指示に応じ、当該ゲストＯＳ１２１が動作しているＶＭ１２に対応するドメイン利用表１１９の更新を行う。ドメイン管理部１１３は、また、ＶＭ１２の終了時に、当該ＶＭ１２に対応するドメイン利用表１１９の削除を行う。
【００８０】
ドメイン利用表１１９は、例えば、主記憶装置１０３内に、ＶＭ１２（ゲストＯＳ１２１）ごとに生成される。ドメイン利用表１１９は、ＶＭ１２（ゲストＯＳ１２１）が使用するドメインのドメイン番号を記憶する。
【００８１】
コンテキストスイッチ制御部１１４は、ゲストＯＳ１２１のユーザモードとカーネルモードとの切り替えを行う。ハイパーバイザ１１のコンテキストスイッチとしては、ＶＭ１２間やゲストＯＳ１２１内のプロセス間の切り替えも含まれるが、本実施の形態では、ユーザモードとカーネルモードとの切り替えを対象として説明する。
【００８２】
フォールト処理部１１５は、ＣＰＵ１０４が発生させる例外を処理する。ただし、本実施の形態において、フォールト処理部１１５によって処理対象とされる例外は、ドメインアクセス権に違反した場合に発生するフォールト（以下、「ドメインフォールト」という。）と、ページテーブルのエントリに設定されたアクセス権に違反した際に起きるアクセス違反に限定される。
【００８３】
ＶＭ管理部１１６は、ハイパーバイザの基本的な機能を実行する。すなわち、ＶＭ管理部１１６は、ＶＭ１２を実現するための処理制御を行う。例えば、ＶＭ管理部１１６は、ＶＭ１２の起動（生成）、終了、及び切り替え等を実行する。ＶＭ１２の切り替えとは、複数のＶＭ１２が起動されているときに、ＣＰＵ１０４を使用するＶＭ１２を切り替えることをいう。例えば、ＶＭ１２の切り替えとは、一定期間を経過したら、他のＶＭ１２にＣＰＵ１０４を与えるといった処理である。したがって、ＶＭ管理部１１６は、常に、いずれのＶＭ１２が動作しているのか（ＣＰＵ１０４を使用しているのか）を把握している。ＶＭ管理部１１６が把握している情報は、ＶＭ管理情報として、例えば、主記憶装置１０３に記録される。
【００８４】
なお、図１１に示されるように、第一の実施の形態において、ＭＭＵ１０５は、ＴＬＢ１５１を用いて、メモリアクセスの際のアドレス変換等に利用されたページテーブルのエントリをキャッシュするキャッシュ手段である。また、ＭＭＵ１０５には、有効なページアドレス及びドメインアクセス権の設定が可能である。ＭＭＵ１０５は、ドメインアクセス権を、有効なページアドレスに係るページテーブルのエントリのアクセス権に対して優先させて（優先的に適用して）、メモリアクセスの制御を行う。
【００８５】
以下、情報処理装置１０の処理手順について説明する。図１２は、第一の実施の形態のＡＳＩＤ設定部が実行する処理手順を説明するためのフローチャートである。
【００８６】
ＡＳＩＤ設定部１２２は、ゲストＯＳ１２１により実行される、プロセス管理処理に連動して、ハイパーバイザ１１のＡＳＩＤ管理部１１１に指示を通知する。プロセス管理処理には、プロセスの生成、プロセスの削除、プロセスの切り替え等がある。
【００８７】
ゲストＯＳ１２１においてプロセスが生成されると（Ｓ１０１でＹＥＳ）、当該ゲストＯＳ１２１のＡＳＩＤ設定部１２２は、当該プロセス（すなわち、当該プロセスに係る仮想アドレス空間）に対してＡＳＩＤを一つ割り当てる（Ｓ１０２）。続いて、ＡＳＩＤ設定部１２２は、割り当てられたＡＳＩＤの登録指示をＡＳＩＤ管理部１１１に対して通知する（Ｓ１０３）。なお、ゲストＯＳ１２１においても、プロセスとＡＳＩＤとの対応関係は管理される。
【００８８】
一方、ゲストＯＳ１２１においてプロセスが削除されると（Ｓ１０４でＹＥＳ）、当該ゲストＯＳ１２１のＡＳＩＤ設定部１２２は、当該プロセスに対応するＡＳＩＤを解放する（Ｓ１０５）。続いて、ＡＳＩＤ設定部１２２は、当該ＡＳＩＤを指定して、当該ＡＳＩＤの登録解除指示をＡＳＩＤ管理部１１１に対して通知する（Ｓ１０６）。
【００８９】
なお、プロセスの切り替え時においても、ゲストＯＳ１２１における実行中のプロセスを切り替えるよう、ゲストＯＳ１２１からハイパーバイザ１１に指示が行われるが、本実施の形態において、ＡＳＩＤ設定部１２２はプロセスの切り替えには関与しない。
【００９０】
続いて、ＡＳＩＤ設定部１２２からの指示に応じてＡＳＩＤ管理部１１１によって実行される処理手順について説明する。
【００９１】
図１３は、第一の実施の形態のＡＳＩＤ管理部が実行する処理手順を説明するためのフローチャートである。
【００９２】
ＡＳＩＤの登録指示がＡＳＩＤ設定部１２２より通知されると（Ｓ１１１でＹＥＳ）、ＡＳＩＤ管理部１１１は、登録指示において指定されたＡＳＩＤを含むエントリを当該ＡＳＩＤ設定部１２２が動作するＶＭ１２に対応するＡＳＩＤ管理表１１７に追加する（Ｓ１１２）。なお、該当するＡＳＩＤ管理表１１７が無い場合、ＡＳＩＤ設定部１２２は、当該ＶＭ１２に対応するＡＳＩＤ管理表１１７を、例えば、主記憶装置１０３に生成する。
【００９３】
図１４は、第一の実施の形態のＡＳＩＤ管理表のエントリの構成例を示す図である。同図に示されるように、ＡＳＩＤ管理表１１７の一つのエントリは、ＶＭＩＤとＡＳＩＤとを格納するための項目を有する。ＶＭＩＤは、エントリの登録指示元に係るＶＭ１２の識別子である。ハイパーバイザ１１は、各指示元のゲストＯＳ１２１が動作するＶＭ１２を判別することが可能である。
【００９４】
なお、本実施の形態では、ＡＳＩＤ管理表１１７は、ＶＭ１２ごとに生成されるため、ＶＭＩＤの項目は必ずしも必要ではない。複数のＶＭ１２に対して一つのＡＳＩＤ管理表１１７を共用する場合に、ＶＭＩＤの項目は必要となる。
【００９５】
また、ＡＳＩＤは、プロセスごとに対応する情報であるがが、プロセスＩＤの項目をＡＳＩＤ管理表１１７に設ける必要はない。ゲストＯＳ１２１がプロセスを切り替えるときには、切り替え先に係るＡＳＩＤがハイパーバイザ１１に通知される。したがって、ハイバーバイザは、通知されたＡＳＩＤをＡＳＩＤ管理表１１７より検索することで実行中のプロセスに対応するエントリを特定することができる。但し、プロセスＩＤの項目が設けられてもよい。
【００９６】
一方、ＡＳＩＤの登録解除指示がＡＳＩＤ設定部１２２より通知されると（Ｓ１１３でＹＥＳ）、ＡＳＩＤ管理部１１１は、登録解除指示において指定されたＡＳＩＤを含むエントリを当該登録解除指示元のＡＳＩＤ設定部１２２が動作するＶＭ１２に対応するＡＳＩＤ管理表１１７より削除する（Ｓ１１４）。
【００９７】
また、ＶＭ管理部１１６よりＶＭ１２の終了が通知されると（Ｓ１１５でＹＥＳ）、ＡＳＩＤ管理部１１１は、終了したＶＭ１２に対応するＡＳＩＤ管理表１１７を削除する（Ｓ１１６）。
【００９８】
続いて、図１５は、第一の実施の形態のページテーブル設定部が実行する処理手順を説明するためのフローチャートである。
【００９９】
ゲストＯＳ１２１においてプロセスが生成されると（Ｓ１２１でＹＥＳ）、当該ゲストＯＳ１２１のページテーブル設定部１２３は、当該プロセス（すなわち、当該プロセスに係る仮想アドレス空間）に対してページテーブルを二つ生成する（Ｓ１２２）。一方は、ユーザ用ページテーブルであり、他方はカーネル用ページテーブルである。各ページテーブルは、例えば、主記憶装置１０３に生成される。
【０１００】
続いて、ページテーブル設定部１２３は、二つのページテーブルのアドレスの登録指示をページテーブル管理部１１２に対して通知する（Ｓ１２３）。
【０１０１】
一方、ゲストＯＳ１２１においてプロセスが削除されると（Ｓ１２４でＹＥＳ）、ページテーブル設定部１２３は、当該プロセスに対応する二つのページテーブルを削除する（Ｓ１２５）。続いて、ページテーブル設定部１２３は、削除された二つのページテーブルの少なくともいずれか一方のアドレスを指定して、当該アドレスの登録解除指示をページテーブル管理部１１２に通知する（Ｓ１２６）。
【０１０２】
なお、プロセス生成時又はプロセス削除時における、ＡＳＩＤ設定部１２２とページテーブル設定部１２３との処理手順の前後関係は、所定のものに限定されない。
【０１０３】
続いて、ページテーブル設定部１２３からの指示に応じてページテーブル管理部１１２によって実行される処理手順について説明する。
【０１０４】
図１６は、第一の実施の形態のページテーブル管理部が実行する処理手順を説明するためのフローチャートである。
【０１０５】
ページテーブルのアドレスの登録指示がページテーブル設定部１２３より通知されると（Ｓ１３１でＹＥＳ）、ページテーブル管理部１１２は、登録指示において指定された二つのページテーブルのアドレスの組を含むエントリを当該登録指示元のページテーブル設定部１２３が動作するＶＭ１２に対応するページテーブル対応表１１８に追加する（Ｓ１３２）。なお、該当するページテーブル対応表１１８が無い場合、ページテーブル設定部１２３は、当該ＶＭ１２に対応するページテーブル対応表１１８を、例えば、主記憶装置１０３に生成する。
【０１０６】
図１７は、第一の実施の形態のページテーブル対応表のエントリの構成例を示す図である。同図に示されるように、ページテーブル対応表１１８の一つのエントリは、ＶＭＩＤ、ユーザ用ページテーブルアドレス、カーネル用ページテーブルアドレス、及びカレントページテーブルアドレス等を格納するための項目を有する。
【０１０７】
ＶＭＩＤは、エントリの登録指示元に係るＶＭ１２の識別子である。ＡＳＩＤ管理表１１７と同様、ページテーブル対応表１１８はＶＭ１２ごとに生成されるため、ＶＭＩＤの項目は必ずしも必要ではない。ユーザ用ページテーブルアドレス及びカーネル用ページテーブルアドレスは、登録指示に含まれる二つのページテーブルのそれぞれのアドレスである。カレントページテーブルアドレスは、有効なページテーブルのアドレスである。有効なページテーブルとは、ＭＭＵ１０５にアドレスが設定され、ＭＭＵ１０５が使用中のページテーブルである。ステップＳ１３２の段階において、有効なページテーブルは決まっていない（いずれのページテーブルも使用されていない）ため、カレントページテーブルアドレスには何も登録されない。
【０１０８】
なお、図７及び図９等において説明したように、有効なページテーブルと、ゲストＯＳ１２１の動作モードとの間には不整合が生じることもある。したがって、カレントページアドレスに係るページテーブルは、必ずしも動作モードと整合しているとは限らない。
【０１０９】
また、ユーザ用ページテーブルアドレス及びカーネル用ページテーブルアドレス等は、プロセスごとに対応する情報であるが、プロセスＩＤの項目をページテーブル対応表１１８に設ける必要はない。ゲストＯＳ１２１がプロセスを切り替えるときには、切り替え先に係るページテーブルのアドレスがハイパーバイザ１１に通知される。したがって、ハイパーバイザ１１は、通知されたアドレスに合致するユーザ用ページテーブルアドレス又はカーネル用ページテーブルアドレスをページテーブル対応表１１８より検索することで実行中のプロセスに対応するページテーブルのエントリを特定することができる。但し、プロセスＩＤの項目が設けられてもよい。
【０１１０】
一方、ページテーブルのアドレスの登録解除指示がページテーブル設定部１２３より通知されると（Ｓ１３３でＹＥＳ）、ページテーブル管理部１１２は、登録解除指示において指定されたページテーブルのアドレスを含むエントリを当該登録解除指示元のページテーブル設定部１２３が動作するＶＭ１２に対応するページテーブル対応表１１８より削除する（Ｓ１３４）。
【０１１１】
また、ＶＭ管理部１１６よりＶＭ１２の終了が通知されると（Ｓ１３５でＹＥＳ）、ページテーブル管理部１１２は、終了したＶＭ１２に対応するページテーブル対応表１１８を削除する（Ｓ１３６）。
【０１１２】
続いて、図１８は、第一の実施の形態のドメイン設定部が実行する処理手順を説明するためのフローチャートである。
【０１１３】
ゲストＯＳ１２１の起動時において（Ｓ１４１でＹＥＳ）、当該ゲストＯＳ１２１のドメイン設定部１２４は、当該ゲストＯＳ１２１が使用するドメインのドメイン番号をドメイン管理部１１３に通知する（Ｓ１４２）。
【０１１４】
ゲストＯＳ１２１の終了時において（Ｓ１４３でＹＥＳ）、当該ゲストＯＳ１２１のドメイン設定部１２４は、ドメイン番号の登録解除指示をドメイン管理部１１３に通知する（Ｓ１４４）。
【０１１５】
なお、各ページがいずれのドメインに属するかについては、ページテーブルの生成時に決定され、ページテーブルのエントリ内にドメイン番号として設定される。すなわち、仮想空間アドレスの各領域が、いずれのドメインに属するかについては、ゲストＯＳ１２１ごとに予め決定又は設定されている。
【０１１６】
続いて、ドメイン設定部１２４からの指示に応じてドメイン管理部１１３によって実行される処理手順について説明する。
【０１１７】
図１９は、第一の実施の形態のドメイン管理部が実行する処理手順を説明するためのフローチャートである。
【０１１８】
ドメイン番号の登録指示がドメイン設定部１２４より通知されると（Ｓ１５１でＹＥＳ）、ドメイン管理部１１３は、登録指示において指定されたドメイン番号を含むエントリを当該ドメイン設定部１２４が動作するＶＭ１２に対応するドメイン利用表１１９に追加する（Ｓ１５２）。なお、該当するドメイン利用表１１９が無い場合、ドメイン設定部１２４は、当該ＶＭ１２に対応するドメイン利用表１１９を、例えば、主記憶装置１０３に生成する。
【０１１９】
図２０は、第一の実施の形態のドメイン利用表のエントリの構成例を示す図である。同図に示されるように、ドメイン利用表１１９の一つのエントリは、ＶＭＩＤと一以上のドメイン番号とを格納するための項目を有する。ＶＭＩＤは、エントリの登録指示元に係るＶＭ１２の識別子である。ドメイン番号は、通知されたドメイン番号である。複数のドメイン番号が通知された場合、一つのエントリに対して、複数のドメイン番号が登録される。
【０１２０】
一方、ドメイン番号の登録解除指示がドメイン設定部１２４より通知されると（Ｓ１５３でＹＥＳ）、ドメイン管理部１１３は、登録解除指示元のドメイン設定部１２４が動作するＶＭ１２に対応するエントリをドメイン利用表１１９より削除する（Ｓ１５４）。
【０１２１】
また、ＶＭ管理部１１６よりＶＭ１２の終了が通知されると（Ｓ１５５でＹＥＳ）、ドメイン管理部１１３は、終了したＶＭ１２に対応するドメイン利用表１１９を削除する（Ｓ１５６）。
【０１２２】
なお、本実施の形態では、ゲストＯＳ１２１（ドメイン設定部１２４）が、ドメイン番号の追加や削除をハイパーバイザ１１に通知する例が示されている。しかし、ハイパーバイザ１１（ドメイン管理部１１３）が、ゲストＯＳ１２１の使用するドメイン番号を自動的又は能動的に特定してもよい。具体的には、ハイパーバイザ１１は、ページテーブルのエントリからドメイン番号を取得する。ハイパーバイザ１１は、当該ドメイン番号をドメイン利用表１１９に登録する。
【０１２３】
続いて、図２１は、第一の実施の形態のコンテキストスイッチ制御部が実行する処理手順を説明するためのフローチャートである。同図のフローチャートは、図７において説明した処理内容に対応する。
【０１２４】
ここで、ゲストＯＳ１２１の動作モードの切り替えについて説明する。仮想化されていない環境において動作するＯＳの場合、ユーザモードとカーネルモードの切り替えは、ＯＳが全て把握している。カーネルモードからユーザモードへの切り替えは、ユーザモードにおけるコンテキストの復元を行うことによって実現される。このとき、ＣＰＵの動作モードも特権モードから非特権モードに移行する。ユーザモードからカーネルモードへの移行は、割り込みや例外等が発生した際にＣＰＵにより強制的に実行される。このとき、ＣＰＵの動作モードは特権モードとなる。ＯＳは、再度ユーザモードへ移行できるように、移行前のユーザモード時のコンテキストを保存する。カーネルモードは、割り込みや例外等で非同期に所定のエントリポイントから実行されるため、コンテキストは存在しない。
【０１２５】
一方、仮想化環境（仮想マシン上）で動作するゲストＯＳ１２１については、ユーザモードとカーネルモードの切り替えは、ハイパーバイザ１１が全て把握する。カーネルモードからユーザモードへの切り替えは、ゲストＯＳ１２１が明示的に行うことなので、切り替え時に、ゲストＯＳ１２１からハイパーバイザ１１へユーザモードへの切り替えの指示を出す。ユーザモードからカーネルモードへの移行は、ゲストＯＳ１２１が明示的に行えることではなく、ＣＰＵにより強制的に移行されるため、割り込みや例外等の発生時に、ハイパーバイザ１１に制御が移る。ハイパーバイザ１１（ＶＭ管理部１１６）は、割り込みや例外の種類を調べ、ゲストＯＳ１２１に通知すべきものである場合には、ゲストＯＳ１２１をカーネルモードへ移行させることを決定する。カーネルモードへの移行が決定された場合、ＶＭ管理部１１６は、コンテキストスイッチ制御部１１４に対して動作モードの切り替えを指示する。
【０１２６】
以上のように、ユーザモードとカーネルモードの切り替えは、ゲストＯＳ１２１からハイパーバイザ１１に対して指示が行われるとは限らない、具体的には、ユーザモードへの切り替え時には、ゲストＯＳ１２１から指示が通知される。一方、ユーザモードからカーネルモードへの移行は、ＣＰＵ１０４が発生させる割り込みや例外等に応じて、ハイパーバイザ１１が自主的に行う必要がある。したがって、ユーザモードとカーネルモードとの間で切り替えられる情報（例えば、有効なページテーブル等）は、ハイパーバイザ１１内で対として管理されることが好ましい。
【０１２７】
図２１の処理は、上記されたゲストＯＳ１２１からのユーザモードへの切り替えの指示に応じて、又は割り込みや例外等に応じておこなわれるＶＭ管理部１１６からの指示に応じて開始される
ステップＳ１６１において、コンテキストスイッチ制御部１１４は、ゲストＯＳ１２１の動作モードの切り替えの要否を判定する。ゲストＯＳ１２１の現在の動作モードは、ＶＭ管理情報の一部として保存されている。なお、ＶＭ管理情報の入れ替えは、ＶＭ１２（ゲストＯＳ１２１）内のプロセスの切り替え時に行われる。
【０１２８】
ステップＳ１６１の処理は、特に、カーネルモードへの切り替えの場合に意義がある。ユーザモードへの切り替えは、必ずカーネルモードにて行われるため、ユーザモードへの切り替えの場合、常に動作モードの切り替えは必要であると判断する。その際、ＶＭ管理情報内の動作モードを切り替え先の動作モード（ユーザモード）に変更する。
【０１２９】
一方、カーネルモードへ移行する場合、コンテキストスイッチ制御部１１４は、ＶＭ管理部１１６からの指示に応じて、ＶＭ管理情報内の動作モードがユーザモードである場合に、動作モードの切り替えは必要であると判断する。この場合、ＶＭ管理情報は、コンテキストスイッチ制御部１１４によって変更されなくてもよい。ＶＭ管理部１１６によって変更されてもよい。
【０１３０】
コンテキストスイッチ制御部１１４は、動作モードの切り替えが必要であると判定した場合（Ｓ１６１でＹＥＳ）、切り替え対象のゲストＯＳ１２１が動作するＶＭ１２に対応するページテーブル対応表１１８に基づいて、有効なページテーブルを判定する（Ｓ１６２）。具体的には、コンテキストスイッチ制御部１１４は、当該ページテーブル対応表１１８より、実行中のプロセスに対応するエントリを検索する。コンテキストスイッチ制御部１１４は、検索されたエントリにおいて、ユーザ用ページテーブルアドレス及びカーネル用ページテーブルアドレスのうち、いずれがカレントページアドレスと一致するかに基づいて、有効なページテーブルを判定する。すなわち、ユーザ用ページテーブルアドレスが一致すれば、有効なページテーブルはユーザ用ページテーブルである。カーネル用ページテーブルアドレスが一致すれば、有効なページテーブルは、カーネル用ページテーブルである。
【０１３１】
続いて、コンテキストスイッチ制御部１１４は、有効なページテーブルと切り替え先の動作モードとに基づいて、ドメインアクセス権を決定する（Ｓ１６３）。ドメインアクセス権の決定方法は、図６において説明した通りである。なお、図６の内容は、コンテキストスイッチ制御部１１４のロジックとして組み込まれていてもよいし、コンテキストスイッチ制御部１１４とは別に、補助記憶装置１０２に保存されていてもよい。
【０１３２】
続いて、コンテキストスイッチ制御部１１４は、動作モードの切り替え対象のゲストＯＳ１２１が利用する全てのドメインのドメイン番号に関して、決定されたドメインアクセス権をＭＭＵ１０５に設定する（Ｓ１６４）。すなわち、当該ドメインアクセス権は、当該全てのドメインに対して共通なものとなる。なお、動作モードの切り替え対象のゲストＯＳ１２１が利用する全てのドメインは、ドメイン利用表１１９に基づいて判定される。ゲストＯＳ１２１が利用するドメイン以外のドメイン番号に対するアクセス権は変更しない。
【０１３３】
続いて、コンテキストスイッチ制御部１１４は、ＣＰＵ１０４のレジスタの入れ替えを行う（Ｓ１６５）。具体的には、カーネルモードからユーザモードへの切り替えの場合、コンテキストスイッチ制御部１１４は、ゲストＯＳ１２１のユーザモードでのコンテキストを復元する。これにより、ゲストＯＳ１２１に制御が移り、ゲストＯＳ１２１は、ユーザモードで動作を開始する。
【０１３４】
一方、ユーザモードからカーネルモードへの移行の場合、ハイパーバイザ１１（ＶＭ管理部１１６）が、ゲストＯＳ１２１がカーネルモード時のエントリポイントからの処理を実行するように制御する。その際、ＶＭ管理部１１６は、ユーザモード時のコンテキストもゲストＯＳ１２１に通知する。通常、当該コンテキストは、スタックに積んで通知される。ゲストＯＳ１２１は、カーネルモードにおいて割り込みや例外時の処理を行う。当該処理の終了後、ゲストＯＳ１２１は、ユーザモードへの切り替えをハイパーバイザ１１に通知する。
【０１３５】
なお、ハイパーバイザ１１のコンテキストスイッチとしては、ＶＭ１２間の切り替え、ＶＭ１２内のプロセスの切り替え等も有る。コンテキストスイッチ制御部１１４は、ゲストＯＳ１２１に関するユーザモードとカーネルモードの切り替えに特化している。
【０１３６】
図２１より明らかなように、第一の実施の形態では、ゲストＯＳ１２１の動作モードの変更に応じては、有効なページテーブルは切り替えられない。したがって、ＴＬＢ１５１のフラッシュを不要とすることができる。しかし、動作モードと有効なページテーブルとの間に不整合が生じる。但し、ドメインアクセス権によって、許可されるアクセス権は、二つの特権レベルのアクセス権のうち小さいアクセス権以下に制限される。ＭＭＵ１０５は、ドメインアクセス権を優先させてメモリアクセスを制御するからである。したがって、本来のアクセス権を超えたメモリアクセスは適切に制限される。
【０１３７】
続いて、図２２は、第一の実施の形態のフォールト処理部が実行する処理手順を説明するためのフローチャートである。同図のフローチャートは、図９において説明した処理内容に対応する。
【０１３８】
ＣＰＵ１０４が発生させるフォールト（例外）には様々な種類ある。例えば、アクセスすべきページが存在しなかったり、アクセス権が無かったりすることによりメモリアクセス時に発生する例外や、０で除算したり、未定義の命令を実行しようとしたことによりＣＰＵ１０４が実行時に発生する例外等が存在する。
【０１３９】
本実施の形態のフォールト処理部１１５は、メモリアクセス時に発生する例外に対する処理を実行する。かつ、ハイパーバイザ１１の実行中ではなく、ＶＭ１２の実行中に発生した例外が対象とされる。更に、ドメインアクセス権を超えてメモリアクセスが行われようとした場合に発生するドメインフォールトと、ページテーブルのエントリに設定されたアクセス権に違反した際に起きるアクセス違反の場合に、フォールト処理部１１５は呼び出される（図２２の処理が開始される）。
【０１４０】
ステップＳ１７１において、フォールト処理部１１５は、フォールトの発生要因となったゲストＯＳ１２１（以下、「カレントゲストＯＳ１２１」という。）が動作するＶＭ１２に対応するページテーブル対応表１１８に基づいて、有効なページテーブルを判定する。ページテーブル対応表１１８に基づく有効なページテーブルの判定方法は、図２１のステップＳ１６２おいて説明した通りであるので、ここでの説明は省略する。なお、フォールトの発生要因となったゲストＯＳ１２１は、ＶＭ管理情報に基づいて特定可能である。
【０１４１】
続いて、フォールト処理部１１５は、有効なページテーブルが、カレントゲストＯＳ１２１の現在の動作モードと整合しているか否かを判定する（Ｓ１７２）。すなわち、有効なページテーブルは、カレントゲストＯＳ１２１の現在の動作モードに対応したものであるか否かが判定される。有効なページテーブルがカレントゲストＯＳ１２１の動作モードと整合している場合（Ｓ１７２でＹＥＳ）、図２２の処理は終了する。すなわち、有効なページテーブルがユーザ用ページテーブルであり、カレントゲストＯＳ１２１の動作モードがユーザモードである場合、又は有効なページテーブルがカーネル用ページテーブルであり、カレントゲストＯＳ１２１の動作モードがカーネルモードである場合、図２２の処理は終了する。この場合のフォールトは、動作モードに応じた本来のアクセス権（すなわち、ページテーブルのエントリのアクセス権）に違反したものであり、ページテーブルを切り替える必要は無いからである。換言すれば、有効なページテーブルと動作モードとが整合しているにも拘わらず、有効なページテーブルを切り替えることにより、両者の間に不整合を発生させる意味は無いからである。
【０１４２】
なお、カレントゲストＯＳの現在の動作モードは、ＶＭ管理情報より取得可能である。
【０１４３】
有効なページテーブルがカレントゲストＯＳ１２１の動作モードと整合していない場合（Ｓ１７２でＮＯ）、フォールト処理部１１５は、有効でないページテーブルのアドレスを、カレントゲストＯＳに係るページテーブル対応表１１８において実行中のプロセスに対応するエントリより取得する（Ｓ１７３）。続いて、フォールト処理部１１５は、取得されたアドレスによって、当該エントリのカレントページアドレスを更新する（Ｓ１７４）。
【０１４４】
続いて、フォールト処理部１１５は、ＭＭＵ１０５にＴＬＢ１５１のフラッシュを実行させる（Ｓ１７５）。続いて、フォールト処理部１１５は、カレントページアドレスを有効なページテーブルのアドレスとしてＭＭＵ１０５に設定する（Ｓ１７６）。続いて、フォールト処理部１１５は、新たに有効となったページテーブルとカレントゲストＯＳ１２１の現在の動作モードとに基づいて、ドメインアクセス権を決定する（Ｓ１７７）。ドメインアクセス権の決定方法は、図６において説明した通りである。
【０１４５】
続いて、フォールト処理部１１５は、カレントゲストＯＳ１２１が利用する全てのドメインのドメイン番号に関して、決定されたドメインアクセス権をＭＭＵ１０５に設定する（Ｓ１７８）。なお、カレントゲストＯＳ１２１が利用する全てのドメインは、ドメイン利用表１１９に基づいて判定される。
【０１４６】
この後、ゲストＯＳ１２１に制御を移すために、フォールト発生時に保存されているコンテキストが復元され、フォールト発生前のコンテキストからゲストＯＳ１２１の処理が再開される。
【０１４７】
図２２の実行により、有効なページテーブルと動作モードとの間の不整合が是正される。また、ドメインアクセス権は、「フラグ」とされる。したがって、図２２の実行後、ＭＭＵ１０５は、動作モードに応じたページテーブルを用いて、メモリアクセスを制御する。
【０１４８】
上述したように、第一の実施の形態によれば、ＴＬＢ１５１のフラッシュのタイミングを遅延させることができる。すなわち、ＴＬＢ１５１がフラッシュされる機会を減少させることができる。
【０１４９】
また、最終的に、ページテーブルのエントリのアクセス権に基づいてメモリアクセスが制御されるため、一つのドメインに対して全ての組み合わせのアクセス権の設定が実質的に可能となる。
【０１５０】
更に、ページテーブルの非特権モードのアクセス権の設定は、仮想化する際に変更する必要はない。したがって、仮想化に際して、ゲストＯＳ１２１のメモリマップの大幅な設計変更は必要ない。すなわち、仮想化環境のＯＳ（ゲストＯＳ１２１）に割り当てられた特権レベルにおいてメモリアクセス保護を適切に図ることができる。
【０１５１】
なお、第一の実施の形態では、ゲストＯＳ１２１の動作モードの切り替えに関して、ＡＳＩＤは寄与していない。但し、ＴＬＢ１５１のエントリにＡＳＩＤを付与する意味が無いわけではない。ＴＬＢ１５１のエントリにＡＳＩＤを付与することで、ゲストＯＳ１２１上のプロセス間の切り替え、ＶＭ１２間の切り替え時等において、ＴＬＢ１５１のフラッシュを抑制することができるからである。すなわち、第一の実施の形態は、プロセスごと（仮想アドレス空間ごと）にＡＳＩＤが割り当てられる仕組みに対して排他的なものではない。
【０１５２】
次に、第二の実施の形態について説明する。第二の実施の形態では、第一の実施の形態と異なる点について説明する。
【０１５３】
第二の実施の形態は、ページの属性の一つである、グローバル又はローカルについて考慮する。グローバルなページとは、ページテーブルのエントリにグローバルであることを示すフラグ（グローバルフラグ）が設定されているページをいい、複数の仮想アドレス空間（プロセス）によって共用される。ローカルなページとは、ページテーブルのエントリのグローバルフラグにローカルである（グローバルでない）ことが設定されているページをいい、一つの仮想アドレス空間（プロセス）に対応する。各ページをグローバルとするか、ローカルとするかは、ＯＳの種類（ＯＳのメモリマップに関する実装）に応じて決まる。例えば、或るＯＳは、カーネル空間に対応するページはグローバルとし、ユーザ空間に対応するページはローカルとするかもしれない。別のＯＳは、カーネル空間及びユーザ空間に対応する全てのページをローカルとするかもしれない。
【０１５４】
ローカルなページについては、ＡＳＩＤが有効となる。すなわち、ＭＭＵ１０５は、ローカルなページについては、ページテーブルのエントリをＴＬＢ１５１にキャッシュする際に、ＭＭＵ１０５に排他的に設定されているＡＳＩＤを付与する。一方、グローバルなページについては、ＡＳＩＤは無効である。すなわち、ＭＭＵ１０５は、グローバルなページについては、ページテーブルのエントリがＴＬＢ１５１をキャッシュする際に、ＡＳＩＤを付与しない。そうすることで、例えば、ＴＬＢ１５１のフラッシュ時において、ＡＳＩＤの付与されていないエントリをフラッシュ対象から除くことができ、キャッシュの効率化を図ることができるからである。
【０１５５】
第二の実施の形態では、仮想アドレス空間の全ての空間がローカルなページに対応する場合を前提とする。すなわち、第二の実施の形態は、全ての空間がローカルなページに対応するように仮想アドレス空間を生成するゲストＯＳ１２１に関して適用可能である。なお、厳密には、仮想化環境における仮想アドレス空間は、ユーザ空間及びカーネル空間に加え、ハイパーバイザ空間を含む。但し、本実施の形態において、全ての仮想アドレス空間とは、便宜上、ハイパーバイザ空間を除く空間をいう。
【０１５６】
仮想アドレス空間の全ての空間がローカルなページに対応する場合が前提とされることは、第二の実施の形態では、ＡＳＩＤを常に有効に利用することが可能であることを意味する。したがって、ゲストＯＳ１２１の動作モードの切り替え時のＴＬＢ１５１のフラッシュを抑制するための手段として、ＡＳＩＤを有効活用する点において、第二の実施の形態は、第一の実施の形態と異なる。
【０１５７】
図２３は、第二の実施の形態の動作モード切り替え時における処理内容の一例を説明するための図である。同図の初期状態は、図７と同様である。すなわち、切り替え前の動作モードは、ユーザモードであるとする。また、動作モードの切り替え前の有効なページテーブルは、ユーザ用ページテーブルであるとする。すなわち、ＭＭＵ１０５には、ユーザ用ページテーブルのアドレスが登録されている。
【０１５８】
ハイパーバイザ１１は、ユーザモードからカーネルモードへの切り替えを検知すると（Ｓ３１）、切り替え先のカーネルモードに対応したＡＳＩＤをＭＭＵ１０５に設定する（Ｓ３２）。すなわち、第二の実施の形態では、ゲストＯＳ１２１の動作モードごとに、相互に値が異なるＡＳＩＤが割り当てられる。具体的には、通常、ゲストＯＳ１２１により、ユーザのプロセスに対して一つ割り当てられるＡＳＩＤに加えて、カーネルモード用のＡＳＩＤが更に割り当てられる。
【０１５９】
したがって、ユーザモード及びカーネルモードのそれぞれについて一つのＡＳＩＤが割り当てられる。続いて、ハイパーバイザ１１は、カーネル用ページテーブルのアドレスをＭＭＵ１０５に設定する（Ｓ３３）。すなわち、カーネル用ページテーブルが、排他的に有効化される。
【０１６０】
なお、ＭＭＵ１０５に設定されるドメインアクセス権は、固定的に「フラグ」とされる。すなわち、常に、有効なページテーブルのエントリの非特権モードに対するアクセス権に基づいてメモリアクセスが制御される。
【０１６１】
第二の実施の形態では、全てのページがローカルであるため、ページテーブルのエントリがキャッシュされる際は、常に、当該ページテーブルに対応するＡＳＩＤが付与される。したがって、ユーザモード用ページテーブルのエントリと、カーネルモード用テーブルのエントリとが、同時期にＴＬＢ１５１内に共存することができる。したがって、ゲストＯＳ１２１の動作モードの切り替え時におけるＴＬＢ１５１のフラッシュを抑制することができる。また、ゲストＯＳ１２１の動作モードと、有効なページテーブルとは常に連動しているため、動作モードに応じたアクセス権に基づくメモリアクセスの制御が可能となる。
【０１６２】
第二の実施の形態の情報処理装置１０について説明する。
【０１６３】
ＡＳＩＤ設定部１２２は、ステップＳ１０２（図１２）において、生成されたプロセスに対して動作モードごとに値の異なるＡＳＩＤ（すなわち、二つのＡＳＩＤ）を割り当てる。
【０１６４】
したがって、ＡＳＩＤ管理部１１１は、ステップＳ１１２（図１３）において、二つのＡＳＩＤが対応付けられたエントリを、ＡＳＩＤ管理表１１７に追加する。
【０１６５】
図２４は、第二の実施の形態のＡＳＩＤ管理表のエントリの構成例を示す図である。同図に示されるように、第二の実施の形態のＡＳＩＤ管理表１１７のエントリは、ＶＭＩＤの他に、ユーザＡＳＩＤ及びカーネルＡＳＩＤを格納するための項目を含む、ユーザＡＳＩＤは、ユーザモードに対応するＡＳＩＤである。カーネルＡＳＩＤは、カーネルモードに対応するＡＳＩＤである。
【０１６６】
なお、第一の実施の形態と同様に、ＡＳＩＤ設定部１２２は、一つのプロセスに対して一つのＡＳＩＤを割り当て、ＡＳＩＤ管理部１１１が、例えば、ステップＳ１１２において、もう一つのＡＳＩＤを割り当てるようにしてもよい。
【０１６７】
また、ドメイン管理部１１３は、例えば、ステップＳ１５２（図１９）において、通知されたドメイン番号に対して、「フラグ」を値とするドメインアクセス権をＭＭＵ１０５に設定する。なお、ドメインアクセス権は、ゲストＯＳ１２１が使用するドメイン番号以外のドメイン番号に対しては、変更しない。
【０１６８】
また、図２５は、第二の実施の形態のコンテキストスイッチ制御部が実行する処理手順を説明するためのフローチャートである。
【０１６９】
ステップＳ２０１において、コンテキストスイッチ制御部１１４は、ゲストＯＳ１２１の動作モードの切り替えの要否を判定する。当該ステップの処理内容は、図２１のステップＳ１６１と同様である。動作モードの切り替えの必要がなければ、処理は終了する。
【０１７０】
コンテキストスイッチ制御部１１４は、動作モードの切り替えが必要であると判定した場合（Ｓ２０１でＹＥＳ）、切り替え対象のゲストＯＳ１２１（以下、「カレントゲストＯＳ１２１」という。）が動作するＶＭ１２に対応するＡＳＩＤ管理表１１７の実行中のプロセスに対応するエントリより、切り替え先の動作モードに対応するＡＳＩＤを取得する（Ｓ２０２）。なお、ゲストＯＳ１２１の動作モードと同様に、有効なＡＳＩＤをＶＭ管理情報に保存しておくようにしてもよい。その場合、ＶＭ管理情報に保存されているＡＳＩＤと対をなすＡＳＩＤがＡＳＩＤ管理表１１７より取得されればよい。さらに、有効なＡＳＩＤと対をなすＡＳＩＤもＶＭ管理情報に保存しておけば、ＡＳＩＤ管理表１１７を参照する必要はなくなり、処理の高速化を図れる。ただし、ＶＭ管理情報の更新は適時行う必要がある。
【０１７１】
続いて、コンテキストスイッチ制御部１１４は、取得されたＡＳＩＤをＭＭＵ１０５に設定する（Ｓ２０３）。ＭＭＵ１０５に設定されたＡＳＩＤは、排他的に有効となる。続いて、コンテキストスイッチ制御部１１４は、カレントゲストＯＳ１２１に係るページテーブル対応表１１８の実行中のプロセスに対応するエントリより、切り替え先の動作モードに対応するページテーブルのアドレスを取得する（Ｓ２０４）。具体的には、当該エントリ内のユーザ用ページテーブルアドレスとカーネル用ページテーブルアドレスのうち、カレントページアドレスと異なるアドレスが取得される。すなわち、現在ＭＭＵ１０５に設定されているページテーブルのアドレスと対をなすページテーブルアドレスが取得される。なお、有効なページテーブルのアドレスをＶＭ管理情報に保存しておくようにしてもよい。その場合、ＶＭ管理情報に保存されているアドレスと対をなすアドレスがページテーブル対応表１１８より取得されればよい。さらに、有効なページテーブルと対をなすページテーブルもＶＭ管理情報に保存しておけば、ページテーブル対応表１１８を参照する必要はなくなり、処理の高速化を図れる。ただし、ＶＭ管理情報の更新は適時行う必要がある。
【０１７２】
続いて、コンテキストスイッチ制御部１１４は、カレントゲストＯＳ１２１に係るページテーブル対応表１１８の実行中のプロセスに対応するエントリのカレントページテーブルアドレスを、取得されたアドレスによって更新する（Ｓ２０５）。続いて、コンテキストスイッチ制御部１１４は、カレントページテーブルアドレスをＭＭＵ１０５に設定する（Ｓ２０６）。続いて、コンテキストスイッチ制御部１１４は、ＣＰＵ１０４のレジスタの入れ替えを行う（Ｓ２０７）。
【０１７３】
図２５の実行後、ＭＭＵ１０５は、ゲストＯＳ１２１の動作モードに応じたページテーブルのエントリのアクセス権によってメモリアクセスの制御を行う。
【０１７４】
なお、第二の実施の形態では、コンテキストスイッチ制御部１１４によってドメインアクセス権は更新される必要はない。第二の実施の形態において、ドメインアクセス権は、「フラグ」に固定されるからである。
【０１７５】
また、第二に実施の形態において、フォールト処理部１１５による処理は不要である。有効なページテーブルとゲストＯＳ１２１の動作モードとは、常に整合が図られており、フォールト処理部１１５による不整合の是正は不要だからである。
【０１７６】
上述したように、第二の実施の形態によれば、仮想アドレス空間の全てをローカルなページに対応させるゲストＯＳ１２１については、ＡＳＩＤ及び有効なページテーブルを切り替えることで、ＴＬＢ１５１のフラッシュを抑制することができる。また、動作モードに応じたアクセス権によって、メモリアクセスを制御することができる。
【０１７７】
更に、ページテーブルの非特権モードのアクセス権の設定は、仮想化する際に変更する必要はない。したがって、仮想化に際して、ゲストＯＳ１２１のメモリマップの大幅な設計変更は必要ない。
【０１７８】
ここで、第一の実施の形態と第二の実施の形態との関係について説明する。第一の実施の形態は、仮想アドレス空間に対する全てのページがローカルであるか否かを問わず、実施可能である。一方、第二の実施の形態は、仮想アドレス空間に対する全てのページがローカルである場合に限って実施可能である。すなわち、第二の実施の形態を実施可能な範囲は、第一の実施の形態を実施可能な範囲に包含される関係にある。ここで、二つの実施の形態が重複する範囲（すなわち、全てのページがローカルである仮想アドレス空間を生成するゲストＯＳ１２１に関する処理）においては、第二の実施の形態の方が有利であるといえる。第一の実施の形態では、ＴＬＢ１５１のフラッシュの機会が削減されるのにとどまるところ、第二の実施の形態では、ＴＬＢ１５１をフラッシュする必要は無いからである。
【０１７９】
そうすると、情報処理装置１０において、全てのページがローカルである仮想アドレス空間を生成するゲストＯＳ１２１と、そうでないゲストＯＳ１２１とが共存する場合は、ハイパーバイザ１１が、ゲストＯＳ１２１に応じて、第一の実施の形態又は第二の実施の形態を実施することができれば好都合であるといえる。なお、以下において、全てのページ（ハイパーバイザ空間に係るページを除く）がローカルである仮想アドレス空間を生成するゲストＯＳ１２１のタイプを「ローカル」という。また、そうでないＯＳのタイプを「グローバル」という。なお、上記の分類において、ゲストＯＳ１２１のタイプがローカルであったとしても、一つのプロセスに対して同一のＡＳＩＤを二つ割り当てるゲストＯＳ１２１については、「グローバル」に分類されることとする。この場合、二つの動作モードのページテーブルのエントリを、ＴＬＢ１５１上において区別することができず、第二の実施の形態を実施できないからである。
【０１８０】
ゲストＯＳ１２１に応じて、ハイパーバイザ１１の実施形態を変化させるには、動作モードの切り替えに係るゲストＯＳ１２１のタイプがローカルであるかグローバルであるかを、ハイパーバイザ１１（コンテキストスイッチ制御部１１４）が区別できる必要がある。
【０１８１】
そこで、例えば、各ゲストＯＳ１２１のドメイン設定部１２４は、当該ゲストＯＳ１２１が使用するドメインのドメイン番号を通知する際に（図１８：Ｓ１４２）、当該ドメインに属するページは全てローカルであるか否かを示すフラグ（以下、「グローバルフラグ」という。）を通知する。例えば、ドメインに一つでもグローバルなページが属しているドメインに対するグローバルフラグは「１」とされ、グローバルなページが属していないドメインに対するグローバルフラグは「０」とされる。なお、ゲストＯＳ１２１は、自らが仮想アドレス空間を生成し、自らがドメインの割り当てを決定する。したがって、ゲストＯＳ１２１に含まれるドメイン設定部１２４は、各ドメインに属するページがローカルであるかグローバルであるかを予め知っている。
【０１８２】
当該通知を受けるハイパーバイザ１１のドメイン管理部１１３は、ステップＳ１５２（図１９）において、通知されたドメイン番号ごとにグローバルフラグを含むエントリをドメイン利用表１１９に登録する。したがって、この場合のドメイン利用表１１９のエントリは次のように拡張される。
【０１８３】
図２６は、拡張されたドメイン利用表のエントリの構成例を示す図である。同図に示されるように、拡張されたドメイン利用表１１９では、ドメイン番号ごとにグローバルフラグか記録される。
【０１８４】
なお、ドメイン管理部１１３が自動的又は能動的にドメイン番号を登録する場合、ドメイン管理部１１３が、ページテーブルエントリのグローバルフラグをチェックすることでドメインがグローバルであるかローカルであるかを判定してもよい。この場合、ドメインの追加や削除は、ドメイン設定部１２４が行わなくてよい。
【０１８５】
コンテキストスイッチ制御部１１４は、拡張されたドメイン利用表１１９を利用して、動作モードの切り替え対象のゲストＯＳ１２１のタイプを判断すればよい。具体的には、ゲストＯＳ１２１の動作モードの切り替えが通知された場合、コンテキストスイッチ制御部１１４は、切り替え対象のゲストＯＳ１２１に係るドメイン利用表１１９の全てのドメイン番号に対するグローバルフラグを参照する。グローバルフラグの値が、全てのドメイン番号について「０」であれば、当該ゲストＯＳ１２１のタイプは、ローカルであると判断される。したがって、この場合、コンテキストスイッチ制御部１１４は、第二の実施の形態（図２５）を実施する。但し、当該ゲストＯＳ１２１に係るＡＳＩＤ管理表１１７の実行中のプロセスに対応するエントリに登録されている二つのＡＳＩＤの値が同じであれば、コンテキストスイッチ制御部１１４は、第一の実施の形態（図２１）を実施する。
【０１８６】
一方、グローバルフラグの値が、少なくとも一つのドメイン番号について「１」であれば、コンテキストスイッチ制御部１１４は、第一の実施の形態（図２１）を実施する。
【０１８７】
また、コンテキストスイッチ制御部１１４がいずれの実施の形態を実施するかの判断に、ＡＳＩＤ管理表１１７が利用されてもよい。すなわち、対象となるエントリに異なる二つのＡＳＩＤが登録されている場合、第二の実施の形態が実施されればよい。それ以外の場合は、第一の実施の形態が実施されればよい。
【０１８８】
なお、第一の実施の形態と、第二の実施の形態とのＡＳＩＤ管理表１１７のエントリの形式を揃えるため、第一の実施の形態においても、ＡＳＩＤが二つ登録されるようにしてもよい。この場合、二つのＡＳＩＤは、同じ値とされればよい。
【０１８９】
また、タイプがローカルであるゲストＯＳ１２１に関してフォールト処理部１１５が処理対象とするフォールトが発生した場合、フォールト処理部１１５は、何も実行しない。すなわち、タイプがローカルであるゲストＯＳ１２１に関しては、コンテキストスイッチ制御部１１４によって第二の実施の形態が実施されるため、ゲストＯＳ１２１の動作モードと有効なページテーブルとの間に不整合は生じない。したがって、ステップＳ１７２（図２２）の判定によって、フォールト処理部１１５による処理は終了してしまうからである。よって、第二の実施の形態が実施される場合に、フォールト処理部１１５が存在することによる不都合は生じない。
【０１９０】
このように、第一の実施の形態と第二の実施の形態とは、排他的な関係ではなく、共存可能な関係にある。又は、第二の実施の形態は、第一の実施の形態における一部を改善するものであるともいえる。
【０１９１】
但し、タイプがローカルであるゲストＯＳ１２１しか対応しないというハイパーバイザ１１を実装する場合、第二の実施の形態が単独で実施されてもよい。この場合、ドメインに相当する概念は必要とはされない。第二の実施の形態において、ドメインアクセス権は、「フラグ」に固定されており、実質的に存在意義が無いからである。第二の実施の形態において、ドメインアクセス権をＭＭＵ１０５に設定するのは、ＭＭＵ１０５は、ドメインアクセス権を設定可能なＭＭＵであるからである。したがって、第二の実施の形態の実施に際して使用されるＭＭＵがドメインに対応していない場合、第二の実施の形態において、ドメインに関する処理は、除去されてよい。
【０１９２】
次に、第三の実施の形態について説明する。第三の実施の形態は、第一又は第二の実施の形態と異なる点について説明する。第三の実施の形態では、一つの仮想アドレス空間に関して、ローカルなドメインとグローバルなドメインとが混在している場合について説明する。換言すれば、ローカルなドメインとグローバルなドメインとが混在する仮想アドレス空間を生成するゲストＯＳ１２１に対して実行される処理について説明する。したがって、第三の実施の形態では、ドメインが有する、ページ（ページテーブルのエントリ）を分類するという性質が有効に機能する。
【０１９３】
ローカルなドメインとは、当該ドメインに属する全てのページがローカルであるドメインをいう。グローバルなドメインとは、当該ドメインに属する少なくとも一つのページがグローバルであるドメインをいう。
【０１９４】
図２７は、第三の実施の形態における有効なページテーブル及び有効なＡＳＩＤの遷移例を説明するための図である。同図では、便宜上、一つの仮想アドレス空間に関して、二つのドメインが割り当てられ、一方は、ローカルなドメイン（以下、「ドメインＬ」という。）、他方は、グローバルなドメイン（以下、「ドメインＧ」という。）であるとする。
【０１９５】
この場合、本実施の形態では、一つのプロセス（仮想アドレス空間）に対して、４つのページが割り当てられる。同図には、この４つのページテーブルＰＴ１〜ＰＴ４の遷移例が示されている。各ページテーブルは、上下に２分されて表現されている。上半分は、ドメインＬに係るエントリを示す。下半分は、ドメインＧに係るエントリを示す。
【０１９６】
ページテーブルＰＴ１は、ドメインＧに係るエントリ及びドメインＬに係るエントリの非特権モードのアクセス権にユーザモードのアクセス権が設定されたページテーブルである。なお、ページテーブルＰＴ１を、以下「ユーザ・ユーザ用ページテーブル」ともいう。
【０１９７】
ページテーブルＰＴ２は、ドメインＧに係るエントリの非特権モードのアクセス権にユーザモードのアクセス権が設定され、ドメインＬに係るエントリの非特権モードのアクセス権にカーネルモードのアクセス権が設定されたページテーブルである。なお、ページテーブルＰＴ２を、以下「ユーザ・カーネル用ページテーブル」ともいう。
【０１９８】
ページテーブルＰＴ３は、ドメインＧに係るエントリ及びドメインＬに係るエントリの非特権モードのアクセス権にカーネルモードのアクセス権が設定されたページテーブルである。なお、ページテーブルＰＴ３を、以下「カーネル・カーネル用ページテーブル」ともいう。
【０１９９】
ページテーブルＰＴ４は、ドメインＧに係るエントリの非特権モードのアクセス権にカーネルモードのアクセス権が設定され、ドメインＬに係るエントリの非特権モードのアクセス権にユーザモードのアクセス権が設定されたページテーブルである。なお、ページテーブルＰＴ４を、以下「カーネル・ユーザ用ページテーブル」ともいう。
【０２００】
なお、一つのプロセス（仮想アドレス空間）に対して割り当てられるＡＳＩＤは、二つでよい。すなわち、ＡＳＩＤは、ゲストＯＳ１２１上において実現したい特権レベルの数だけ有ればよい。同図では、各ページテーブルの下に、有効なＡＳＩＤが示されている。また、有効なＡＳＩＤの下には、ゲストＯＳ１２１の動作モードが示されている。
【０２０１】
ここで、ローカルなドメインＬに係るエントリについては、ＡＳＩＤを対応付けてＴＬＢ１５１にキャッシュすることができる。一方、グローバルなドメインＧに係るエントリについては、ＡＳＩＤに対応づけてＴＬＢ１５１にキャッシュできるとは限らない。第三の実施の形態では、二つのドメインの斯かる特性を利用して、ドメインＬに関しては第二の実施の形態が適用され、ドメインＧに関しては第一の実施の形態が適用されるようにする。
【０２０２】
４つのページテーブルのうち、１つのページテーブルが排他的に有効とされる。例えば、ゲストＯＳ１２１の動作モードがユーザモードであり、ページテーブルＰＴ１が有効な場合に、カーネルモードへの切り替えが発生したとする。動作モードの切り替えが発生した場合、グローバルなドメインＧに係るについては、第一の実施の形態を適用したいため、ページテーブルのエントリの切り替えは行いたくない。一方、ローカルなドメインＬについては、第二の実施の形態を適用したいため、切り替え先の動作モード（カーネルモード）に対応したアクセス権が設定されたエントリに切り替えたい。そうすると、この場合、ページテーブルＰＴ２を排他的に有効化すればよいことになる。実際問題として、有効なページテーブルの全エントリが切り替わるため、ドメインＧのエントリに関しても切り替えが発生する。しかし、ページテーブルＰＴ１とページテーブルＰＴ２とにおいて、ドメインＧに対するエントリの内容は同じである。したがって、実質的に、ドメインＧに関しては切り替えが発生していない場合と同じ効果を得るこができる。なお、ローカルなドメインＬに関してはエントリが実質的にも切り替わったため、第二の実施の形態と同様、有効なＡＳＩＤはカーネルＡＳＩＤに切り替えられる。
【０２０３】
続いて、ドメインフォールト又はアクセス違反が発生したとする。この場合、グローバルなドメインＧについては、第一の実施の形態を適用したいため、動作モードに応じたエントリに切り替えたい。一方、ローカルなドメインＬについては、第二の実施の形態を適用したいため、ページテーブルのエントリは切り替えたくない。そうすると、ページテーブルＰＴ３を排他的に有効化すればよいこととなる。なお、ローカルなドメインＬに関しては実質的にエントリの切り替えは発生しないため、有効なＡＳＩＤは切り替えられない。
【０２０４】
続いて、動作モードの切り替えが発生すると、ページテーブルＰＴ１からページテーブルＰＴ２への切り替えと同じ要領で、ページテーブルＰＴ３からページテーブルＰＴ４への切り替えが実行される。
【０２０５】
なお、ページテーブルは４つであっても、ローカルなドメインＬに対するエントリは、実質的に動作モードに対応した２種類である。したがって、ＡＳＩＤは、２つでよいのである。
【０２０６】
図２７において、ゲストＯＳ１２１の動作モードがカーネルモードであり、ページテーブルＰＴ２が有効な状態において、ページテーブルＰＴ２のドメインＧに係るエントリに関して、動作モードとの不整合が発生している。また、ゲストＯＳ１２１の動作モードがユーザモードであり、ページテーブルＰＴ４が有効な状態において、ページテーブルＰＴ４のドメインＧに係るエントリに関して、動作モードとの不整合が発生している。すなわち、動作モードの切り替え後、ドメインフォールト又はアクセス違反が発生するまでの間、有効なページテーブルのドメインＧに係るエントリに関して、動作モードとの不整合が発生している。斯かる不整合に対するアクセス保護の対策として、第一の実施の形態と同様に、ドメインが利用される。すなわち、ドメインアクセス権により、不整合が発生している状態における、本来のアクセス権を超えたメモリアクセスが防止される。第三の実施の形態において、ドメインアクセス権は、図２８に示されるように決定される。
【０２０７】
図２８は、第三の実施の形態におけるドメインアクセス権の決定方法を説明するための図である。同図の見方は、図６と同様である。第三の実施の形態では、ページテーブルが４種類有るため、行数が増えている点が異なる。なお、同図に示されるドメインアクセス権の値は、グローバルなドメインＧに関するものである。ローカルなドメインＬについては、「フラグ」固定でよいため、図示は省略されている。
【０２０８】
図２８に示されように、有効なページテーブルのドメインＧのエントリのアクセス権が、ゲストＯＳ１２１の動作モードよりも高い（又は広い）場合、ドメインアクセス権は「アクセス不可」とされる。それ以外のドメインアクセス権は「フラグ」とされる。
【０２０９】
なお、１つの仮想アドレス空間に関して、ローカルなドメインＬが２以上割り当てられもよい。又は、グローバルなドメインＧが２以上割り当てられてもよい。ローカルなドメインＬが２以上割り当てられる場合、ドメインＬの個数の増加に応じて、ページテーブルの種類を増加させなくてもよい。すなわち、ページテーブルの種類は、ドメインＬが１つである場合と同じでもよい。ドメインＬのエントリについては、動作モードの切り替えに応じて切り替えられるため、全てのドメインＬのエントリが同期して切り替わるからである。
【０２１０】
一方、グローバルなドメインＧが２以上割り当てられる場合、ドメインＧの増加に応じてページテーブルの種類を増加させる意義はある。ドメインＧごとに対応する動作モードが異なるエントリを有するページテーブルを別に用意することで、フォールトの発生した際に実質的に切り替えられるエントリを当該フォールトに係るドメインＧに係るエントリに限定することができる。
【０２１１】
図２９は、グローバルなドメインごとにページテーブルを分ける意義を説明するための図である。同図の見方は、図２７と同じである。
【０２１２】
同図には、ページテーブルＰＴ５〜ＰＴ８へ遷移する様子が示されている。なお、各ページテーブルは、ローカルなドメインＬに係るエントリと、グローバルなドメインＧ１に係るエントリと、グローバルなドメインＧ２に係るエントリとを含む。すなわち、同図には、グローバルなドメインが二つ割り当てられた場合が示されている。
【０２１３】
まず、ゲストＯＳ１２１の動作モードがユーザモードである場合に、ページテーブルＰＴ５が有効なページテーブルであったとする。この状態で、ゲストＯＳ１２１の動作モードがカーネルモードに切り替わると、ページテーブルＰＴ６が有効となる。ページテーブルＰＴ６は、ドメインＬに係るエントリのアクセス権が、ページテーブルＰＴ５と異なる。続いて、ドメインＧ１に係るページに対するアクセスにおいて、フォールトが発生すると、ページテーブルＰＴ７が有効となる。ページテーブルＰＴ７は、ドメインＧ１に係るエントリのアクセス権が、ページテーブルＰＴ６と異なる。続いて、ゲストＯＳ１２１の動作モードがユーザモードに切り替わると、ページテーブルＰＴ８が有効となる。ページテーブルＰＴ８は、ドメインＬに係るエントリのアクセス権が、ページテーブルＰＴ７と異なる。
【０２１４】
現在の状態において、ゲストＯＳ１２１はユーザモードであり、ドメインＧ２に係るエントリは、ユーザモードに対応するものである。すなわち、ドメインＧ２のエントリが、ドメインＧ１と連動して切り替わらないことにより、動作モードと整合したものとなっている。したがって、ページＰＴ８が有効な状態において、ドメインＧ２に係るページに対して、本来のアクセス権の範囲内のメモリアクセスが発生したとしても、フォールトは発生しない。したがって、ＴＬＢ１５１のフラッシュは発生しない。
【０２１５】
一方、ドメインＧ２のエントリが、ドメインＧ１のエントリと連動して切り替わる場合、ページテーブルＰＴ８に関して、ドメインＧ２のエントリは、カーネルモードに対応したものとなっている。したがって、ドメインＧ２に係るページに対して、本来のアクセス権の範囲内のメモリアクセスが発生した場合、フォールトが発生する可能性がある。
【０２１６】
このように、グローバルなドメインについては、ドメインごとにページテーブルを分けた方が、フォールトが発生する機会を削減することができ、ＴＬＢ１５１がフラッシュされる機会を削減される。
【０２１７】
そこで、必要なページテーブルの個数は、以下の式（１）で算出されればよい。
【０２１８】
２×２ｎ  ・・・  （１）
ｎは、グローバルなドメインの数である。例えば、図２７の場合、グローバルなドメインは、１個である。したがって、必要なページテーブルは、２×２１＝４個となる。また、図２９の場合、グローバルなドメインは、２個である。したがって、２×２２＝８個となる。
【０２１９】
なお、式（１）において、第一項の「２」は、動作モードの数に対応する。すなわち、（１）は、動作モード（の種類）とドメインの（種類）との組み合わせごとに、ページテーブルを生成すべきことを意味する。したがって、例えば、動作モードが２以上となる場合は、第一項の値を、動作モードの数に一致させればよい。
【０２２０】
以下、第三の実施の形態の情報処理装置１０に関して説明する。
【０２２１】
第三の実施の形態では、ページテーブルの種類の拡張に伴って、ページテーブル設定部１２３は、ステップＳ１２２（図１５）において、生成されたプロセス（すなわち、当該プロセスに係る仮想アドレス空間）に対して必要な数のページテーブルを生成する。必要な数は、式（１）に基づいて算出される。
【０２２２】
続いて、ページテーブル設定部１２３は、生成されたページテーブルのアドレスの登録指示をページテーブル管理部１１２に対して通知する（Ｓ１２３）。
【０２２３】
また、ページテーブル管理部１１２は、ステップＳ１３２（図１６）において、登録指示において指定されたページテーブルのアドレスの組を含むエントリを当該登録指示元のページテーブル設定部１２３が動作するＶＭ１２に対応するページテーブル対応表１１８に追加する。したがって、当該エントリは、図３０に示されるようになる。
【０２２４】
図３０は、第三の実施の形態のページテーブル対応表のエントリの構成例を示す図である。同図に示されるページテーブル対応表１１８のエントリは、四つのページテーブルのアドレスを格納するための項目を有する。すなわち、当該エントリは、図２７のように、グローバルなドメインが一つである場合に対応したものである。
【０２２５】
ドメイン利用表１１９は、図２６において説明した、グローバルフラグを格納可能な形式とすればよい。したがって、ドメイン設定部１２４及びドメイン管理部１１３は、当該形式のドメイン利用表１１９に対応した処理を実行すればよい。
【０２２６】
また、図３１は、第三の実施の形態のコンテキストスイッチ制御部が実行する処理手順を説明するためのフローチャートである。
【０２２７】
ステップＳ３０１において、コンテキストスイッチ制御部１１４は、ゲストＯＳ１２１の動作モードの切り替えの要否を判定する。当該ステップの処理内容は、図２１のステップＳ１６１と同様である。動作モードの切り替えの必要がなければ、処理は終了する。
【０２２８】
コンテキストスイッチ制御部１１４は、動作モードの切り替えが必要であると判定した場合（Ｓ３０１でＹＥＳ）、切り替え対象のゲストＯＳ１２１に係るドメイン利用表１１９のエントリを取得し（Ｓ３０２）、ローカルなドメインの有無を判定する（Ｓ３０３）。ローカルなドメインの有無は、取得されたエントリのグローバルフラグに基づいて判定される。
【０２２９】
ローカルなドメインが少なくとも一つ有る場合（Ｓ３０３でＹＥＳ）、コンテキストスイッチ制御部１１４は、ステップＳ３０４〜Ｓ３０８を実行する。ステップＳ３０４〜Ｓ３０８の処理内容は、図２５のステップＳ２０２〜Ｓ２０６と同様でよい。但し、第三の実施の形態では、ページテーブルが４以上有るため、ステップＳ３０６の内容がステップＳ２０４と多少異なる。具体的には、ローカルなドメインに対応するエントリは、切り替え前のエントリと、対応する動作モードが異なり、グローバルなドメインに対応するエントリは、切り替え前のエントリと、対応する動作モードが同じである（共通する）ページテーブルのアドレスがページテーブル対応表１１８より取得される。
【０２３０】
ステップＳ３０８に続いて、コンテキストスイッチ制御部１１４は、ステップＳ３０２において取得された、ドメイン利用表１１９のエントリのグローバルフラグに基づいて、グローバルなドメインの有無を判定する（Ｓ３０９）。グローバルなドメインが有る場合（Ｓ３０９でＹＥＳ）、コンテキストスイッチ制御部１１４は、ステップＳ３０２において取得された、ドメイン利用表１１９のエントリに基づいて、グローバルなドメインのドメイン番号を特定する（Ｓ３１０）。すなわち、グローバルフラグが「１」であるエントリのドメイン番号が、グローバルなドメインのドメイン番号として特定される。
【０２３１】
続いて、コンテキストスイッチ制御部１１４は、ステップＳ３１１〜Ｓ３１３を実行する。ステップＳ３１１〜Ｓ３１３の処理内容は、図２１のステップＳ１６２〜Ｓ１６４と同様でよい。但し、ステップＳ３１２において、コンテキストスイッチ制御部１１４は、図２８において説明した方法によってドメインアクセス権を決定する。続いて、コンテキストスイッチ制御部１１４は、動作モードの切り替え対象のゲストＯＳ１２１が利用するドメインのうちグローバルなドメインのドメイン番号に関して、決定されたドメインアクセス権をＭＭＵ１０５に設定する（Ｓ３１３）。すなわち、ステップＳ３１０において特定されたドメイン番号に関して、ドメインアクセス権がＭＭＵ１０５に設定される。このとき、特定されたドメイン番号以外のドメインアクセス権は変更しない。
【０２３２】
なお、ステップＳ３１０〜Ｓ３１３は、ステップＳ３０３においてローカルなドメインは存在しないと判定された場合も実行される。
【０２３３】
続いて、コンテキストスイッチ制御部１１４は、ＣＰＵ１０４のレジスタの入れ替えを行う（Ｓ３１４）。なお、ステップＳ３０９において、グローバルなドメインは存在しないと判定された場合も、ステップＳ３１４は実行される。
【０２３４】
続いて、第三の実施の形態のフォールト処理部１１５の処理手順について説明する。当該処理手順は、基本的に図２２において説明したものと同様でよい。但し、第三の実施の形態において、フォールト処理部１１５は、ステップＳ１７１の前に、フォールトに係るゲストＯＳ１２１（カレントゲストＯＳ１２１）に対応するドメイン利用表１１９を参照し、グローバルなドメインの有無を判定する。グローバルなドメインが存在する場合、フォールト処理部１１５は、ステップＳ１７１以降を実行する。
【０２３５】
ステップＳ１７２において、フォールト処理部１１５は、有効なページテーブルにおいて、フォールトに係るグローバルなドメインに係るエントリは、カレントゲストＯＳ１２１の動作モードと整合しているか否かを判定する。なお、フォールトに係るグローバルなドメインは、フォールトによって通知される仮想アドレスに基づいて特定される。当該グローバルなドメインに係るエントリが、カレントゲストＯＳ１２１の動作モードと整合していない場合（Ｓ１７２でＮＯ）、フォールト処理部１１５は、ステップＳ１７３以降を実行する。
【０２３６】
ステップＳ１７３において、フォールト処理部１１５は、有効なページテーブルと、当該グローバルなドメインのエントリのみが異なるページテーブルのアドレスをカレントゲストＯＳに係るページテーブル対応表１１８において実行中のプロセスに対応するエントリより取得する。具体的には、次のようなページテーブルのアドレスが取得される。まず、当該グローバルなドメインに対応するエントリについては、有効なページテーブルのエントリと対応する動作モードが異なるページテーブルである。かつ、他のグローバルなドメインに対応するエントリ及びローカルなドメインに対応するエントリは、有効なページテーブルのエントリと対応する動作モードが同じである（共通する）ページテーブルである。
【０２３７】
また、ステップＳ１７７において、フォールト処理部１１５は、図２８において説明した方法によって、ドメインアクセス権を決定する。
【０２３８】
上述したように、第三の実施の形態によれば、ローカルなドメインとグローバルなドメインとが混在する仮想アドレス空間を生成するゲストＯＳ１２１に関して、第一の実施の形態よりも、ＴＬＢ１５１のフラッシュの機会を削減させることができる。すなわち、第一の実施の形態でも、一つの仮想アドレス空間に関して、ローカルなドメインとグローバルなドメインとが混在している場合に対応可能である。第一の実施の形態は、ドメインがローカルであるかグローバルであるかを問わないからである。但し、第三の実施の形態において、有効なページテーブルのローカルなドメインに係るエントリについては、ゲストＯＳ１２１の動作モードと連動して切り替わる。したがって、ローカルなドメインに関するメモリアクセスに関しては、フォールト処理部１１５の呼び出しの要因となるフォールトは発生しない。したがって、第三の実施の形態によれば、当該フォールトの発生機会を削減することができる。このことは、フォールト処理部１１５による処理（図２２）が実行される機会の削減を意味する。なわち、ＴＬＢ１５１がフラッシュされる機会の削減を意味する。
【０２３９】
なお、第三の実施の形態を適用可能な範囲は、第二の実施の形態も包含する。すなわち、一つの仮想アドレス空間に係る全てのドメインがローカルである場合についても、第三の実施の形態は適用可能である。この場合、式（１）によって、必要なページテーブルの数は２となる。この値は、第二の実施の形態に一致する。
【０２４０】
また、ページテーブル設定部１２３は、ドメインごと、かつ、ゲストＯＳ１２１の動作モードごとに、ページテーブル（すなわち、ドメインの領域ごとに分割されたページテーブル）を生成し、ページテーブル管理部１１２に通知するようにしてもよい。この場合、コンテキストスイッチ制御部１１４又はフォールト処理部１１５は、有効なページテーブルを切り替える際に、例えば、図２７のページテーブルＰＴ１〜ＰＴ４や、図２９のページテーブルＰＴ５〜ＰＴ８のようなページテーブルを組み立てて、ＭＭＵ１０５に設定すればよい。組み立てたページテーブルは、ページテーブル対応表１１８に登録するようにしてもよい。
【０２４１】
また、予め用意するページテーブルを少なくすることも可能である。必要なページテーブルが、ページテーブル対応表１１８に登録されているか否かを識別可能としておく。ページテーブル対応表１１８に登録されていないページテーブルが必要となった場合、ハイパーバイザ１１は、当該ページテーブルの登録要求をゲストＯＳ１２１へ通知する。ゲストＯＳ１２１のページテーブル設定部１２３は、要求されたページテーブルを生成し、ページテーブル管理部１１２に当該ページテーブルのアドレスを通知する。こうすることにより、ページテーブルによって消費される記憶領域が削減される可能性を高めることができる。
【０２４２】
また、本実施の形態が対応可能な特権レベル（動作モード）の数は、二つに限定されない。例えば、ＣＰＵ１０４が三つの特権レベルを有するとする。また、ページテーブルのエントリには三つの特権レベルのそれぞれのアクセス権が設定可能であるとする。このような場合において、ハイパーバイザ１１に二つの特権レベルが割り当てられてしまい、残りの一つの特権レベルにおいて、ゲストＯＳ１２１に関して三つの特権レベルを実現したいとする。この場合、一つのプロセスに対して三つのページテーブルが生成されればよい。また、第二又は第三の実施の形態では、一つのプロセスに対して三つのＡＳＩＤが割り当てられればよい。
【０２４３】
また、例えば、ＡＲＭアーキテクチャのように、ページテーブルを二つ同時にＭＭＵ１０５に設定することが可能なアーキテクチャもある。一つのページテーブルで、４ＧＢ空間全体を表し、もう一つのテーブルで４ＧＢ空間の一部分を表す。当該一部分のみを切り替えて使用することで、プロセスの切り替えを実現し、プロセス用のページテーブルの領域を削減するための仕組みである。このようなアーキテクチャに対して、本実施の形態が適用されてもよい。なお、４ＧＢ空間全体のページテーブルは、ＶＭ１２に対し一つ登録するようにしても実現可能である。
【０２４４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０２４５】
以上の説明に関し、更に以下の項を開示する。
（付記１）
情報処理装置に、
一つの仮想アドレス空間に対して、特権レベルの異なる動作モードごとに生成され、当該動作モードに応じた第一のアクセス権が設定された各ページテーブルのアドレスを、前記仮想アドレス空間を管理するオペレーティングシステムより受け付け、該アドレスを該オペレーティングシステムに関連付けてページテーブル対応情報記憶手段に記録するページテーブル管理手順と、
前記オペレーティングシステムの前記動作モードの切り替えに応じ、前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定するコンテキストスイッチ制御手順と、
前記第二のアクセス権を超えるメモリアクセスに応じ、現在の前記動作モードに対応した前記アドレスを前記メモリ管理ユニットに設定し、トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、該アドレスに係るページテーブルに設定された前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するフォールト処理手順とを実行させ、
前記メモリ管理ユニットは、前記第二のアクセス権を、当該メモリ管理ユニットに前記アドレスが設定されているページテーブルに係る前記第一のアクセス権に優先させてメモリアクセスの制御を行うメモリアクセス制御プログラム。
（付記２）
一つの仮想アドレス空間に対して、前記特権レベルの異なる動作モードごとに、当該動作モードに応じた前記第一のアクセス権が設定されたページテーブルを生成し、該ページテーブルのアドレスを前記ページテーブル管理手順に通知するページテーブル設定手順を前記オペレーティングシステムに実行させる付記１記載のメモリアクセス制御プログラム。
（付記３）
前記情報処理装置に、
前記仮想アドレス空間に対して前記動作モードごとに割り当てられた識別子を前記オペレーティングシステムより受け付け、前記識別子を識別子記憶手段に記録する識別子管理手順を実行させ、
前記コンテキストスイッチ制御手順は、グローバルなページを含まない仮想アドレス空間については、前記動作モードの切り替えに応じ、切り替え先の前記動作モードに対応する前記識別子及び前記ページテーブルのアドレスを前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、当該メモリ管理ユニットに設定された前記識別子を付与して、当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュする付記１又は２記載のメモリアクセス制御プログラム。
（付記４）
前記仮想アドレス空間に対して前記動作モードごとに前記識別子を割り当て、該識別子を前記識別子管理手順に通知する識別子設定手順を前記オペレーティングシステムに実行させる付記３記載のメモリアクセス制御プログラム。
（付記５）
前記ページテーブルのエントリの分類単位であるドメインの識別情報を前記オペレーティングシステムより受け付け、ローカルなページのみが属するローカルな前記ドメインに関して、前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するドメイン管理手順を前記情報処理装置に実行させ、
前記ページテーブル管理手順は、前記動作モード及び前記ドメインの組み合わせごとに生成されたページテーブルのアドレスを受け付け、
前記コンテキストスイッチ制御手順は、前記動作モードの切り替えに応じ、前記メモリ管理ユニットに前記アドレスが設定されているページテーブルに対して前記ローカルなドメインに係るエントリは異なり、グローバルなページが属するグローバルな前記ドメインに係るエントリは共通するページテーブルの前記アドレスと、切り替え先の前記動作モードに対応する前記識別子とを前記メモリ管理ユニットに設定し、前記グローバルなドメインに関して前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定し、
前記フォールト処理手順は、前記第二のアクセス権を超えるメモリアクセスに応じ、前記ローカルなドメインに係るエントリは共通し、前記グローバルなドメインに係るエントリは異なるページテーブルの前記アドレスを前記メモリ管理ユニットに設定し、前記トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、前記グローバルなドメインに関して前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、前記ローカルなドメインに係るページについては、当該メモリ管理ユニットに設定された前記識別子を付与して当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュし、前記ドメインごとの前記第二のアクセス権を優先させてメモリアクセスを制御する付記３又は４記載のメモリアクセス制御プログラム。
（付記６）
情報処理装置が、
一つの仮想アドレス空間に対して、特権レベルの異なる動作モードごとに生成され、当該動作モードに応じた第一のアクセス権が設定された各ページテーブルのアドレスを、前記仮想アドレス空間を管理するオペレーティングシステムより受け付け、該アドレスを該オペレーティングシステムに関連付けてページテーブル対応情報記憶手段に記録するページテーブル管理手順と、
前記オペレーティングシステムの前記動作モードの切り替えに応じ、前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定するコンテキストスイッチ制御手順と、
前記第二のアクセス権を超えるメモリアクセスに応じ、現在の前記動作モードに対応した前記アドレスを前記メモリ管理ユニットに設定し、トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、該アドレスに係るページテーブルに設定された前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するフォールト処理手順とを実行し、
前記メモリ管理ユニットは、前記第二のアクセス権を、当該メモリ管理ユニットに前記アドレスが設定されているページテーブルに係る前記第一のアクセス権に優先させてメモリアクセスの制御を行うメモリアクセス制御方法。
（付記７）
一つの仮想アドレス空間に対して、前記特権レベルの異なる動作モードごとに、当該動作モードに応じた前記第一のアクセス権が設定されたページテーブルを生成し、該ページテーブルのアドレスを前記ページテーブル管理手順に通知するページテーブル設定手順を前記オペレーティングシステムが実行する付記６記載のメモリアクセス制御方法。
（付記８）
前記仮想アドレス空間に対して前記動作モードごとに割り当てられた識別子を前記オペレーティングシステムより受け付け、前記識別子を識別子記憶手段に記録する識別子管理手順を前記情報処理装置が実行し、
前記コンテキストスイッチ制御手順は、グローバルなページを含まない仮想アドレス空間については、前記動作モードの切り替えに応じ、切り替え先の前記動作モードに対応する前記識別子及び前記ページテーブルのアドレスを前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、当該メモリ管理ユニットに設定された前記識別子を付与して、当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュする付記６又は７記載のメモリアクセス制御方法。
（付記９）
前記仮想アドレス空間に対して前記動作モードごとに前記識別子を割り当て、該識別子を前記識別子管理手順に通知する識別子設定手順を前記オペレーティングシステムが実行する付記８記載のメモリアクセス制御方法。
（付記１０）
前記ページテーブルのエントリの分類単位であるドメインの識別情報を前記オペレーティングシステムより受け付け、ローカルなページのみが属するローカルな前記ドメインに関して、前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するドメイン管理手順を前記情報処理装置が実行し、
前記ページテーブル管理手順は、前記動作モード及び前記ドメインの組み合わせごとに生成されたページテーブルのアドレスを受け付け、
前記コンテキストスイッチ制御手順は、前記動作モードの切り替えに応じ、前記メモリ管理ユニットに前記アドレスが設定されているページテーブルに対して前記ローカルなドメインに係るエントリは異なり、グローバルなページが属するグローバルな前記ドメインに係るエントリは共通するページテーブルの前記アドレスと、切り替え先の前記動作モードに対応する前記識別子とを前記メモリ管理ユニットに設定し、前記グローバルなドメインに関して前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定し、
前記フォールト処理手順は、前記第二のアクセス権を超えるメモリアクセスに応じ、前記ローカルなドメインに係るエントリは共通し、前記グローバルなドメインに係るエントリは異なるページテーブルの前記アドレスを前記メモリ管理ユニットに設定し、前記トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、前記グローバルなドメインに関して前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、前記ローカルなドメインに係るページについては、当該メモリ管理ユニットに設定された前記識別子を付与して当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュし、前記ドメインごとの前記第二のアクセス権を優先させてメモリアクセスを制御する付記８又は９記載のメモリアクセス制御方法。
（付記１１）
一つの仮想アドレス空間に対して、特権レベルの異なる動作モードごとに生成され、当該動作モードに応じた第一のアクセス権が設定された各ページテーブルのアドレスを、前記仮想アドレス空間を管理するオペレーティングシステムより受け付け、該アドレスを該オペレーティングシステムに関連付けてページテーブル対応情報記憶手段に記録するページテーブル管理手段と、
前記オペレーティングシステムの前記動作モードの切り替えに応じ、前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定するコンテキストスイッチ制御手段と、
前記第二のアクセス権を超えるメモリアクセスに応じ、現在の前記動作モードに対応した前記アドレスを前記メモリ管理ユニットに設定し、トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、該アドレスに係るページテーブルに設定された前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するフォールト処理手段とを有し、
前記メモリ管理ユニットは、前記第二のアクセス権を、当該メモリ管理ユニットに前記アドレスが設定されているページテーブルに係る前記第一のアクセス権に優先させてメモリアクセスの制御を行う情報処理装置。
（付記１２）
一つの仮想アドレス空間に対して、前記特権レベルの異なる動作モードごとに、当該動作モードに応じた前記第一のアクセス権が設定されたページテーブルを生成し、該ページテーブルのアドレスを前記ページテーブル管理手段に通知するページテーブル設定手段を含む前記オペレーティングシステムを有する付記１１記載の情報処理装置。
（付記１３）
前記仮想アドレス空間に対して前記動作モードごとに割り当てられた識別子を前記オペレーティングシステムより受け付け、前記識別子を識別子記憶手段に記録する識別子管理手段を有し、
前記コンテキストスイッチ制御手段は、グローバルなページを含まない仮想アドレス空間については、前記動作モードの切り替えに応じ、切り替え先の前記動作モードに対応する前記識別子及び前記ページテーブルのアドレスを前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、当該メモリ管理ユニットに設定された前記識別子を付与して、当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュする付記１１又は１２記載の情報処理装置。
（付記１４）
前記仮想アドレス空間に対して前記動作モードごとに前記識別子を割り当て、該識別子を前記識別子管理手段に通知する識別子設定手段を含むオペレーティングシステムを有する付記１３記載の情報処理装置。
（付記１５）
前記ページテーブルのエントリの分類単位であるドメインの識別情報を前記オペレーティングシステムより受け付け、ローカルなページのみが属するローカルな前記ドメインに関して、前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定するドメイン管理手段を有し、
前記ページテーブル管理手段は、前記動作モード及び前記ドメインの組み合わせごとに生成されたページテーブルのアドレスを受け付け、
前記コンテキストスイッチ制御手段は、前記動作モードの切り替えに応じ、前記メモリ管理ユニットに前記アドレスが設定されているページテーブルに対して前記ローカルなドメインに係るエントリは異なり、グローバルなページが属するグローバルな前記ドメインに係るエントリは共通するページテーブルの前記アドレスと、切り替え先の前記動作モードに対応する前記識別子とを前記メモリ管理ユニットに設定し、前記グローバルなドメインに関して前記第一のアクセス権が相対的に小さい前記動作モードに応じた前記第一のアクセス権以下の値を示す第二のアクセス権をメモリ管理ユニットに設定し、
前記フォールト処理手段は、前記第二のアクセス権を超えるメモリアクセスに応じ、前記ローカルなドメインに係るエントリは共通し、前記グローバルなドメインに係るエントリは異なるページテーブルの前記アドレスを前記メモリ管理ユニットに設定し、前記トランスレーション・ルックアサイド・バッファのフラッシュを前記メモリ管理ユニットに実行させ、前記グローバルなドメインに関して前記第一のアクセス権を有効とさせる値を示す前記第二のアクセス権を前記メモリ管理ユニットに設定し、
前記メモリ管理ユニットは、前記ローカルなドメインに係るページについては、当該メモリ管理ユニットに設定された前記識別子を付与して当該メモリ管理ユニットに設定されたアドレスに係るページテーブルのエントリを前記トランスレーション・ルックアサイド・バッファにキャッシュし、前記ドメインごとの前記第二のアクセス権を優先させてメモリアクセスを制御する付記１３又は１４記載の情報処理装置。
【符号の説明】
【０２４６】
１０          情報処理装置
１１          ハイパーバイザ
１２          ＶＭ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        主記憶装置
１０４        ＣＰＵ
１０５        ＭＭＵ１０５
１１１        ＡＳＩＤ管理部
１１２        ページテーブル管理部
１１３        ドメイン管理部
１１４        コンテキストスイッチ制御部
１１５        フォールト処理部
１１６        ＶＭ管理部
１１７        ＡＳＩＤ管理表
１１８        ページテーブル対応表
１１９        ドメイン利用表
１２１        ゲストＯＳ
１２２        ＡＳＩＤ設定部
１２３        ページテーブル設定部
１２４        ドメイン設定部
１５１        ＴＬＢ
Ｂ            バス
【図１】
0005541036.tif 000002
【図２】
0005541036.tif 000003
【図３】
0005541036.tif 000004
【図４】
0005541036.tif 000005
【図５】
0005541036.tif 000006
【図６】
0005541036.tif 000007
【図７】
0005541036.tif 000008
【図８】
0005541036.tif 000009
【図９】
0005541036.tif 000010
【図１０】
0005541036.tif 000011
【図１１】
0005541036.tif 000012
【図１２】
0005541036.tif 000013
【図１３】
0005541036.tif 000014
【図１４】
0005541036.tif 000015
【図１５】
0005541036.tif 000016
【図１６】
0005541036.tif 000017
【図１７】
0005541036.tif 000018
【図１８】
0005541036.tif 000019
【図１９】
0005541036.tif 000020
【図２０】
0005541036.tif 000021
【図２１】
0005541036.tif 000022
【図２２】
0005541036.tif 000023
【図２３】
0005541036.tif 000024
【図２４】
0005541036.tif 000025
【図２５】
0005541036.tif 000026
【図２６】
0005541036.tif 000027
【図２７】
0005541036.tif 000028
【図２８】
0005541036.tif 000029
【図２９】
0005541036.tif 000030
【図３０】
0005541036.tif 000031
【図３１】
0005541036.tif 000032