(57)【特許請求の範囲】
【請求項１】
第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限するためのメモリ制限情報と、該第２のプログラムがメモリへアクセスしたときにフォールトを発生させるためのアクセス不可情報とを格納する格納手段と、
前記第２のプログラムを実行するときに前記第１のプログラムが実行中か否かを判定し、該第１のプログラムが実行中である場合、該第２のプログラムが前記メモリへアクセスしたときに前記フォールトが発生するように、前記アクセス不可情報に基づいてメモリ管理ユニットの設定を変更する第１の制御手段と、
前記第１のプログラム及び前記第２のプログラムの実行中に前記フォールトが発生したとき、前記メモリ制限情報に基づいて前記第２のプログラムから前記メモリ領域へのアクセスが許可されているか否かを判定し、該メモリ領域へのアクセスが許可されている場合、該フォールトが発生しないように前記メモリ管理ユニットの設定を変更する第２の制御手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記アクセス不可情報は、仮想アドレスを前記メモリの物理アドレスへ変換するページテーブルに含まれるドメイン番号毎に、前記第２のプログラムによるアクセスを禁止する情報であり、前記第１の制御手段は、該アクセス不可情報に基づいて前記メモリ管理ユニットのドメイン設定を変更することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記アクセス不可情報は、前記第２のプログラムのための仮想アドレスを前記メモリの物理アドレスへ変換するページテーブルを、テーブルのエントリが空である置換ページテーブルに置換する情報であり、前記第１の制御手段は、該アクセス不可情報に基づいて前記メモリ管理ユニットに該置換ページテーブルを設定することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記第１のプログラムの実行中に、前記メモリ制限情報を生成して前記格納手段に格納する生成手段をさらに備えることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記生成手段は、前記第１のプログラムのための仮想アドレスを前記メモリの物理アドレスへ変換するページテーブルが変更されたとき、前記メモリ制限情報を更新することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記メモリ制限情報、前記アクセス不可情報、又は前記テーブル情報を前記格納手段に設定する設定手段をさらに備えることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
第１のプログラム及び第２のプログラムを実行するコンピュータのための制御プログラムであって、
前記第２のプログラムを実行するときに前記第１のプログラムが実行中か否かを判定し、該第１のプログラムが実行中である場合、格納手段に格納されたアクセス不可情報に基づいて、該第２のプログラムがメモリへアクセスしたときにフォールトが発生するようにメモリ管理ユニットの設定を変更し、
前記第１のプログラム及び前記第２のプログラムの実行中に前記フォールトが発生したとき、前記格納手段に格納されたメモリ制限情報に基づいて、該第１のプログラムが使用するメモリ領域への該第２のプログラムからのアクセスが許可されているか否かを判定し、該メモリ領域へのアクセスが許可されている場合、該フォールトが発生しないように前記メモリ管理ユニットの設定を変更する
処理を前記コンピュータに実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び制御プログラムに関する。
【背景技術】
【０００２】
近年、スマートフォンのような携帯端末が普及し、個人用の情報処理端末として携帯されるようになっている。一方、携帯端末は、業務用の情報処理端末としても活用されるようになっており、社給として携帯端末を支給する企業も現れている。このため、しばしば、個人用と業務用の２台の端末を同時に携帯するような状況が見られ、個人用の端末を業務用にも利用することが望まれている。しかしながら、１台の端末を個人用と業務用とで併用するためには、端末のセキュリティの確保が必要である。
【０００３】
端末のセキュリティを確保しつつ個人用の端末を業務用に利用可能にするために、仮想化技術を用いて、個人仮想マシン（ＶＭ）と業務ＶＭを１台の端末に集約する方法が知られている。この方法では、個人ＶＭと業務ＶＭの動作環境を分離し、業務アプリケーションプログラムの動作環境をそのまま業務ＶＭ上に構築するので、業務データのセキュリティが確保される。以下の説明では、アプリケーションプログラムを単にアプリケーション又はＡＰと記す場合がある。
【０００４】
権限レベルが２段階のマイクロプロセッサを用いたＶＭにおいて、ゲストオペレーティングシステム（ＯＳ）とアプリケーションの間のメモリ保護を行う技術も知られている。この技術では、メモリ管理ユニットが、ゲストＯＳ用のメモリ保護テーブルとアプリケーション用のメモリ保護テーブルを切り替えて参照することで、アプリケーションからゲストＯＳのメモリ領域へのアクセスを制限することができる。
【０００５】
また、メモリ管理装置において、予めアドレスが決定されていないデータに対しても保護情報を細粒度で設定可能とする技術も知られている。この技術では、仮想アドレスから物理アドレスへの変換に用いるアドレス変換テーブルにアクセス禁止の情報を設定して、その仮想アドレス領域のアクセス時にフォールトを発生させる。そして、フォールトの発生時に、実行中のアドレスからのアクセスが許可されているか否かを判定することで、データが保護される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−４６６１号公報
【特許文献２】特開２００６−１５５５１６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した従来の仮想化技術には、以下のような問題がある。
個人ＶＭと業務ＶＭを１台の端末に集約する方法では、業務アプリケーションを実行するための業務ＶＭ上に、個人ＶＭとは別のＯＳを搭載する必要がある。このため、メモリを大量に消費するという問題がある。
【０００８】
なお、かかる問題は、個人ＶＭと業務ＶＭを１台の端末に集約する場合に限らず、１台の情報処理装置において、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限する他の場合においても生ずるものである。
【０００９】
１つの側面において、本発明の課題は、第１のプログラム及び第２のプログラムを実行する情報処理装置において、メモリ消費を抑えながら、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限することである。
【課題を解決するための手段】
【００１０】
第１の側面において、情報処理装置は、格納手段、第１の制御手段、及び第２の制御手段を含む。
格納手段は、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限するためのメモリ制限情報と、第２のプログラムがメモリへアクセスしたときにフォールトを発生させるためのアクセス不可情報とを格納する。
【００１１】
第１の制御手段は、第２のプログラムを実行するときに第１のプログラムが実行中か否かを判定する。そして、第１のプログラムが実行中である場合、第２のプログラムがメモリへアクセスしたときにフォールトが発生するように、アクセス不可情報に基づいてメモリ管理ユニットの設定を変更する。
【００１２】
第２の制御手段は、第１のプログラム及び第２のプログラムの実行中にフォールトが発生したとき、メモリ制限情報に基づいて第２のプログラムからメモリ領域へのアクセスが許可されているか否かを判定する。そして、メモリ領域へのアクセスが許可されている場合、フォールトが発生しないようにメモリ管理ユニットの設定を変更する。
【００１３】
第２の側面において、情報処理装置は、格納手段及び制御手段を含む。
格納手段は、中間物理アドレスをメモリの物理アドレスへ変換する変換テーブルを、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限するための置換変換テーブルに置換するテーブル情報を格納する。
【００１４】
制御手段は、第２のプログラムを実行するときに第１のプログラムが実行中か否かを判定する。そして、第１のプログラムが実行中である場合、テーブル情報に基づいてメモリ管理ユニットに置換変換テーブルを設定する。
【発明の効果】
【００１５】
第１のプログラム及び第２のプログラムを実行する情報処理装置において、メモリ消費を抑えながら、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限することができる。
【図面の簡単な説明】
【００１６】
【図１】第１の情報処理装置の機能的構成図である。
【図２】第２の情報処理装置の機能及びハードウェアの構成図である。
【図３】第１の業務ＡＰ情報を示す図である。
【図４】第１のメモリ制限情報を示す図である。
【図５】ドメイン番号変換テーブルを示す図である。
【図６】ドメイン設定を示す図である。
【図７】第１の業務ＡＰ特定部の処理のフローチャートである。
【図８】第１のコンテキストスイッチ処理部の処理のフローチャートである。
【図９】第１のフォールト処理部の処理のフローチャートである。
【図１０】第３の情報処理装置の機能及びハードウェアの構成図である。
【図１１】第２の業務ＡＰ情報を示す図である。
【図１２】第１のテーブル情報を示す図である。
【図１３】第２の業務ＡＰ特定部の処理のフローチャートである。
【図１４】第１のメモリ制限生成部の処理のフローチャートである。
【図１５】第１の業務ＡＰのページテーブルを示す図である。
【図１６】第２の業務ＡＰのページテーブルを示す図である。
【図１７】第２のメモリ制限情報を示す図である。
【図１８】第３のメモリ制限情報を示す図である。
【図１９】第２のコンテキストスイッチ処理部の処理のフローチャートである。
【図２０】第１のページテーブル処理部の処理のフローチャートである。
【図２１】第４の情報処理装置の機能及びハードウェアの構成図である。
【図２２】第２のテーブル情報を示す図である。
【図２３】第３の業務ＡＰ特定部の処理のフローチャートである。
【図２４】第２のメモリ制限生成部の処理のフローチャートである。
【図２５】第３のコンテキストスイッチ処理部の処理のフローチャートである。
【図２６】第２のフォールト処理部の処理のフローチャートである。
【図２７】第２のページテーブル処理部の処理のフローチャートである。
【図２８】第５の情報処理装置の機能的構成図である。
【図２９】第６の情報処理装置の機能及びハードウェアの構成図である。
【図３０】第３の業務ＡＰ情報を示す図である。
【図３１】第４のメモリ制限情報を示す図である。
【図３２】第３のテーブル情報を示す図である。
【図３３】第４の業務ＡＰ特定部の処理のフローチャートである。
【図３４】第３のメモリ制限生成部の処理のフローチャートである。
【図３５】第４のコンテキストスイッチ処理部の処理のフローチャートである。
【図３６】第３のフォールト処理部の処理のフローチャートである。
【図３７】第３のページテーブル処理部の処理のフローチャートである。
【図３８】第７の情報処理装置の機能及びハードウェアの構成図である。
【図３９】第８の情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら、実施形態を詳細に説明する。
実施形態の情報処理装置には、携帯端末、パーソナルコンピュータ、クライアント、又はサーバのように、第１のプログラム及び第２のプログラムを実行可能な情報処理装置が含まれる。
【００１８】
図１は、情報処理装置の機能的構成例を示している。図１の情報処理装置１０１は、格納部１１１、制御部１１２、及び制御部１１３を含む。
格納部１１１は、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限するためのメモリ制限情報と、第２のプログラムがメモリへアクセスしたときにフォールトを発生させるためのアクセス不可情報とを格納する。
【００１９】
制御部１１２は、第２のプログラムを実行するときに第１のプログラムが実行中か否かを判定する。そして、第１のプログラムが実行中である場合、第２のプログラムがメモリへアクセスしたときにフォールトが発生するように、アクセス不可情報に基づいてメモリ管理ユニットの設定を変更する。
【００２０】
制御部１１３は、第１のプログラム及び第２のプログラムの実行中にフォールトが発生したとき、メモリ制限情報に基づいて第２のプログラムから上記メモリ領域へのアクセスが許可されているか否かを判定する。そして、そのメモリ領域へのアクセスが許可されている場合、フォールトが発生しないようにメモリ管理ユニットの設定を変更する。
【００２１】
このような情報処理装置によれば、第１のプログラム及び第２のプログラムを実行する場合に、メモリ消費を抑えながら、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限することができる。
【００２２】
図２は、情報処理装置の機能及びハードウェアの構成例を示している。図２の情報処理装置のハードウェア２０３は、Central Processing Unit（ＣＰＵ）２４１、メモリ管理ユニット（ＭＭＵ）２４２、及びメモリ２４３を含む。
【００２３】
ＣＰＵ２４１は、命令を実行することで、対象ＶＭ２０１及びハイパーバイザ２０２の機能を実現する。ＶＭ２０１内では、ＯＳ２１５が動作し、ＯＳ２１５上でアプリケーション（ＡＰ）２１１、２１２、及び業務ＡＰ２１３、２１４が実行される。ＡＰ２１１及び２１２は、例えば、業務ＡＰ以外の個人用のアプリケーションである。ＯＳ２１５からは、ＡＰ２１１及び２１２も、業務ＡＰ２１３及び２１４も、アプリケーションである点では区別はない。ＯＳ２１５上で実行される業務ＡＰの数は１つ以上であればよく、業務ＡＰ以外のアプリケーションの数も１つ以上であればよい。
【００２４】
ＭＭＵ２４２は、Translation Look-aside Buffer（ＴＬＢ）を含み、ハイパーバイザ２０２により設定されるページテーブル及びドメイン設定に基づいて、メモリ２４３へアクセスする。その際、ページテーブルをメモリ２４３又はＴＬＢから参照する。
【００２５】
メモリ２４３は、ＶＭ２０１及びハイパーバイザ２０２の各種プログラムと各種データを格納する。各種データには、業務ＡＰ情報２２１、メモリ制限情報２２２、及びドメイン情報２２３が含まれる。ＣＰＵ２４１は、ＭＭＵ２４２を介してメモリ２４３へアクセスする。
【００２６】
ハイパーバイザ２０２は、ＶＭ２０１のための制御プログラムであり、業務ＡＰ特定部２３１、コンテキストスイッチ処理部２３２、及びフォールト処理部２３３を含む。ハイパーバイザ２０２は、業務ＡＰ情報２２１、メモリ制限情報２２２、及びドメイン情報２２３を用いて、メモリアクセス制御を行う。対象ＶＭが複数の場合は、ＶＭ毎にこれらの情報を保持することで、メモリアクセス制御を行うことができる。
【００２７】
図３は、業務ＡＰ情報２２１の例を示している。図３の業務ＡＰ情報は、業務ＡＰ特定情報及び実行時情報を含む。業務ＡＰ特定情報は、業務ＡＰがＶＭ２０１上で実行されたことを特定するための情報であり、例えば、業務ＡＰの実行ファイルのファイル名である。
【００２８】
実行時情報は、業務ＡＰがＶＭ２０１上で実行されたときの情報であり、例えば、業務ＡＰ用の仮想アドレス空間を実現するページテーブルの物理アドレスである。ページテーブルは、仮想アドレスをメモリ２４３の物理アドレスへ変換するために用いられる。業務ＡＰがＶＭ２０１上で実行されていないときは、実行時情報は空である。図３のエントリ３０１の実行時情報は空であり、エントリ３０２の実行時情報は、ページテーブルの物理アドレスが０ｘ８００１２０００であることを示している。０ｘは１６進数を表す。
【００２９】
図４は、メモリ制限情報２２２の例を示している。図４のメモリ制限情報は、アクセスを拒否する領域を表しており、業務ＡＰ用にあらかじめ設定される。不許可物理アドレスは、アクセスを拒否する物理アドレスの領域を表し、ページテーブルにて指定された物理アドレスをチェックするために使用される。不許可仮想アドレスは、アクセスを拒否する仮想アドレスの領域を表し、フォールトが発生した仮想アドレスをチェックするために使用される。
【００３０】
図５及び図６は、ドメイン情報２２３の例を示している。ドメイン情報２２３は、図５のドメイン番号変換テーブルと図６のドメイン設定を含む。
例えば、ＡＲＭ（登録商標）プロセッサでは、ドメイン番号は０〜１５の１６個あり、それぞれのドメイン番号に対して、ページテーブルに従う、アクセス不可、又はアクセス可のいずれかの設定を行うことができる。ページテーブルに従う場合は、ドメインとしての効果はない。アクセス不可の場合は、ページテーブルのアクセス権に関わらず、アクセスが拒否され、アクセス可の場合は、ページテーブルのアクセス権に関わらず、アクセスが許可される。ドメイン番号は、ページテーブルのエントリに設定され、ドメイン毎のアクセス制御に用いられる。
【００３１】
ドメイン番号の使い方はＯＳ毎に異なるため、ドメイン情報２２３をＯＳ毎に用意することで、対象ＶＭが複数の場合にも対応可能である。
業務ＡＰ以外のＡＰがメモリ２４３へアクセスしたとき、そのメモリ領域へのアクセスが可能か否かをチェックするために、ドメイン番号０、１、及び２に対してドメインフォールトを発生させるように設定する。そして、チェックが終了したドメインのドメイン番号を、ドメイン番号変換テーブルに従って、変換ドメイン番号に変更する。
【００３２】
図５のドメイン番号変換テーブルでは、ドメイン番号０、１、及び２に対して変換ドメイン番号５、６、及び７がそれぞれ設定されている。この場合、ドメイン番号０、１、２、５、６、及び７に対する業務ＡＰと業務ＡＰ以外のＡＰのドメイン設定は、図６のようになる。
【００３３】
図６のドメイン設定では、ＶＭ２０１上のＯＳ２１５及び業務ＡＰがドメイン番号０、１、及び２のドメインを使用し、これらのドメイン番号に対して、ページテーブルに従う旨が設定されている。業務ＡＰ以外のＡＰの場合は、ドメイン番号０、１、及び２に対してアクセス不可が設定される。これにより、業務ＡＰ以外のＡＰからドメイン番号０、１、及び２へのアクセスにおいてドメインフォールトが発生する。
【００３４】
ドメインフォールトが発生すると、ハイパーバイザ２０２はアクセス可否を判定し、アクセス可の場合は、ページテーブルのドメイン番号を対応する変換ドメイン番号へ変更することで、次回以降のアクセス時にはドメインフォールトが発生しなくなる。ドメイン番号５、６、及び７に対しても業務ＡＰのドメイン設定が存在するのは、業務ＡＰが実行されていないときに、業務ＡＰのドメイン設定を利用するためである。業務ＡＰ以外のＡＰに対してはドメイン番号が５、６、又は７に変更されている可能性があり、それらのドメインへのアクセスを可能とするために、ページテーブルに従う旨が設定されている。
【００３５】
図６では、ドメイン番号０、１、及び２に対してページテーブルに従う旨が設定されているが、ドメイン設定はＯＳによって変更される場合がある。その場合は、対応する変換ドメイン番号に対するドメイン設定も変更される。例えば、ドメイン番号０がアクセス可に変更された場合、対応する変換ドメイン番号５に対する業務ＡＰのドメイン設定と業務ＡＰ以外のＡＰのドメイン設定も、アクセス可に変更される。
【００３６】
図７は、ハイパーバイザ２０２の業務ＡＰ特定部２３１が行う処理の例を示すフローチャートである。業務ＡＰ特定部２３１は、業務ＡＰ情報２２１を用いて、ＶＭ２０１上での業務ＡＰの実行状況を管理する。
【００３７】
業務ＡＰ特定部２３１は、まず、ＶＭ２０１におけるＡＰ２１１〜２１４からＯＳ２１５へのシステムコールを契機に処理を開始する。ＣＰＵ２４１の機能により、ＶＭ２０１におけるシステムコールの処理をハイパーバイザ２０２へ移すことが可能である。
【００３８】
業務ＡＰ特定部２３１は、システムコールの種類と引数を、システムコール発生時のＣＰＵ２４１のレジスタから取得する（ステップ７０１）。例えば、ＯＳ２１５がＡＲＭプロセッサ向けのＬｉｎｕｘ（登録商標）の場合、レジスタｒ７にシステムコール番号が設定され、レジスタｒ０〜ｒ６に引数が設定される。これらのレジスタからシステムコールの種類と引数を取得できる。システムコールの呼び出し規則は、ＶＭ２０１上のＯＳ２１５によって異なるため、ＯＳ２１５に応じてシステムコールの種類と引数の取得方法は異なる。
【００３９】
次に、システムコールの種類をチェックする（ステップ７０２，７０３）。システムコールの種類がｅｘｅｃｖｅ又はｏｐｅｎであれば（ステップ７０２，ＹＥＳ）、引数のファイル名を、業務ＡＰ情報２２１の各エントリの業務ＡＰ特定情報に設定されたファイル名と比較する（ステップ７０５）。
【００４０】
引数のファイル名が１つのエントリの業務ＡＰ特定情報のファイル名と一致すれば（ステップ７０５，ＹＥＳ）、その業務ＡＰが実行されることが分かる。そこで、ＭＭＵ２４２に現在設定されているページテーブル（現在のページテーブル）の物理アドレスを、そのエントリの実行時情報に設定する（ステップ７０６）。そして、ＯＳ２１５へ処理を移し、システムコールの処理を再開させる（ステップ７０４）。一方、引数のファイル名がいずれのエントリのファイル名とも一致しなければ（ステップ７０５，ＮＯ）、ステップ７０４の処理を行う。
【００４１】
システムコールの種類がｅｘｅｃｖｅ又はｏｐｅｎのいずれでもなく（ステップ７０２，ＮＯ）、ｅｘｉｔであれば（ステップ７０３，ＹＥＳ）、現在のページテーブルの物理アドレスを取得する（ステップ７０７）。そして、その物理アドレスを、業務ＡＰ情報２２１の各エントリの実行時情報と比較する（ステップ７０８）。
【００４２】
物理アドレスが１つのエントリの実行時情報と一致すれば（ステップ７０８，ＹＥＳ）、業務ＡＰが終了されることが分かる。そこで、そのエントリの実行時情報を削除して空に設定し（ステップ７０９）、ステップ７０４の処理を行う。一方、物理アドレスがいずれのエントリの実行時情報とも一致しなければ（ステップ７０８，ＮＯ）、ステップ７０４の処理を行う。
【００４３】
システムコールの種類がｅｘｅｃｖｅ、ｏｐｅｎ、又はｅｘｉｔのいずれでもなければ（ステップ７０２，ＮＯ及びステップ７０３，ＮＯ）、ステップ７０４の処理を行う。
【００４４】
図７では、業務ＡＰの実行開始を特定するために、システムコールｅｘｅｃｖｅとｏｐｅｎを例に挙げているが、その理由は以下のとおりである。Ｌｉｎｕｘでは、アプリケーションを実行する際に、まず、システムコールｆｏｒｋにより新たなプロセスが生成され、新たなプロセス上でｅｘｅｃｖｅによりアプリケーションをロードして実行する。したがって、ｅｘｅｃｖｅをチェックすることで、アプリケーションの実行開始を特定することができる。
【００４５】
また、Ａｎｄｒｏｉｄ（登録商標）アプリケーションの場合は、Ｚｙｇｏｔｅというプロセスがｆｏｒｋにより新たなプロセスを生成し、新たなプロセス上で実行ファイルをｏｐｅｎ、ｒｅａｄしてメモリに展開することで、アプリケーションが実行される。したがって、ｏｐｅｎをチェックすることで、アプリケーションの実行開始を特定することができる。
【００４６】
図８は、ハイパーバイザ２０２のコンテキストスイッチ処理部２３２が行う処理の例を示すフローチャートである。コンテキストスイッチ処理部２３２は、業務ＡＰ情報２２１とドメイン情報２２３を用いて、ＶＭ２０１上で動作するＡＰに応じてＭＭＵ２４２のドメイン設定を設定する。コンテキストスイッチ（プロセスの切替）自体は、ＯＳ２１５又はハイパーバイザ２０１により行われる。
【００４７】
コンテキストスイッチ処理部２３２は、ＯＳ２１５により行われるコンテキストスイッチを契機に処理を開始する。ＣＰＵ２４１の機能により、コンテキストスイッチ発生時のページテーブルの切替処理はハイパーバイザ２０２へ移される。
【００４８】
コンテキストスイッチ処理部２３２は、まず、業務ＡＰ情報２２１の各エントリの実行時情報を参照して、業務ＡＰが実行中であるか否かをチェックする（ステップ８０１）。実行時情報が空であれば、その業務ＡＰは実行中ではないと判定され、実行時情報が空でなければ、その業務ＡＰは実行中であると判定される。
【００４９】
いずれのエントリの業務ＡＰも実行中でなければ（ステップ８０１，ＮＯ）、ドメイン情報２２３に基づいて、業務ＡＰ用のドメイン設定をＭＭＵ２４２に設定する（ステップ８０４）。
【００５０】
一方、いずれかのエントリの業務ＡＰが実行中であれば（ステップ８０１，ＹＥＳ）、コンテキストスイッチによる切替先のページテーブルの物理アドレスを取得する（ステップ８０２）。ここでは、既にコンテキストスイッチが実行されていることを想定しているため、現在のページテーブルの物理アドレスが取得される。
【００５１】
次に、そのページテーブルの物理アドレスを、業務ＡＰ情報２２１の各エントリの実行時情報と比較する（ステップ８０３）。ページテーブルの物理アドレスがいずれかのエントリの実行時情報と一致すれば（ステップ８０３，ＹＥＳ）、ステップ８０４の処理を行う。
【００５２】
一方、ページテーブルの物理アドレスがいずれのエントリの実行時情報とも一致しなければ（ステップ８０３，ＮＯ）、ドメイン情報２２３に基づいて、業務ＡＰ以外のＡＰ用のドメイン設定をＭＭＵ２４２に設定する（ステップ８０５）。これにより、図６のドメイン番号０、１、及び２に対してアクセス不可がＭＭＵ２４２に設定されるため、業務ＡＰ以外のＡＰからこれらのドメインへのアクセスにおいて、ドメインフォールトが発生するようになる。
【００５３】
図９は、ハイパーバイザ２０２のフォールト処理部２３３が行う処理の例を示すフローチャートである。フォールト処理部２３３は、業務ＡＰ情報２２１、メモリ制限情報２２２、ドメイン情報２２３を用いて、フォールトが発生したメモリアクセスのアクセス可否を判定し、アクセス可であればドメイン番号を変換することで、以降のメモリアクセスを可能にする。フォールト処理部２３３は、ＶＭ２０１におけるメモリアクセスに対して発生したフォールトを契機として処理を開始する。
【００５４】
フォールト処理部２３３は、まず、現在のページテーブルの物理アドレスを取得し（ステップ９０１）、その物理アドレスを業務ＡＰ情報２２１の各エントリの実行時情報と比較する（ステップ９０２）。ページテーブルの物理アドレスがいずれかのエントリの実行時情報と一致すれば（ステップ９０２，ＹＥＳ）、ＯＳ２１５が処理すべきフォールトとしてＶＭ２０１に通知する（ステップ９０４）。
【００５５】
一方、ページテーブルの物理アドレスがいずれのエントリの実行時情報とも一致しなければ（ステップ９０２，ＮＯ）、発生したフォールトの種類をチェックする（ステップ９０３）。そして、発生したフォールトがドメインフォールトでなければ（ステップ９０３，ＮＯ）、ステップ９０４の処理を行う。
【００５６】
発生したフォールトがドメインフォールトであれば（ステップ９０３，ＹＥＳ）、ＭＭＵ２４２から、フォールトの原因となったアクセス先の仮想アドレスを取得する（ステップ９０５）。そして、現在のページテーブルから、その仮想アドレスに対応するエントリを取得する（ステップ９０６）。
【００５７】
次に、そのエントリのドメイン番号をチェックする（ステップ９０７）。ドメイン番号がドメイン番号変換テーブルに設定された変換ドメイン番号でなければ（ステップ９０７，ＮＯ）、取得したエントリから、実際のアクセス先である物理アドレスを取得する（ステップ９０８）。そして、メモリ制限情報２２２に基づいて、その物理アドレスとフォールトの原因となった仮想アドレスへのアクセスが許可されているか否かをチェックする（ステップ９０９）。
【００５８】
アクセスが許可されていなければ（ステップ９０９，ＮＯ）、ステップ９０４の処理を行う。アクセスが許可されていれば（ステップ９０９，ＹＥＳ）、ドメイン番号変換テーブルに従って、取得したエントリのドメイン番号を変換ドメイン番号に変更し、現在のページテーブルを更新する（ステップ９１０）。そして、フォールト発生前の状態からＶＭ２０１の処理を再開させる（ステップ９１１）。
【００５９】
例えば、図６のドメイン設定においては、図５の変換ドメイン番号５、６、及び７に対してページテーブルに従う旨が設定されている。したがって、ドメイン番号を変換ドメイン番号に変更することで、業務ＡＰ以外のＡＰから変更後のドメインへのアクセスにおいて、ドメインフォールトが発生しなくなる。
【００６０】
一方、ドメイン番号がドメイン番号変換テーブルに設定された変換ドメイン番号であれば（ステップ９０７，ＹＥＳ）、ステップ９０４の処理を行う。
このような情報処理装置によれば、業務ＡＰが実行されているときには、業務ＡＰ以外のＡＰは、アクセスを許可されたメモリ領域以外の領域にアクセスすることができなくなる。したがって、１つのＶＭ上で業務ＡＰと業務ＡＰ以外のＡＰを実行しながら、業務ＡＰが使用するメモリ領域への業務ＡＰ以外のＡＰからのアクセスを制限することができる。また、業務ＡＰ用に別のＶＭを設ける必要がないため、メモリ消費を抑えることができる。
【００６１】
ところで、図２の情報処理装置において、業務ＡＰの実行に応じてメモリ制限情報２２２を動的に生成することも可能である。業務ＡＰ毎にアクセス制限するメモリ領域が異なる場合、メモリ制限情報２２２を動的に生成することで、メモリ制限情報２２２を容易に設定することができる。
【００６２】
図１０は、このような情報処理装置の機能及びハードウェアの構成例を示している。図１０の情報処理装置は、図２のハイパーバイザ２０２をハイパーバイザ１００１に置き換えた構成を有する。
【００６３】
ハイパーバイザ１００１は、図２の業務ＡＰ特定部２３１、コンテキストスイッチ処理部２３２、及びフォールト処理部２３３に加えて、メモリ制限生成部１０２１及びページテーブル処理部１０２２を含む。ハイパーバイザ１００１は、業務ＡＰ情報２２１、メモリ制限情報２２２、ドメイン情報２２３、及びテーブル情報１０１１を用いて、メモリアクセス制御を行う。
【００６４】
図１１は、業務ＡＰ情報２２１の例を示している。図１１の業務ＡＰ情報は、図３の業務ＡＰ特定情報及び実行時情報に加えて、不許可物理アドレス、不許可仮想アドレス、及び許可仮想アドレスを含む。不許可物理アドレス、不許可仮想アドレス、及び許可仮想アドレスは、アクセス制限としてあらかじめ設定される。エントリ１１０１及び１１０２は、それぞれ業務ＡＰ２１３及び２１４の業務ＡＰ情報を表す。
【００６５】
不許可物理アドレスは、そのエントリの業務ＡＰ以外のＡＰからのアクセスを拒否する物理アドレスの領域を表す。不許可仮想アドレスは、その業務ＡＰ以外のＡＰからのアクセスを拒否する仮想アドレスの領域を表す。許可仮想アドレスは、その業務ＡＰ以外のＡＰからのアクセスを許可する仮想アドレスの領域を表す。不許可物理アドレス、不許可仮想アドレス、及び許可仮想アドレスとして、それぞれ複数の領域を指定することが可能である。
【００６６】
図１２は、テーブル情報１０１１の例を示している。図１２のテーブル情報は、ページテーブル情報と置換ページテーブル情報の組を含む。ページテーブル情報は、業務ＡＰ以外のＡＰのページテーブルの物理アドレスを表す。置換ページテーブル情報は、業務ＡＰが実行されているときに、業務ＡＰ以外のＡＰのページテーブルを置換する置換ページテーブルの物理アドレスを表す。
【００６７】
図１２のエントリ１２０１は、業務ＡＰの実行時に、物理アドレス０ｘ８００２００００のページテーブルが、物理アドレス０ｘ８１０２００００の置換ページテーブルに置き換えられることを示している。また、エントリ１２０２は、業務ＡＰの実行時に、物理アドレス０ｘ８００２８０００のページテーブルが、物理アドレス０ｘ８１０２８０００の置換ページテーブルに置き換えられることを示している。
【００６８】
図１３は、ハイパーバイザ１００１の業務ＡＰ特定部２３１が行う処理の例を示すフローチャートである。図１３のステップ１３０１〜１３０６及び１３０９〜１３１１の処理は、図７のステップ７０１〜７０６及び７０７〜７０９の処理と同様である。
【００６９】
業務ＡＰ特定部２３１は、ステップ１３０６の処理の後、メモリ制限生成部１０２１を呼び出す（ステップ１３０７）。そして、メモリ制限生成部１０２１の処理が終了すると、ステップ１３０４の処理を行う。
【００７０】
一方、システムコールの引数のファイル名が、業務ＡＰ情報２２１のいずれのエントリのファイル名とも一致しなければ（ステップ１３０５，ＮＯ）、テーブル情報１０１１にエントリを追加する（ステップ１３０８）。そして、そのエントリのページテーブル情報に現在のページテーブルの物理アドレスを設定し、置換ページテーブルのためのメモリ領域を確保して、その物理アドレスを置換ページテーブル情報に設定する。さらに、現在のページテーブルを置換ページテーブルへコピーして、ステップ１３０４の処理を行う。
【００７１】
また、ステップ１３１１の処理の後、メモリ制限生成部１０２１を呼び出す（ステップ１３１２）。そして、メモリ制限生成部１０２１の処理が終了すると、ステップ１３０４の処理を行う。
【００７２】
一方、現在のページテーブルの物理アドレスが、業務ＡＰ情報２２１のいずれのエントリの実行時情報とも一致しなければ（ステップ１３１０，ＮＯ）、テーブル情報１０１１を参照する（ステップ１３１３）。そして、現在のページテーブルの物理アドレスと一致するページテーブル情報又は置換ページテーブル情報を有するエントリを、テーブル情報１０１１から削除する。さらに、そのエントリの置換ページテーブル情報が示す置換ページテーブルのメモリ領域を解放して、ステップ１３０４の処理を行う。
【００７３】
図１４は、ハイパーバイザ１００１のメモリ制限生成部１０２１がメモリ制限情報２２２を更新する処理の例を示すフローチャートである。メモリ制限生成部１０２１は、業務ＡＰ情報２２１に基づいて、実行中の業務ＡＰのアクセス制限からメモリ制限情報２２２を生成し、メモリ制限情報２２２の更新に伴って、業務ＡＰ以外のＡＰの置換ページテーブルの内容を初期化する。メモリ制限生成部１０２１は、業務ＡＰ特定部２３１又はページテーブル処理部１０２２から呼び出されて処理を開始する。
【００７４】
メモリ制限生成部１０２１は、まず、メモリ制限情報２２２の不許可物理アドレスと不許可仮想アドレスを削除し、メモリ制限情報２２２を空にする（ステップ１４０１）。
次に、業務ＡＰ情報２２１のエントリを１つずつ繰り返し処理する。業務ＡＰ情報２２１の１つのエントリを取得し（ステップ１４０２）、そのエントリの実行時情報が空か否かをチェックする（ステップ１４０３）。そして、実行時情報が空であれば（ステップ１４０３，ＹＥＳ）、次のエントリを取得する。
【００７５】
エントリの実行時情報が空でなければ（ステップ１４０３，ＮＯ）、メモリ制限情報２２２の不許可物理アドレスと、業務ＡＰ情報２２１のエントリの不許可物理アドレスとの和（ＯＲ）を求め、その結果をメモリ制限情報２２２の不許可物理アドレスに設定する（ステップ１４０４）。２つのアドレス領域の和は、両方のアドレス領域をもれなく含むアドレス領域を表す。
【００７６】
次に、メモリ制限情報２２２の不許可仮想アドレスと、業務ＡＰ情報２２１の不許可仮想アドレスの和を求め、その結果をメモリ制限情報２２２の不許可仮想アドレスに設定する（ステップ１４０５）。
【００７７】
次に、業務ＡＰ情報２２１のエントリの実行時情報に設定されたページテーブルにおいて、そのエントリの不許可仮想アドレスと許可仮想アドレスの領域を除いた仮想アドレスの領域に対応する物理アドレスの領域を求める（ステップ１４０６）。そして、求めた物理アドレスの領域とメモリ制限情報２２２の不許可物理アドレスの和を求め、その結果をメモリ制限情報２２２の不許可物理アドレスに設定する。
【００７８】
そして、業務ＡＰ情報２２１の未処理のエントリが残っているか否かをチェックし（ステップ１４０７）、未処理のエントリがあれば（ステップ１４０７，ＹＥＳ）、ステップ１４０２以降の処理を繰り返す。
【００７９】
未処理のエントリがなければ（ステップ１４０７，ＮＯ）、次に、テーブル情報１０１１のエントリを１つずつ繰り返し処理する。テーブル情報１０１１の１つのエントリを取得し（ステップ１４０８）、そのエントリのページテーブル情報を置換ページテーブル情報へコピーして、置換ページテーブル情報を初期化する（ステップ１４０９）。
【００８０】
そして、テーブル情報１０１１の未処理のエントリが残っているか否かをチェックし（ステップ１４１０）、未処理のエントリがあれば（ステップ１４１０，ＹＥＳ）、ステップ１４０８以降の処理を繰り返す。未処理のエントリがなければ（ステップ１４１０，ＮＯ）、処理を終了する。これにより、呼び出し元の処理が再開される。
【００８１】
図１５及び図１６は、それぞれ業務ＡＰ２１３及び２１４のページテーブルの例を示している。まず、業務ＡＰ２１３のみが実行されている場合、メモリ制限生成部１０２１は、図１１のエントリ１１０１の不許可物理アドレス０ｘ４００００００〜０ｘ５ＦＦＦＦＦＦＦを、メモリ制限情報２２２の不許可物理アドレスに設定する。これにより、図１７に示すように、メモリ制限情報２２２に、不許可物理アドレス０ｘ４００００００〜０ｘ５ＦＦＦＦＦＦＦが設定される。
【００８２】
次に、エントリ１１０１の不許可仮想アドレス０ｘ７０００００００〜０ｘ７００ＦＦＦＦＦを、メモリ制限情報２２２の不許可仮想アドレスに設定する。これにより、図１７の不許可仮想アドレス０ｘ７０００００００〜０ｘ７００ＦＦＦＦＦが設定される。
【００８３】
次に、エントリ１１０１の実行時情報に基づいて図１５のページテーブルを参照し、エントリ１１０１の不許可仮想アドレス０ｘ７０００００００〜０ｘ７００ＦＦＦＦＦと許可仮想アドレス０ｘ６０００００００〜０ｘ６ＦＦＦＦＦＦＦを除いた領域を求める。図１５の仮想アドレスからエントリ１１０１の不許可仮想アドレス及び許可仮想アドレスを除くと、０ｘ００００００００〜０ｘ０００ＦＦＦＦＦ及び０ｘ７０１０００００〜０ｘ７ＦＦＦＦＦＦＦとなる。
【００８４】
そこで、図１５のページテーブルにおいて、求めた仮想アドレスに対応する物理アドレス０ｘ８０２０００００〜０ｘ８０２ＦＦＦＦＦ及び０ｘＡ０１０００００〜０ｘＡＦＦＦＦＦＦＦを、メモリ制限情報２２２の不許可物理アドレスに設定する。これにより、図１７の不許可物理アドレス０ｘ８０２０００００〜０ｘ８０２ＦＦＦＦＦ及び０ｘＡ０１０００００〜０ｘＡＦＦＦＦＦＦＦが設定される。
【００８５】
次に、業務ＡＰ２１３及び２１４の両方が実行されている場合、メモリ制限生成部１０２１は、業務ＡＰ２１３に対して図１７のようなメモリ制限情報２２２を生成する。そして、業務ＡＰ２１４に対しても同様の処理を行う。
【００８６】
図１１のエントリ１１０２の不許可物理アドレスは空であるため、ステップ１４０４では不許可物理アドレスを設定しない。
次に、エントリ１１０２の不許可仮想アドレス０ｘ８１２０００００〜０ｘ８１２ＦＦＦＦＦを、メモリ制限情報２２２の不許可仮想アドレスに設定する。これにより、図１８に示すように、メモリ制限情報２２２に、不許可仮想アドレス０ｘ８１２０００００〜０ｘ８１２ＦＦＦＦＦが設定される。
【００８７】
次に、エントリ１１０２の実行時情報に基づいて図１６のページテーブルを参照し、エントリ１１０２の不許可仮想アドレス０ｘ８１２０００００〜０ｘ８１２ＦＦＦＦＦと許可仮想アドレス０ｘ６０００００００〜０ｘ６００ＦＦＦＦＦを除いた領域を求める。図１６の仮想アドレスからエントリ１１０２の不許可仮想アドレス及び許可仮想アドレスを除くと、０ｘ００００００００〜０ｘ００１ＦＦＦＦＦ及び０ｘ６０１０００００〜０ｘ８１１ＦＦＦＦＦとなる。
【００８８】
そこで、図１６のページテーブルにおいて、求めた仮想アドレスに対応する物理アドレス０ｘ８０３０００００〜０ｘ８０４ＦＦＦＦＦ及び０ｘ９０１０００００〜０ｘＢ１１ＦＦＦＦＦを、メモリ制限情報２２２の不許可物理アドレスに設定する。これにより、図１８の不許可物理アドレス０ｘ８０３０００００〜０ｘ８０４ＦＦＦＦＦ及び０ｘ９０１０００００〜０ｘＢ１１ＦＦＦＦＦが設定される。このとき、既に設定されている図１７の不許可物理アドレス０ｘＡ０１０００００〜０ｘＡＦＦＦＦＦＦＦは、０ｘ９０１０００００〜０ｘＢ１１ＦＦＦＦＦに包含されるので、０ｘＡ０１０００００〜０ｘＡＦＦＦＦＦＦＦは削除される。
【００８９】
図１９は、ハイパーバイザ１００１のコンテキストスイッチ処理部２３２が行う処理の例を示すフローチャートである。図１９のステップ１９０１〜１９０４及び１９０６の処理は、図８のステップ８０１〜８０５の処理と同様である。
【００９０】
コンテキストスイッチ処理部２３２は、現在のページテーブルの物理アドレスが、業務ＡＰ情報２２１のいずれのエントリの実行時情報とも一致しなければ（ステップ１９０３，ＮＯ）、ステップ１９０５の処理を行う。ステップ１９０５では、テーブル情報１０１１において、現在のページテーブルの物理アドレスと一致するページテーブル情報を有するエントリを参照し、そのエントリの置換ページテーブル情報を取得する。そして、その置換ページテーブル情報が示す置換ページテーブルをＭＭＵ２４２に設定し、ステップ１９０６の処理を行う。
【００９１】
なお、図１３のステップ１３０８におけるテーブル情報１０１１のエントリの追加を、コンテキストスイッチ処理部２３２が行うことも可能である。この場合、コンテキストスイッチ処理部２３２は、ステップ１９０５において、現在のページテーブルの物理アドレスと一致するテーブル情報１０１１のエントリがなければ、エントリを追加する。そして、そのエントリのページテーブル情報に現在のページテーブルの物理アドレスを設定し、置換ページテーブルのためのメモリ領域を確保して、その物理アドレスを置換ページテーブル情報に設定する。さらに、現在のページテーブルを置換ページテーブルへコピーする。
【００９２】
ハイパーバイザ１００１のフォールト処理部２３３が行う処理は、図９のフローチャートと同様である。
【００９３】
図２０は、ハイパーバイザ１００１のページテーブル処理部１０２２が行う処理の例を示すフローチャートである。ページテーブル処理部１０２２は、ＶＭ２０１上のＯＳ２１５が業務ＡＰ以外のＡＰのページテーブルを変更する際に、それに合わせて置換ページテーブルを変更する。また、ＯＳ２１５が業務ＡＰのページテーブルを変更する際に、メモリ制限情報２２２を再生成する。
【００９４】
ページテーブル処理部１０２２は、ＯＳ２１５により行われるページテーブルの変更を契機に処理を開始する。例えば、準仮想化システムの場合、ＯＳ２１５がページテーブルを変更するときは、システムコールであるハイパーコールにより、ハイパーバイザ１００１へページテーブルの変更を依頼することができる。したがって、ページテーブル処理部１０２２が処理を開始する契機は、ハイパーコールの発行となる。
【００９５】
一方、完全仮想化システムの場合、ＶＭ２０１におけるページテーブルの変更によりハイパーバイザ１００１へ処理を移すために、ページフォールトを発生させる方法が考えられる。この場合、業務ＡＰ特定部２３１が現在のページテーブルを特定したときに、そのページテーブルとして使用されている物理アドレスがマップされている仮想アドレスを求める。そして、その仮想アドレスへのアクセスをリードオンリーに変更する。これにより、ＯＳ２１５がそのページテーブルを変更するためにアクセスする際に、ページフォールトが発生するようになる。
【００９６】
多段ページングの場合は、１段目のページテーブルから参照される２段目以降のページテーブルの物理アドレスから仮想アドレスを求め、その仮想アドレスへのアクセスをリードオンリーに変更する。また、ページテーブル処理部１０２２が２段目以降のページテーブルのエントリを追加する場合にも、同様にしてリードオンリーへの変更を行う。
【００９７】
ページテーブル処理部１０２２は、まず、変更対象のページテーブルのエントリを更新する（ステップ２００１）。このとき、準仮想化システムの場合は、ハイパーコールにより指定されたエントリの更新を行う。一方、完全仮想化システムの場合は、ページフォールトが発生した際の実行アドレスから実行対象の命令を取得し、その命令により指定されたエントリの更新を行う。
【００９８】
次に、業務ＡＰ情報２２１の各エントリの実行時情報を参照して、業務ＡＰが実行中であるか否かをチェックする（ステップ２００２）。いずれのエントリの業務ＡＰも実行中でなければ（ステップ２００２，ＮＯ）、処理を終了する。
【００９９】
一方、いずれかのエントリの業務ＡＰが実行中であれば（ステップ２００２，ＹＥＳ）、現在のページテーブルの物理アドレスを取得する（ステップ２００３）。そして、そのページテーブルの物理アドレスを、業務ＡＰ情報２２１の各エントリの実行時情報と比較する（ステップ２００４）。ページテーブルの物理アドレスがいずれかのエントリの実行時情報と一致すれば（ステップ２００４，ＹＥＳ）、メモリ制限生成部１０２１を呼び出す（ステップ２００５）。
【０１００】
一方、ページテーブルの物理アドレスがいずれのエントリの実行時情報とも一致しなければ（ステップ２００４，ＮＯ）、テーブル情報１０１１において、その物理アドレスと一致するページテーブル情報を有するエントリを参照する（ステップ２００６）。そして、そのエントリの置換ページテーブル情報を取得する。次に、変更対象のページテーブル内の更新されたエントリまでのオフセットを求め、置換ページテーブル内の同じオフセットのエントリを、同様に更新する（ステップ２００７）。
【０１０１】
ＡＲＭプロセッサのドメイン番号は１段目のページテーブルのみに設定可能なため、２段目のページテーブルについては、置換ページテーブルを設ける必要がない。したがって、２段目のページテーブルとしては、ＶＭ２０１により使用されているページテーブルをそのまま使用することができる。
【０１０２】
このような情報処理装置によれば、業務ＡＰの実行に応じてメモリ制限情報２２２を動的に生成することが可能になり、アクセスを制限するメモリ領域の範囲を適切に保つことができる。
【０１０３】
なお、図１４の処理により生成されたメモリ制限情報２２２が、更新前のメモリ制限情報２２２と同じであれば、ステップ１４０８〜１４１０の処理を省略してもよい。また、図２０の処理において、ページテーブルのエントリの更新がメモリ制限情報２２２に影響を与えるか否かを業務ＡＰ情報２２１に基づいて判定し、影響を与える場合にメモリ制限生成部１０２１を呼び出してもよい。
【０１０４】
ところで、図２及び図１０の情報処理装置では、ドメイン設定を利用してメモリアクセス制御を行っているが、ドメイン設定を有しない情報処理装置においても、同様のメモリアクセス制御を行うことが可能である。
【０１０５】
図２１は、このような情報処理装置の機能及びハードウェアの構成例を示している。図２１の情報処理装置は、図１０のハイパーバイザ１００１をハイパーバイザ２１０１に置き換えた構成を有する。
【０１０６】
ハイパーバイザ２１０１は、図１０の業務ＡＰ特定部２３１、コンテキストスイッチ処理部２３２、フォールト処理部２３３、メモリ制限生成部１０２１、及びページテーブル処理部１０２２を含む。ハイパーバイザ２１０１は、業務ＡＰ情報２２１、メモリ制限情報２２２、及びテーブル情報１０１１を用いて、メモリアクセス制御を行う。
【０１０７】
図２２は、テーブル情報１０１１の例を示している。図２２のテーブル情報は、図１２のページテーブル情報及び置換ページテーブル情報に加えて、２段目ページテーブル情報を含む。２段目ページテーブル情報は、置換ページテーブルから参照される２段目以降のページテーブルの物理アドレスを表す。
【０１０８】
２段目以降のページテーブルのサイズが固定サイズである場合、テーブル情報にそのサイズを保持する必要はない。複数のサイズのページテーブルを用いる場合は、テーブル情報にそのサイズを保持するようにしてもよい。
【０１０９】
図２２のエントリ２２０１のページテーブル情報及び置換ページテーブル情報は、図１２のエントリ１２０１と同様である。エントリ２２０１の２段目ページテーブル情報は、物理アドレス０ｘ８１０５００００及び０ｘ８１０５１０００に格納された２つのページテーブルが、２段目のページテーブルとして使用されていることを示している。
【０１１０】
エントリ２２０２のページテーブル情報及び置換ページテーブル情報は、図１２のエントリ１２０２と同様である。エントリ２２０２の２段目ページテーブル情報は、物理アドレス０ｘ８１０５７０００に格納されたページテーブルが、２段目のページテーブルとして使用されていることを示している。
【０１１１】
図２３は、ハイパーバイザ２１０１の業務ＡＰ特定部２３１が行う処理の例を示すフローチャートである。図２３のステップ２３０１〜２３０７及び２３０９〜２３１２の処理は、図１３のステップ１３０１〜１３０７及び１３０９〜１３１２の処理と同様である。
【０１１２】
業務ＡＰ特定部２３１は、システムコールの引数のファイル名が、業務ＡＰ情報２２１のいずれのエントリのファイル名とも一致しなければ（ステップ２３０５，ＮＯ）、テーブル情報１０１１にエントリを追加する（ステップ２３０８）。そして、そのエントリのページテーブル情報に現在のページテーブルの物理アドレスを設定し、置換ページテーブルのためのメモリ領域を確保して、その物理アドレスを置換ページテーブル情報に設定する。さらに、置換ページテーブルの内容を空にして、ステップ２３０４の処理を行う。
【０１１３】
また、現在のページテーブルの物理アドレスが、業務ＡＰ情報２２１のいずれのエントリの実行時情報とも一致しなければ（ステップ２３１０，ＮＯ）、テーブル情報１０１１を参照する（ステップ２３１３）。そして、現在のページテーブルの物理アドレスと一致するページテーブル情報又は置換ページテーブル情報を有するエントリを、テーブル情報１０１１から削除する。さらに、そのエントリの置換ページテーブル情報が示す置換ページテーブルのメモリ領域と、２段目ページテーブル情報が示す２段目以降のページテーブルのメモリ領域を解放し、ステップ２３０４の処理を行う。
【０１１４】
図２４は、ハイパーバイザ２１０１のメモリ制限生成部１０２１が行う処理の例を示すフローチャートである。図２４のステップ２４０１〜２４０８及び２４１２の処理は、図１４のステップ１４０１〜１４０８及び１４１０の処理と同様である。
【０１１５】
メモリ制限生成部１０２１は、テーブル情報１０１１の１つのエントリを取得すると（ステップ２４０８）、そのエントリの２段目ページテーブル情報が空か否かをチェックする（ステップ２４０９）。２段目ページテーブル情報が空でなければ（ステップ２４０９，ＮＯ）、２段目ページテーブル情報が示す２段目以降のページテーブルのメモリ領域を解放する（ステップ２４１０）。そして、そのエントリの置換ページテーブル情報が示す置換ページテーブルの内容を空にする（ステップ２４１１）。２段目ページテーブル情報が空であれば（ステップ２４０９，ＹＥＳ）、ステップ２４１１以降の処理を行う。
【０１１６】
図２５は、ハイパーバイザ２１０１のコンテキストスイッチ処理部２３２が行う処理の例を示すフローチャートである。図２５のステップ２５０１〜２５０３及び２５０４の処理は、図１９のステップ１９０１〜１９０３及び１９０５の処理と同様である。
【０１１７】
コンテキストスイッチ処理部２３２は、業務ＡＰ情報２２１のいずれのエントリの業務ＡＰも実行中でなければ（ステップ２５０１，ＮＯ）、処理を終了する。また、現在のページテーブルの物理アドレスがいずれかのエントリの実行時情報と一致すれば（ステップ２５０３，ＹＥＳ）、処理を終了する。さらに、ステップ２５０４の処理の後も処理を終了する。
【０１１８】
ステップ２５０４では、ステップ２３０８又は２４１１で空に設定された置換ページテーブルがＭＭＵ２４２に設定される。これにより、業務ＡＰ以外のＡＰからのメモリアクセスにおいてフォールトが発生するようになる。
【０１１９】
なお、図２３のステップ２３０８におけるテーブル情報１０１１のエントリの追加を、コンテキストスイッチ処理部２３２が行うことも可能である。この場合、コンテキストスイッチ処理部２３２は、ステップ２５０４において、現在のページテーブルの物理アドレスと一致するテーブル情報１０１１のエントリがなければ、エントリを追加する。そして、そのエントリのページテーブル情報に現在のページテーブルの物理アドレスを設定し、置換ページテーブルのためのメモリ領域を確保して、その物理アドレスを置換ページテーブル情報に設定する。さらに、その置換ページテーブルの内容を空にする。
【０１２０】
図２６は、ハイパーバイザ２１０１のフォールト処理部２３３が行う処理の例を示すフローチャートである。図２６のステップ２６０１〜２６０２、２６０３〜２６０５、２６１０、及び２６１２の処理は、図９のステップ９０１〜９０２、９０４〜９０６、９０９、及び９１１の処理と同様である。
【０１２１】
フォールト処理部２３３は、現在のページテーブルの物理アドレスが業務ＡＰ情報２２１のいずれかのエントリの実行時情報と一致すれば（ステップ２６０２，ＹＥＳ）、ステップ２６０３の処理を行う。
【０１２２】
一方、業務ＡＰ以外のＡＰが実行中にフォールトが発生した場合は、現在のページテーブルは置換ページテーブルであり、ステップ２６０１では置換ページテーブルの物理アドレスが取得される。そこで、現在のページテーブルの物理アドレスがいずれのエントリの実行時情報とも一致しなければ（ステップ２６０２，ＮＯ）、ステップ２６０４以降の処理を行う。
【０１２３】
現在のページテーブルから、フォールトの原因となったアクセス先の仮想アドレスに対応するエントリを取得すると（ステップ２６０５）、そのエントリが空か否かをチェックする（ステップ２６０６）。エントリが空でなければ（ステップ２６０６，ＮＯ）、ステップ２６０３の処理を行う。
【０１２４】
エントリが空であれば（ステップ２６０６，ＹＥＳ）、テーブル情報１０１１において、現在のページテーブルの物理アドレスと一致する置換ページテーブル情報を有するエントリを参照し、そのエントリのページテーブル情報を取得する（ステップ２６０７）。そして、そのページテーブル情報が示すページテーブルから、フォールトの原因となった仮想アドレスに対応するエントリを取得し（ステップ２６０８）、そのエントリが空か否かをチェックする（ステップ２６０９）。エントリが空であれば（ステップ２６０９，ＹＥＳ）、ステップ２６０３の処理を行う。
【０１２５】
エントリが空でなければ（ステップ２６０９，ＮＯ）、そのエントリから実際のアクセス先である物理アドレスを取得する。そして、メモリ制限情報２２２に基づいて、その物理アドレスとフォールトの原因となった仮想アドレスへのアクセスが許可されているか否かをチェックする（ステップ２６１０）。
【０１２６】
アクセスが許可されていなければ（ステップ２６１０，ＮＯ）、ステップ２６０３の処理を行う。アクセスが許可されていれば（ステップ２６１０，ＹＥＳ）、ページテーブルのエントリを置換ページテーブルのエントリへコピーし（ステップ２６１１）、ステップ２６１２の処理を行う。
【０１２７】
テーブル情報１０１１により指定されるページテーブルのエントリを置換ページテーブルのエントリへコピーすることで、業務ＡＰ以外のＡＰからのメモリアクセスにおいてフォールトが発生しなくなる。
【０１２８】
なお、２段目のページテーブルのエントリでフォールトが発生した場合には、フォールト処理部２３３は、ステップ２６１１において、新たな２段目のページテーブルのメモリ領域を確保する。そして、置換ページテーブルのエントリとして、新たな２段目のページテーブルを参照するようなエントリを生成し、ページテーブルから参照される２段目のページテーブルのエントリを、新たな２段目のページテーブルのエントリへコピーする。
【０１２９】
図２７は、ハイパーバイザ２１０１のページテーブル処理部１０２２が行う処理の例を示すフローチャートである。図２７のステップ２７０１〜２７０６の処理は、図２０のステップ２００１〜２００６の処理と同様である。
【０１３０】
ページテーブル処理部１０２２は、テーブル情報１０１１から置換ページテーブル情報を取得すると（ステップ２７０６）、変更対象のページテーブル内の更新されたエントリまでのオフセットを求める（ステップ２７０７）。そして、置換ページテーブル内の同じオフセットのエントリを空に更新する。
【０１３１】
このような情報処理装置によれば、図１０の情報処理装置と同様に、業務ＡＰの実行に応じてメモリ制限情報２２２を動的に生成することが可能になり、アクセスを制限するメモリ領域の範囲を適切に保つことができる。また、ドメイン設定を有しない情報処理装置においても、メモリアクセス制御を行うことが可能になる。
【０１３２】
なお、図２４の処理により生成されたメモリ制限情報２２２が、更新前のメモリ制限情報２２２と同じであれば、ステップ２４０８〜２４１２の処理を省略してもよい。また、図２７の処理において、ページテーブルのエントリの更新がメモリ制限情報２２２に影響を与えるか否かを業務ＡＰ情報２２１に基づいて判定し、影響を与える場合にメモリ制限生成部１０２１を呼び出してもよい。
【０１３３】
図２８は、別の情報処理装置の機能的構成例を示している。図２８の情報処理装置２８０１は、格納部２８１１及び制御部２８１２を含む。
格納部２８１１は、中間物理アドレスをメモリの物理アドレスへ変換する変換テーブルを、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限するための置換変換テーブルに置換するテーブル情報を格納する。
【０１３４】
制御部２８１２は、第２のプログラムを実行するときに第１のプログラムが実行中か否かを判定し、第１のプログラムが実行中である場合、テーブル情報に基づいてメモリ管理ユニットに置換変換テーブルを設定する。
【０１３５】
このような情報処理装置によれば、第１のプログラム及び第２のプログラムを実行する場合に、メモリ消費を抑えながら、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限することができる。
【０１３６】
図２９は、中間物理アドレスを物理アドレスへ変換する変換テーブルを有する情報処理装置の機能及びハードウェアの構成例を示している。図２９の情報処理装置は、図１０のハイパーバイザ１００１をハイパーバイザ２９０１に置き換えた構成を有する。
【０１３７】
ハイパーバイザ２９０１は、図１０の業務ＡＰ特定部２３１、コンテキストスイッチ処理部２３２、フォールト処理部２３３、メモリ制限生成部１０２１、及びページテーブル処理部１０２２を含む。ハイパーバイザ２９０１は、業務ＡＰ情報２２１、メモリ制限情報２２２、及びテーブル情報２９１１を用いて、メモリアクセス制御を行う。
【０１３８】
図２９の情報処理装置において、ＣＰＵ２４１及びＭＭＵ２４２は、ＶＭ２０１から見た仮想的な物理アドレスである中間物理アドレスを、実際の物理アドレスへハードウェアで変換する機能を有する。この変換に使用するテーブルは、変換テーブルと呼ばれる。業務ＡＰと業務ＡＰ以外のＡＰとの間で変換テーブルを切り替えることで、メモリアクセス制御が行われる。また、ＶＭ毎に変換テーブルを保持することで、各ＶＭに割り当てるメモリ２４３の領域を制御することができる。
【０１３９】
図３０は、業務ＡＰ情報２２１の例を示している。図３０の業務ＡＰ情報は、図１１の業務ＡＰ情報から不許可仮想アドレスを除いた構成を有する。変換テーブルを切り替えてメモリアクセス制御が行われるため、変換テーブルに設定可能な物理アドレスを用いてアクセス制限が設定される。この場合、仮想アドレスのアクセス制限に関する不許可仮想アドレスは不要である。不許可物理アドレスと許可仮想アドレスは、メモリ制限情報２２２の不許可物理アドレスを求めるために使用される。
【０１４０】
図３１は、メモリ制限情報２２２の例を示している。図３１のメモリ制限情報は、図４のメモリ制限情報から不許可仮想アドレスを除いた構成を有する。メモリ制限情報２２２は、業務ＡＰ用にあらかじめ設定されるか、又はメモリ制限生成部１０２１により動的に生成される。
【０１４１】
図３２は、テーブル情報２９１１の例を示している。図３２のテーブル情報は、変換テーブル情報と置換変換テーブル情報の組を含む。変換テーブル情報は、業務ＡＰが実行中でないとき、及び業務ＡＰが実行中で業務ＡＰがカレントプロセスのときの変換テーブルの物理アドレスを表す。置換変換テーブル情報は、業務ＡＰが実行中で業務ＡＰ以外のＡＰがカレントプロセスのときに、変換テーブルを置換する置換変換テーブルの物理アドレスを表す。
【０１４２】
図３２のエントリ３２０１は、物理アドレス０ｘ８００２００００の変換テーブルが、物理アドレス０ｘ８００４００００の置換変換テーブルに置き換えられることを示している。置換変換テーブルのメモリ領域は、例えば、ＶＭ２０１が動作を開始する際にあらかじめ確保される。
【０１４３】
図３３は、ハイパーバイザ２９０１の業務ＡＰ特定部２３１が行う処理の例を示すフローチャートである。図３３のステップ３３０１〜３３１１の処理は、図２３のステップ２３０１〜２３０７及び２３０９〜２３１２の処理と同様である。
【０１４４】
業務ＡＰ特定部２３１は、システムコールの引数のファイル名が、業務ＡＰ情報２２１のいずれのエントリのファイル名とも一致しなければ（ステップ３３０５，ＮＯ）、ステップ３３０４の処理を行う。
【０１４５】
また、現在のページテーブルの物理アドレスが、業務ＡＰ情報２２１のいずれのエントリの実行時情報とも一致しなければ（ステップ３３０９，ＮＯ）、ステップ３３０４の処理を行う。
【０１４６】
図３４は、ハイパーバイザ２９０１のメモリ制限生成部１０２１が行う処理の例を示すフローチャートである。メモリ制限生成部１０２１は、業務ＡＰ情報２２１に基づいて、実行中の業務ＡＰのアクセス制限からメモリ制限情報２２２を生成し、メモリ制限情報２２２の更新に伴って、業務ＡＰ以外のＡＰの置換変換テーブルの内容を更新する。
【０１４７】
メモリ制限生成部１０２１は、業務ＡＰ特定部２３１又はページテーブル処理部１０２２から呼び出されて処理を開始する。
メモリ制限生成部１０２１は、まず、メモリ制限情報２２２の不許可物理アドレスを削除し、メモリ制限情報２２２を空にする（ステップ３４０１）。
【０１４８】
次に、業務ＡＰ情報２２１のエントリを１つずつ繰り返し処理する。業務ＡＰ情報２２１の１つのエントリを取得し（ステップ３４０２）、そのエントリの実行時情報が空か否かをチェックする（ステップ３４０３）。そして、実行時情報が空であれば（ステップ３４０３，ＹＥＳ）、次のエントリを取得する。
【０１４９】
エントリの実行時情報が空でなければ（ステップ３４０３，ＮＯ）、メモリ制限情報２２２の不許可物理アドレスと、業務ＡＰ情報２２１のエントリの不許可物理アドレスとの和を求め、その結果をメモリ制限情報２２２の不許可物理アドレスに設定する（ステップ３４０４）。
【０１５０】
次に、業務ＡＰ情報２２１のエントリの実行時情報に設定されたページテーブルにおいて、そのエントリの許可仮想アドレスの領域を除いた仮想アドレスの領域に対応する物理アドレスの領域を求める（ステップ３４０５）。そして、求めた物理アドレスの領域とメモリ制限情報２２２の不許可物理アドレスの和を求め、その結果をメモリ制限情報２２２の不許可物理アドレスに設定する。
【０１５１】
そして、業務ＡＰ情報２２１の未処理のエントリが残っているか否かをチェックし（ステップ３４０６）、未処理のエントリがあれば（ステップ３４０６，ＹＥＳ）、ステップ３４０２以降の処理を繰り返す。
【０１５２】
未処理のエントリがなければ（ステップ３４０６，ＮＯ）、テーブル情報２９１１の変換テーブル情報が示す変換テーブルの内容を、置換変換テーブル情報が示す置換変換テーブルへコピーして、置換ページテーブルを初期化する（ステップ３４０７）。そして、置換変換テーブルのエントリのうち、メモリ制限情報２２２の不許可物理アドレスへの変換を表すエントリを空に変更して（ステップ３４０８）、処理を終了する。これにより、呼び出し元の処理が再開される。
【０１５３】
置換変換テーブルにおいて不許可物理アドレスへの変換を表すエントリを空に変更することで、業務ＡＰ以外のＡＰからのメモリアクセスにおいてフォールトが発生するようになり、メモリアクセスを制限することができる。
【０１５４】
図３５は、ハイパーバイザ２９０１のコンテキストスイッチ処理部２３２が行う処理の例を示すフローチャートである。図３５のステップ３５０１〜３５０３の処理は、図２５のステップ２５０１〜２５０３の処理と同様である。
【０１５５】
コンテキストスイッチ処理部２３２は、業務ＡＰ情報２２１のいずれのエントリの業務ＡＰも実行中でなければ（ステップ３５０１，ＮＯ）、テーブル情報２９１１の変換テーブル情報が示す変換テーブルをＭＭＵ２４２に設定する（ステップ３５０４）。また、現在のページテーブルの物理アドレスがいずれかのエントリの実行時情報と一致すれば（ステップ３５０３，ＹＥＳ）、ステップ３５０４の処理を行う。
【０１５６】
一方、現在のページテーブルの物理アドレスがいずれのエントリの実行時情報とも一致しなければ（ステップ３５０３，ＮＯ）、テーブル情報２９１１の置換変換テーブル情報が示す置換変換テーブルをＭＭＵ２４２に設定する（ステップ３５０５）。
【０１５７】
図３６は、ハイパーバイザ２９０１のフォールト処理部２３３が行う処理の例を示すフローチャートである。
図２９の構成では、業務ＡＰと業務ＡＰ以外のＡＰとの間で変換テーブルを切り替えることでメモリアクセス制御が行われるため、メモリアクセスの可否を判定する必要はない。そこで、フォールト処理部２３３は、フォールトが発生すると、ＯＳ２１５が処理すべきフォールトとしてＶＭ２０１に通知する（ステップ３６０１）。
【０１５８】
図３７は、ハイパーバイザ２９０１のページテーブル処理部１０２２が行う処理の例を示すフローチャートである。図３７のステップ３７０１〜３７０５の処理は、図２７のステップ２７０１〜２７０５の処理と同様である。
【０１５９】
ページテーブル処理部１０２２は、現在のページテーブルの物理アドレスが、業務ＡＰ情報２２１のいずれのエントリの実行時情報とも一致しなければ（ステップ３７０４，ＮＯ）、処理を終了する。
【０１６０】
このような情報処理装置によれば、業務ＡＰが実行されているときには、業務ＡＰ以外のＡＰは、アクセスを許可されたメモリ領域以外の領域にアクセスすることができなくなる。したがって、１つのＶＭ上で業務ＡＰと業務ＡＰ以外のＡＰを実行しながら、業務ＡＰが使用するメモリ領域への業務ＡＰ以外のＡＰからのアクセスを制限することができる。
【０１６１】
なお、図３４の処理により生成されたメモリ制限情報２２２が、更新前のメモリ制限情報２２２と同じであれば、ステップ３４０７〜３４０８の処理を省略してもよい。また、図３７の処理において、ページテーブルのエントリの更新がメモリ制限情報２２２に影響を与えるか否かを業務ＡＰ情報２２１に基づいて判定し、影響を与える場合にメモリ制限生成部１０２１を呼び出してもよい。
【０１６２】
ところで、図１の情報処理装置において、メモリ制限情報及びアクセス不可情報の両方又は一方をメモリ２４３に設定する設定部を設けてもよい。また、図２８の情報処理装置において、テーブル情報をメモリ２４３に設定する設定部を設けてもよい。
【０１６３】
同様に、図２の情報処理装置において、業務ＡＰ情報２２１、メモリ制限情報２２２、及びドメイン情報２２３の全部又は一部をメモリ２４３に設定する設定部を設けてもよい。また、図１０及び図２１の情報処理装置において、業務ＡＰ情報２２１及びテーブル情報１０１１の両方又は一方をメモリ２４３に設定する設定部を設けてもよい。図２９の情報処理装置において、業務ＡＰ情報２２１及びテーブル情報２９１１の両方又は一方をメモリ２４３に設定する設定部を設けてもよい。
【０１６４】
図３８は、このような情報処理装置の機能及びハードウェアの構成例を示している。図３８の情報処理装置は、図２の情報処理装置に設定ＶＭ３８０１を追加し、ハイパーバイザ２０２をハイパーバイザ３８０２に置き換えた構成を有する。
【０１６５】
設定ＶＭ３８０１は、設定部３８１１を含む。ハイパーバイザ３８０２は、図２の業務ＡＰ特定部２３１、コンテキストスイッチ処理部２３２、及びフォールト処理部２３３に加えて、管理部３８２１を含む。
【０１６６】
設定部３８１１は、ユーザ又はオペレータの指示に従って、業務ＡＰ情報２２１、メモリ制限情報２２２、及びドメイン情報２２３に設定される情報を管理部３８２１へ通知する。管理部３８２１は、通知された情報をメモリ２４３内の業務ＡＰ情報２２１、メモリ制限情報２２２、及びドメイン情報２２３に設定する。
【０１６７】
業務ＡＰ情報２２１に設定される情報は、業務ＡＰ特定情報であり、メモリ制限情報２２２に設定される情報は、不許可物理アドレス及び不許可仮想アドレスである。ドメイン情報２２３に設定される情報は、ドメイン番号である。設定方法としては、全書き換え又は個別に追加のような方法が用いられる。また、不要になった情報を削除することも可能である。
【０１６８】
対象ＶＭ２０１とは異なる設定ＶＭ３８０１上に設定部３８１１を設けることで、ユーザ又はオペレータが業務ＡＰ以外のＡＰを業務ＡＰとして設定することを禁止することができる。対象ＶＭ２０１に設定部３８１１を設けることも可能である。
【０１６９】
設定部３８１１は、対象ＶＭ２０１に業務ＡＰがインストールされるタイミングで、各種の情報を設定する。設定ＶＭ３８１１としては、情報の設定処理に特化した、メモリ消費の少ないＶＭを用いることが望ましい。
【０１７０】
図１、図１０、図２１、図２８、及び図２９の情報処理装置においても、同様にして設定部を設けることができる。
【０１７１】
図７−図９、図１３−図１４、図１９−図２０、図２３−図２７、及び図３３−図３７に示した各フローチャートは一例に過ぎず、情報処理装置の構成や条件に応じて一部の処理を省略又は変更してもよい。
【０１７２】
また、業務ＡＰと業務ＡＰ以外のＡＰを実行する場合に限らず、第１のプログラムと第２のプログラムを実行する場合にも、同様にして、第１のプログラムが使用するメモリ領域への第２のプログラムからのアクセスを制限することができる。
【０１７３】
図１の情報処理装置１０１、図２８の情報処理装置２８０１、及び図２、図１０、図２１、図２９、及び図３８の情報処理装置としては、例えば、図３９に示すような情報処理装置（コンピュータ）を用いることができる。
【０１７４】
図３９の情報処理装置は、ＣＰＵ３９０１、ＭＭＵ３９０２、メモリ３９０３、入力装置３９０４、出力装置３９０５、外部記憶装置３９０６、媒体駆動装置３９０７、及びネットワーク接続装置３９０８を備える。これらはバス３９０９により互いに接続されている。
【０１７５】
メモリ３９０３は、例えば、Read Only Memory（ＲＯＭ）、Random Access Memory（ＲＡＭ）、フラッシュメモリ等の半導体メモリであり、処理に用いられるプログラム及びデータを格納する。メモリ３９０３は、格納部１１１又は格納部２８１１としても使用できる。
【０１７６】
ＣＰＵ３９０１（プロセッサ）は、メモリ３９０３を利用してプログラムを実行することにより、制御部１１２、１１３、２８１２、対象ＶＭ２０１、設定ＶＭ３８０１、及びハイパーバイザ２０２、１００１、２１０１、２９０１、３８０２の処理を行う。ＭＭＵ３９０２は、ＣＰＵ３９０１からメモリ３９０３へのメモリアクセスを制御する。
【０１７７】
入力装置３９０４は、例えば、キーボード、ポインティングデバイス等であり、ユーザ又はオペレータからの指示や情報の入力に用いられる。出力装置３９０５は、例えば、表示装置、プリンタ、スピーカ等であり、ユーザ又はオペレータへの問い合わせや処理結果の出力に用いられる。
【０１７８】
外部記憶装置３９０６は、例えば、磁気ディスク装置、光ディスク装置、光磁気ディスク装置、テープ装置等である。この外部記憶装置３９０６には、ハードディスクドライブ、及びフラッシュメモリのような半導体メモリも含まれる。情報処理装置は、外部記憶装置３９０６にプログラム及びデータを格納しておき、それらをメモリ３９０３にロードして使用することができる。
【０１７９】
媒体駆動装置３９０７は、可搬型記録媒体３９１０を駆動し、その記録内容にアクセスする。可搬型記録媒体３９１０は、メモリデバイス、フレキシブルディスク、光ディスク、光磁気ディスク等である。この可搬型記録媒体３９１０には、Compact Disk Read Only Memory（ＣＤ−ＲＯＭ）、Digital Versatile Disk（ＤＶＤ）、Universal Serial Bus（ＵＳＢ）メモリ等も含まれる。ユーザ又はオペレータは、この可搬型記録媒体３９１０にプログラム及びデータを格納しておき、それらをメモリ３９０３にロードして使用することができる。
【０１８０】
このように、各種処理に用いられるプログラム及びデータを格納するコンピュータ読み取り可能な記録媒体には、メモリ３９０３、外部記憶装置３９０６、及び可搬型記録媒体３９１０のような、物理的な（非一時的な）記録媒体が含まれる。
【０１８１】
ネットワーク接続装置３９０８は、Local Area Network（ＬＡＮ）、インターネット等の通信ネットワークに接続され、無線通信又は有線通信に伴うデータ変換を行う通信インタフェースである。情報処理装置は、プログラム及びデータを外部の装置からネットワーク接続装置３９０８を介して受け取り、それらをメモリ３９０３にロードして使用することもできる。
【０１８２】
なお、情報処理装置が図３９のすべての構成要素を含む必要はなく、用途や条件に応じて一部の構成要素を省略することも可能である。また、情報処理装置がスマートフォンのような携帯端末である場合、マイク及びスピーカのような通話用の装置も構成要素として含まれる。情報処理装置は、カメラのような撮像装置を構成要素として含んでもよい。
【０１８３】
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【符号の説明】
【０１８４】
１０１、２８０１  情報処理装置
１１１、２８１１  格納部
１１２、１１３、２８１２  制御部
２０１  対象ＶＭ
２０２、１００１、２１０１、２９０１、３８０２  ハイパーバイザ
２０３  ハードウェア
２１１、２１２  ＡＰ
２１３、２１４  業務ＡＰ
２１５  ＯＳ
２２１  業務ＡＰ情報
２２２  メモリ制限情報
２２３  ドメイン情報
２３１  業務ＡＰ特定部
２３２  コンテキストスイッチ処理部
２３３  フォールト処理部
２４１、３９０１  ＣＰＵ
２４２、３９０２  ＭＭＵ
２４３、３９０３  メモリ
３０１、３０２、１１０１、１１０２、１２０１、１２０２、２２０１、２２０２、３２０１  エントリ
１０１１、２９１１  テーブル情報
１０２１  メモリ制限生成部
１０２２  ページテーブル処理部
３８０１  設定ＶＭ
３８１１  設定部
３８２１  管理部
３９０４  入力装置
３９０５  出力装置
３９０６  外部記憶装置
３９０７  媒体駆動装置
３９０８  ネットワーク接続装置
３９０９  バス
３９１０  可搬型記録媒体
【図１】
0005821723.tif 000002
【図２】
0005821723.tif 000003
【図３】
0005821723.tif 000004
【図４】
0005821723.tif 000005
【図５】
0005821723.tif 000006
【図６】
0005821723.tif 000007
【図７】
0005821723.tif 000008
【図８】
0005821723.tif 000009
【図９】
0005821723.tif 000010
【図１０】
0005821723.tif 000011
【図１１】
0005821723.tif 000012
【図１２】
0005821723.tif 000013
【図１３】
0005821723.tif 000014
【図１４】
0005821723.tif 000015
【図１５】
0005821723.tif 000016
【図１６】
0005821723.tif 000017
【図１７】
0005821723.tif 000018
【図１８】
0005821723.tif 000019
【図１９】
0005821723.tif 000020
【図２０】
0005821723.tif 000021
【図２１】
0005821723.tif 000022
【図２２】
0005821723.tif 000023
【図２３】
0005821723.tif 000024
【図２４】
0005821723.tif 000025
【図２５】
0005821723.tif 000026
【図２６】
0005821723.tif 000027
【図２７】
0005821723.tif 000028
【図２８】
0005821723.tif 000029
【図２９】
0005821723.tif 000030
【図３０】
0005821723.tif 000031
【図３１】
0005821723.tif 000032
【図３２】
0005821723.tif 000033
【図３３】
0005821723.tif 000034
【図３４】
0005821723.tif 000035
【図３５】
0005821723.tif 000036
【図３６】
0005821723.tif 000037
【図３７】
0005821723.tif 000038
【図３８】
0005821723.tif 000039
【図３９】
0005821723.tif 000040