(57)【要約】  情報処理装置（１００）は、検出部（３０１）によってＯＳ（＃１）がＯＳ（＃１）とは異なるＯＳ（＃２）を含むプロセスを実行する第１の状態で、切り替え要求を検出する。情報処理装置（１００）は、検出部（３０１）によって切り替え要求が検出された場合、停止部（３０３）によってＯＳ（＃２）を含むプロセスを停止させる。プロセスを停止させた後、情報処理装置（１００）は、移行部（３０４）によってプロセッサに対する実行権限をＯＳ（＃１）からＯＳ（＃２）に移行する。実行権限を移行後、情報処理装置（１００）は、切替部（３０２）によって、第１の状態からＯＳ（＃２）がＯＳ（＃１）を含むプロセスを実行する第２の状態へ切り替える。
2012001787.tif 000002
【特許請求の範囲】
【請求項１】
第１のＯＳが前記第１のＯＳとは異なる第２のＯＳを含むプロセスを実行する第１の状態で、切り替え要求を検出する検出手段と、
前記検出手段によって前記切り替え要求が検出された場合、前記第１の状態から前記第２のＯＳが前記第１のＯＳを含むプロセスを実行する第２の状態へ切り替える切替手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記検出手段によって前記切り替え要求が検出された場合、前記第２のＯＳを含むプロセスを停止させる停止手段と、
前記停止手段によって前記第２のＯＳを含むプロセスが停止した場合、プロセッサに対する実行権限を前記第１のＯＳから前記第２のＯＳに移行する移行手段と、をさらに備え、
前記切替手段は、
前記移行手段によって前記実行権限を前記第２のＯＳに移行した場合、前記第１の状態から前記第２の状態へ切り替えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記プロセッサからアクセス可能な第１のメモリ領域の所定の位置に割り当てられた前記第１のＯＳのシステム領域から、前記第１のＯＳのユーザ領域と前記第１のＯＳが実行するプロセスに割り当てられた第２のメモリ領域とを取得する取得手段と、
前記移行手段によって前記実行権限を前記第２のＯＳに移行した場合、前記取得手段によって取得された前記第１のＯＳのユーザ領域から前記第２のメモリ領域を除いたメモリ領域のうち少なくとも一部のメモリ領域を、前記第２のＯＳに割り当てる割当手段と、
をさらに備えることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記停止手段は、
さらに、前記第１のＯＳのユーザインタフェイスに関連する処理を停止させ、
前記切替手段は、
前記第１の状態から前記第２の状態に加え前記第２のＯＳのユーザインタフェイスに関連する処理を実行する状態へ切り替えることを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
プロセッサが、
第１のＯＳが前記第１のＯＳとは異なる第２のＯＳを含むプロセスを実行する第１の状態で、前記切り替え要求を検出する検出工程と、
前記検出工程によって前記切り替え要求が検出された場合、前記第１の状態から前記第２のＯＳが前記第１のＯＳを含むプロセスを実行する第２の状態へ切り替える切替工程と、
を実行することを特徴とする情報処理方法。
【請求項６】
プロセッサに、
第１のＯＳが前記第１のＯＳとは異なる第２のＯＳを含むプロセスを実行する第１の状態で、前記切り替え要求を検出する検出工程と、
前記検出工程によって前記切り替え要求が検出された場合、前記第１の状態から前記第２のＯＳが前記第１のＯＳを含むプロセスを実行する第２の状態へ切り替える切替工程と、
を実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯＳを切り替える情報処理装置、情報処理方法、および情報処理プログラムに関する。
【背景技術】
【０００２】
従来から、単一のプロセッサシステムで複数のＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を実行させる技術が存在する。この技術は、ユーザが享受したいサービスがＯＳに依存している場合で、かつ、享受したいサービスが複数あり、各々のサービスを実現するためのＯＳが異なる場合に１つのプロセッサシステム上で実現するために存在する。この機構を実現する方式として、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）と、ハイブリッドＯＳなどが存在する。【０００３】
ＶＭは、ＣＰＵや記憶装置などのリソースを仮想化し、仮想化したリソース上で実行されるソフトウェアを指す。リソースを仮想化するソフトウェアはハイパーバイザとも呼ばれる。ＶＭを単一のプロセッサシステムに複数搭載することにより、２つ以上のＯＳを実行することができる。ＶＭを搭載したプロセッサシステムでは、複数搭載されたＯＳのうち１つのＯＳがマスタＯＳとなり、プロセッサシステムの全体をマネジメントする機構を持つ。【０００４】
ハイブリッドＯＳは、基盤となるマスタＯＳの１プロセスとして、別のＯＳであるスレイブＯＳが実行される技術である。組み込みシステムなど、リアルタイム性を要求される環境では、マスタＯＳにリアルタイムＯＳが採用され、スレイブＯＳに汎用ＯＳが採用されるケースが存在する。たとえば、高い処理性能が求められるリアルタイム性の処理をリアルタイムＯＳが実行し、それ以外の処理を汎用ＯＳが実行することで、リアルタイム性能を維持しつつ、汎用ＯＳのソフトウェア資産を流用でき、開発コストを抑えることができる。【０００５】
たとえば、ハイブリッドＯＳを利用した技術として、マスタＯＳとスレイブＯＳがそれぞれ制御する画面の解像度が異なる場合、画面の切り替えを高速に行える技術が開示されている（たとえば、下記特許文献１を参照。）。【０００６】
また、ハイブリッドＯＳに関する技術として、たとえば、メモリ管理テーブルを変換し、マスタＯＳの処理とスレイブＯＳの処理を切り替えることにより、マスタＯＳに障害が発生してもスレイブＯＳを操作可能とする技術が開示されている（たとえば、下記特許文献２を参照。）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平５−１８１４４３号公報
【特許文献２】特開２００７−３３４５７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した従来技術において、ＶＭでは、ＯＳを切り替えるハイパーバイザが要求される。ハイパーバイザを搭載したシステムは大掛かりなソフトウェア構造となってしまう問題があった。また、ハイブリッドＯＳは、ＶＭより実装を簡略化することが可能であるが、スレイブＯＳはマスタＯＳ上で実行されるプロセスであり、プロセッサの割り当て周期はマスタＯＳの制御配下にある。このため、マスタＯＳがスレイブＯＳ全体の優先度を低い状態に設定している状態で、スレイブＯＳが優先度の高いプロセスを実行しても、プロセスへのプロセッサの割り当て周期は少ないままとなるという問題があった。【０００９】
また、特許文献１、２にかかる技術では、スレイブＯＳのプロセスを高優先度に設定すると、相対的にマスタＯＳの優先度が低下する。したがって、高優先度となったスレイブＯＳのプロセスがデバイスへのアクセスを行う場合、マスタＯＳを介してデバイスへのアクセスを行うために、優先度が低下したマスタＯＳがボトルネックとなり、処理が遅延するという問題があった。【００１０】
本発明は、上述した従来技術による問題点を解消するため、ＯＳを切り替えた際に、スレイブＯＳであったＯＳの処理の遅延を解消し、応答性能を向上できる情報処理装置、情報処理方法、および情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するため、開示の情報処理装置は、第１のＯＳが第１のＯＳとは異なる第２のＯＳを含むプロセスを実行する第１の状態で、切り替え要求が検出された場合、第１の状態から第２のＯＳが第１のＯＳを含むプロセスを実行する第２の状態へ切り替える。
【発明の効果】
【００１２】
本情報処理装置、情報処理方法、および情報処理プログラムによれば、ＯＳを切り替えた際に、スレイブＯＳであったＯＳの処理の遅延を解消し、応答性能を向上できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】実施の形態にかかる情報処理装置１００のハードウェアを示すブロック図である。
【図２】情報処理装置１００によるＯＳを切り替えた状態を示す説明図である。
【図３】情報処理装置１００の機能を示すブロック図である。
【図４】情報処理装置１００によるＯＳを切り替えた表示例を示す説明図である。
【図５】メモリアドレス空間の一例を示す説明図である。
【図６】ＯＳ切り替え時のアプリケーションのディスパッチ状況を示す説明図である。
【図７】ＯＳ切り替え処理の概略を示す説明図である。
【図８】ＯＳ切り替え処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、本発明にかかる情報処理装置、情報処理方法、および情報処理プログラムの好適な実施の形態を詳細に説明する。
【００１５】
（情報処理装置のハードウェア）
図１は、実施の形態にかかる情報処理装置１００のハードウェアを示すブロック図である。図１において、情報処理装置１００は、ＣＰＵ１０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３と、を有する。また、情報処理装置１００は、フラッシュＲＯＭ１０４と、フラッシュＲＯＭコントローラ１０５と、フラッシュＲＯＭ１０６と、を有している。また、情報処理装置１００は、ユーザやその他の機器との入出力装置として、ディスプレイ１０７と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）１０８と、キーボード１０９と、を有している。また、各部はバス１１０によってそれぞれ接続されている。
【００１６】
ここで、ＣＰＵ１０１は、情報処理装置１００の全体の制御を司る。ＲＯＭ１０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ１０３は、ＣＰＵ１０１のワークエリアとして使用される。フラッシュＲＯＭ１０４は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。
【００１７】
フラッシュＲＯＭコントローラ１０５は、ＣＰＵ１０１の制御に従ってフラッシュＲＯＭ１０６に対するデータのリード／ライトを制御する。フラッシュＲＯＭ１０６は、フラッシュＲＯＭコントローラ１０５の制御で書き込まれたデータを記憶する。データの具体例としては、情報処理装置１００を使用するユーザがＩ／Ｆ１０８を通して取得した画像データ、映像データなどである。フラッシュＲＯＭ１０６は、たとえば、メモリカード、ＳＤカードなどを採用することができる。
【００１８】
ディスプレイ１０７は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ１０７は、たとえば、ＴＦＴ液晶ディスプレイなどを採用することができる。
【００１９】
Ｉ／Ｆ１０８は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク１１１に接続され、ネットワーク１１１を介して他の装置に接続される。そして、Ｉ／Ｆ１０８は、ネットワーク１１１と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ１０８には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００２０】
キーボード１０９は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード１０９は、タッチパネル式の入力パッドやテンキーなどであってもよい。
【００２１】
図２は、情報処理装置１００によるＯＳを切り替えた状態を示す説明図である。情報処理装置１００は、ＯＳ＃１をマスタＯＳとして実行中である状態２０１と、ＯＳ＃２をマスタＯＳとして実行中である状態２０２の、２つの状態をとり得る。
【００２２】
ＯＳ＃１とＯＳ＃２は、ＣＰＵ１０１上で動作するＯＳである。たとえば、ＯＳ＃１とＯＳ＃２は、ＯＳの機能として、プロセスが使用するライブラリを提供する。また、ＯＳ＃１とＯＳ＃２は、プロセスのスケジューリング処理を行う機能を有する。
【００２３】
マスタＯＳは、情報処理装置１００を制御するＯＳである。スレイブＯＳは、マスタＯＳの１プロセスとして実行されるＯＳである。スレイブＯＳを実行することで、情報処理装置１００では複数のＯＳが同時に実行されることになり、情報処理装置１００は擬似的に複数のコアを持つマルチコアプロセッサの様相を示すことになる。
【００２４】
状態２０１における情報処理装置１００は、ＯＳ＃１をマスタＯＳとし、ＯＳ＃１の制御のもと、プロセスＡと、プロセスＢと、ＯＳ＃２の処理を含むプロセス２０３を実行している。プロセス２０３の内部にて情報処理装置１００は、ＯＳ＃２の制御のもと、プロセスＣと、プロセスＤを実行している。情報処理装置１００は、切り替え要求を検出した場合にマスタＯＳとスレイブＯＳと切り替えることで、状態２０１から状態２０２に遷移する。
【００２５】
状態２０２における情報処理装置１００は、ＯＳ＃２をマスタＯＳとし、ＯＳ＃２の制御のもと、プロセスＣと、プロセスＤと、ＯＳ＃１の処理を含むプロセス２０４を実行している。プロセス２０４の内部にて情報処理装置１００は、ＯＳ＃１の制御のもと、プロセスＡと、プロセスＢを実行している。
【００２６】
（情報処理装置１００の機能）
次に、情報処理装置１００の機能について説明する。図３は、情報処理装置１００の機能を示すブロック図である。情報処理装置１００は、検出部３０１と、切替部３０２と、停止部３０３と、移行部３０４と、取得部３０５と、割当部３０６と、を含む。この制御部となる機能（検出部３０１〜割当部３０６）は、記憶装置に記憶されたプログラムをＣＰＵ１０１が実行することにより、その機能を実現する。記憶装置とは、たとえば、図１に示したＲＯＭ１０２、ＲＡＭ１０３、フラッシュＲＯＭ１０４、フラッシュＲＯＭ１０６などである。または、Ｉ／Ｆ１０８を経由して他のＣＰＵが実行することにより、その機能を実現してもよい。
【００２７】
検出部３０１は、第１のＯＳが第１のＯＳとは異なる第２のＯＳを含むプロセスを実行する第１の状態で、切り替え要求を検出する機能を有する。たとえば、検出部３０１は、情報処理装置１００がマスタＯＳとなるＯＳ＃１が、スレイブＯＳとなるＯＳ＃２を含むプロセス２０３を実行する状態２０１で、利用者の操作等によって発行された切り替え要求を検出する。なお、検出結果は、ＣＰＵ１０１のレジスタ、ＲＡＭ１０３などの記憶領域に記憶される。
【００２８】
切替部３０２は、検出部３０１によって切り替え要求が検出された場合、第１の状態から第２のＯＳが第１のＯＳを含むプロセスを実行する第２の状態へ切り替える機能を有する。また、切替部３０２は、移行部３０４によって実行権限が第２のＯＳに移行された場合、第１の状態から第２の状態へ切り替えてもよい。たとえば、切替部３０２は、情報処理装置１００の状態を状態２０１から、移行部３０４によって確保されたＯＳ＃１を含むプロセス２０４へのポインタを用いてＯＳ＃２がプロセス２０４を実行する状態２０２へ切り替える。
【００２９】
また、切替部３０２は、第１の状態から第２の状態に加え第２のＯＳのユーザインタフェイスに関連する処理を実行する状態へ切り替えてもよい。ユーザインタフェイスに関連する処理とは、たとえば、キーボード１０９に対応したキーイベント処理や、ディスプレイ１０７がタッチパネルであった場合に対応したマウスイベント処理などである。たとえば、切替部３０２は、ＯＳ＃２がマスタＯＳとなった状態２０２にて、さらにＯＳ＃２のキーイベント処理やマウスイベント処理を実行する。なお、切り替えたという情報は、ＣＰＵ１０１のレジスタ、ＲＡＭ１０３などの記憶領域に記憶されてもよい。
【００３０】
停止部３０３は、検出部３０１によって切り替え要求が検出された場合、第２のＯＳを含むプロセスを停止させる機能を有する。たとえば、停止部３０３は、切り替え要求が検出された場合、プロセス２０３を停止させる。プロセス２０３が停止した場合、プロセス２０３がＣＰＵ１０１に割り当てられなくなるが、ＲＡＭ１０３上にプロセス２０３の情報は存在している。
【００３１】
また、停止部３０３は、さらに、第１のＯＳのユーザインタフェイスに関連する処理を停止させてもよい。たとえば、停止部３０３は、ＯＳ＃１のキーイベント処理やマウスイベント処理を停止させる。なお、プロセスまたはユーザインタフェイスに関連する処理を停止させたという情報は、ＣＰＵ１０１のレジスタ、ＲＡＭ１０３などの記憶領域に記憶される。
【００３２】
移行部３０４は、停止部３０３によって第２のＯＳを含むプロセスが停止した場合、ＣＰＵ１０１に対する実行権限を第１のＯＳから第２のＯＳに移行する機能を有する。たとえば、移行部３０４は、停止部３０３によってプロセス２０３が停止した場合、実行権限をＯＳ＃１からＯＳ＃２に移行する。実行権限が移行することにより、マスタＯＳがＯＳ＃１からＯＳ＃２となる。実際には、ＯＳ＃１がプロセス２０３へのポインタを解放し、ＯＳ＃２がプロセス２０４へのポインタを確保することで、実行権限がＯＳ＃１からＯＳ＃２に移行する。さらに詳細な動作については、図５にて記述する。なお、実行権限が移行され、マスタＯＳが切り替わったという情報は、ＣＰＵ１０１のレジスタ、ＲＡＭ１０３などの記憶領域に記憶される。
【００３３】
取得部３０５は、プロセッサからアクセス可能な第１のメモリ領域の所定の位置に割り当てられた第１のＯＳのシステム領域から、第１のＯＳのユーザ領域と第１のＯＳが実行するプロセスに割り当てられた第２のメモリ領域とを取得する機能を有する。第１のメモリ領域とは、ＣＰＵがアクセス可能なＲＯＭ１０２、ＲＡＭ１０３等といった記憶領域である。
【００３４】
システム領域とは、ＯＳやデバイスドライバなどによって使用されるメモリ領域のことであり、ユーザ領域は、システム領域以外にＯＳに割り当てられた領域であり、ＯＳによって実行されるプロセスによって使用される。システム領域が割り当てられる所定の位置とは、情報処理装置１００の起動後から移動しなければどの位置であってもよい。
【００３５】
たとえば、ＯＳ＃１のシステム領域は、ＲＡＭ１０３の先頭アドレスに割り当てられてもよい。さらに、ＯＳ＃２のシステム領域は、ＯＳ＃１のシステム領域として割り当てられたメモリ領域の次のメモリ領域に割り当てられてもよい。また、プロセスに割り当てられた第２のメモリ領域は、プロセスのコンテキストとして割り当てられたメモリ領域である。プロセスは、コンテキストにＣＰＵのレジスタの値、プログラムカウンタ、スタックポインタなどといったプロセスが使用するデータを格納する。
【００３６】
たとえば、取得部３０５は、ＯＳ＃１のシステム領域から、ＯＳ＃１のユーザ領域とプロセスＡおよびプロセスＢのコンテキストとして割り当てられたメモリ領域とを取得する。また、詳細には、取得部３０５は、メモリ領域を指し示すポインタを取得する。取得された領域の情報は、ＣＰＵ１０１のレジスタ、ＲＡＭ１０３などの記憶領域に記憶される。
【００３７】
割当部３０６は、移行部３０４によって実行権限が第２のＯＳに移行された場合、取得部３０５によって取得された第１のＯＳのユーザ領域から第２のメモリ領域を除いたメモリ領域のうち少なくとも一部のメモリ領域を、第２のＯＳに割り当てる機能を有する。たとえば、割当部３０６は、ＯＳ＃１のユーザ領域からプロセスＡおよびプロセスＢのコンテキストとして割り当てられたメモリ領域を除いた未使用であるメモリ領域のうち少なくとも一部のメモリ領域を、ＯＳ＃２のユーザ領域として割り当てる。
【００３８】
なお、割当部３０６は、未使用であるメモリ領域のうち、すべてのメモリ領域を第２のＯＳに割り当ててもよいし、一部のメモリ領域であってもよい。たとえば、ＯＳ＃１のユーザ領域が７［Ｍバイト］であり、ＯＳ＃２のユーザ領域が４［Ｍバイト］であり、プロセスＡおよびプロセスＢのコンテキストとして割り当てられたメモリ領域の合計が３［Ｍバイト］である場合を想定する。このとき、割当部３０６は、ＯＳ＃１のユーザ領域の未使用部分の４［Ｍバイト］をＯＳ＃２のユーザ領域に割り当ててもよいし、１［Ｍバイト］はＯＳ＃１のユーザ領域としておき、残りの３［Ｍバイト］をＯＳ＃２のユーザ領域に割り当て、ＯＳ＃２のユーザ領域を４＋３＝７［Ｍバイト］としてもよい。
【００３９】
図４は、情報処理装置１００によるＯＳを切り替えた表示例を示す説明図である。状態４０１、状態４０２における情報処理装置１００は、それぞれ、状態２０１、状態２０２の情報処理装置１００に、プロセスＡとしてＷｅｂブラウザを実行し、プロセスＣとして地図表示プロセスを実行している。状態４０１における情報処理装置１００は、Ｗｅｂブラウザがフォアグラウンドであり、ＨＴＭＬ（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）文書を表示している。さらに、情報処理装置１００は、Ｗｅｂブラウザの小窓として地図表示プロセスを表示している。地図表示プロセスは、ＯＳ＃２上のサービスであり、バックグラウンド上で低い優先度で実行されている。
【００４０】
ユーザによるＷｅｂブラウザ上の操作で、たとえば、地図表示プロセスがクリックされた等の動作により、切り替え要求が発行される。切り替え要求が発行されると、情報処理装置１００は、状態４０１から状態４０２に状態遷移し、マスタＯＳとスレイブＯＳであるＯＳ＃１とＯＳ＃２が切り替わる。
【００４１】
状態４０２における情報処理装置１００は、地図表示プロセスがフォアグラウンドであり、Ｗｅｂブラウザがバックグラウンドとなっている。たとえば、キーボード１０９の上矢印キーが押下されると、情報処理装置１００は、ＯＳ＃２のキーイベント処理によって地図表示プロセスにキーイベントを通知する。情報処理装置１００は、地図表示プロセスがキーイベントに基づいて地図上の前方を示す画面イメージを要求するため、Ｉ／Ｆ１０８を通じて画像イメージを取得し、ディスプレイ１０７に表示する。このとき、ＯＳ＃２はマスタＯＳとなっているため、キーボード１０９、Ｉ／Ｆ１０８、ディスプレイ１０７を制御するドライバに直接アクセスすることができ、上矢印キーが押下された時刻からみて高速に描画を行うことができる。
【００４２】
従来例にかかる情報処理装置１００では、ＯＳ＃２は、ＯＳ＃１の配下のスレイブＯＳであるため、ＯＳ＃２がキーボード１０９、Ｉ／Ｆ１０８、ディスプレイ１０７を制御するドライバにアクセスするにはＯＳ＃１を経由していた。したがって、従来例にかかる情報処理装置１００では、ＯＳ＃２の優先度を高くし高速に描画を行おうとしても、相対的に低速となったＯＳ＃１を経由するため、高速に表示することができなかった。
【００４３】
図５は、メモリアドレス空間の一例を示す説明図である。図５では、ＲＡＭ１０３の記憶内容を示したメモリアドレス空間５０１およびメモリアドレス空間５０２を示している。情報処理装置１００は、フラッシュＲＯＭ１０４などに格納されているＯＳブートイメージをブートローダ５０３によってＲＡＭ１０３に展開する。図５に表示されたＲＡＭ１０３のアドレス空間は、ＲＡＭ１０３の先頭アドレスからのオフセットで示されている。メモリアドレス空間５０１は、状態２０１におけるＲＡＭ１０３の記憶内容を示しており、メモリアドレス空間５０２は、状態２０２におけるＲＡＭ１０３の記憶内容を示している。図５では、状態２０１の状態で情報処理装置１００が起動されることを想定している。
【００４４】
ブートローダ５０３は、ＯＳ＃１、ＯＳ＃２のブートアップポイントとなるシステム領域を、それぞれ０ｘ００００〜０ｘ０１ｆｆ、０ｘ０２００〜０ｘ０２ｆｆに固定サイズで割り当てる。さらに、ブートローダ５０３は、０ｘ０３００〜０ｘ２３ｆｆであるメモリ領域５０４をＯＳ＃１のユーザ領域として割り当て、０ｘ２４００〜０ｘ３１ｆｆをＯＳ＃２が使用するメモリ領域５０５として割り当てる。割り当てられたメモリ領域５０５はＯＳ＃２の処理を含むプロセス２０３のコンテキストとみなすことができる。
【００４５】
割り当て後、ＯＳ＃１は、プロセス２０３のコンテキストとなった先頭アドレスをポインタ５０６に記憶する。残りの０ｘ３２００〜０ｘｆｆｆｆは、ＯＳ＃１のユーザ領域となり、ＯＳ＃１の管理下となる。なお、ＯＳ＃１のユーザ領域は連続したメモリ領域ではなくなるが、このような状態であってもＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）によって管理することができる。
【００４６】
また、ＯＳ＃２は、メモリ領域５０５のうち、ＯＳ＃２のワーク領域となるＯＳ＃２のコンテキストを０ｘ２４００〜０ｘ２４ｆｆに割り当て、ＯＳ＃２のユーザ領域を０ｘ２５００〜０ｘ３１ｆｆに割り当てる。
【００４７】
また、ＯＳ＃１は、ＯＳ＃１のユーザ領域の未使用領域から、プロセスＡのコンテキスト領域を０ｘ２０００〜０ｘ２１ｆｆに割り当て、プロセスＢのコンテキストを０ｘ２２００〜０ｘ２３ｆｆに割り当てる。ＯＳ＃２は、ＯＳ＃２のユーザ領域となる０ｘ２５００〜０ｘ３１ｆｆから、プロセスＣのコンテキストを０ｘ３０００〜０ｘ３１ｆｆに割り当てる。
【００４８】
割り当て後、ＯＳ＃１は、ＯＳ＃１のユーザ領域の先頭アドレスをポインタ５０７に記憶する。さらに、ＯＳ＃１は、プロセスＡのコンテキストの先頭アドレスをポインタ５０８に記憶し、プロセスＢのコンテキストの先頭アドレスをポインタ５０９に記憶する。なお、記憶されたポインタ５０６〜ポインタ５０９は、ＯＳ＃１のシステム領域にて格納される。また、プロセスに関するポインタ５０８とポインタ５０９は、後述するプロセスディスパッチテーブル６０１にも格納される。
【００４９】
同様に、ＯＳ＃２は、ＯＳ＃２のユーザ領域の先頭アドレスをポインタ５１０に記憶し、プロセスＣのコンテキストの先頭アドレスをポインタ５１１に記憶する。なお、記憶されたポインタ５１０、ポインタ５１１は、ＯＳ＃２のシステム領域にて格納される。また、プロセスに関するポインタ５１１はプロセスディスパッチテーブル６０１にも格納される。
【００５０】
ユーザによる切り替え要求が発行された場合、情報処理装置１００は、メモリアドレス空間をメモリアドレス空間５０１からメモリアドレス空間５０２に変更する。メモリアドレス空間５０１とメモリアドレス空間５０２は、ＲＡＭ１０３の割り当てられている内容に変化はないが、いくつかのポインタが変更される。具体的には、ＯＳ＃１は、プロセス２０３の先頭アドレスを記憶していたポインタ５０６を解放する。また、ＯＳ＃１は、未使用のメモリ領域である０ｘ３２００〜０ｘｆｆｆｆを解放する。
【００５１】
続けて、ＯＳ＃２は、ＯＳ＃１の管理下となるメモリ領域５０４のＯＳ＃１ユーザ領域、プロセスＡのコンテキスト、プロセスＢのコンテキストをプロセス２０４のコンテキストとみなし、ＯＳ＃１ユーザ領域の先頭アドレスをポインタ５１２に記憶する。ＯＳ＃１がプロセス２０３のコンテキストへのポインタ５０６を解放し、ＯＳ＃２がプロセス２０４のコンテキストへのポインタ５１２を確保したことで、実行権限がＯＳ＃１からＯＳ＃２に移行したことになる。また、ＯＳ＃２は、未使用の領域であった０ｘ３２００〜０ｘｆｆｆｆを管理する。これにより、マスタＯＳとなったＯＳ＃２は、新たに起動されたプロセスやより多くのメモリ領域を要求したプロセスに対して、状態２０１で割り当てられていたメモリ領域を超えてメモリを割り当てることができる。
【００５２】
図５の例では、情報処理装置１００にＯＳが２つ搭載される場合で説明を行ったが、ＯＳがＮ個搭載される場合も、ブートローダ５０３は、ＯＳ＃１のシステム領域：ＯＳ＃２のシステム領域：…：ＯＳ＃Ｎのシステム領域を固定サイズでＲＡＭ１０３に割り当てる。次に、ブートローダ５０３は、ＯＳ＃１のユーザ領域：ＯＳ＃２のユーザ領域：…：ＯＳ＃Ｎのユーザ領域を可変サイズでＲＡＭ１０３に割り当てる。
【００５３】
図６は、ＯＳ切り替え時のアプリケーションのディスパッチ状況を示す説明図である。プロセスディスパッチテーブル６０１は、すべてのＯＳで実行されているプロセスのコンテキストへのポインタが格納されている。たとえば、プロセスディスパッチテーブル６０１には、プロセスＡのコンテキストへのポインタ５０８、プロセスＢのコンテキストへのポインタ５０９、プロセスＣのコンテキストへのポインタ５１１…といったポインタが格納されている。
【００５４】
各ＯＳのスケジューラに搭載される巡回ディスパッチ管理部は、プロセスディスパッチテーブル６０１を参照する。巡回ディスパッチ管理部は、プロセスディスパッチテーブル６０１を参照することで、プロセスのコンテキストへのポインタを取得することができる。プロセスのコンテキストへのポインタを用いて、巡回ディスパッチ管理部は、スケジューリングに基づいて、ディスパッチループを再構築する。
【００５５】
具体的には、ＯＳ＃１のスケジューラは、巡回ディスパッチ管理部によってプロセスディスパッチテーブル６０１の参照により、ディスパッチループ６０２を構築する。ディスパッチループ６０２は、プロセスＡ、プロセスＢ、プロセス２０３がタイムスライスで実行されるように構築されている。さらに、ディスパッチループ６０２は、プロセスＡの優先度が高くなるように構築されている。
【００５６】
ユーザによる操作等によって切り替え要求が発行されると、ＯＳ＃２のスケジューラが、巡回ディスパッチ管理部によってプロセスディスパッチテーブル６０１の参照により、ディスパッチループ６０３を構築する。ディスパッチループ６０３は、プロセスＣ、プロセスＤ、プロセス２０４がタイムスライスで実行されるように構築されている。さらに、ディスパッチループ６０３は、プロセスＣの優先度が高くなるように構築されている。このように、プロセスディスパッチテーブル６０１を参照することで、各ＯＳのスケジューラは、優先度制御を容易に行うことができる。
【００５７】
図７は、ＯＳ切り替え処理の概略を示す説明図である。状態２０１における情報処理装置１００は、ＯＳ＃１が提供するＵＩ（ユーザインターフェイス）やフレームワークに基づいて各プロセスを実行している。たとえば、図７では、ＯＳ＃１のＵＩによってフォアグラウンドとなるプロセスＡやＯＳ＃２が実行されている。ＯＳ＃２の中では、バックグラウンドとなるプロセスＣが実行されている。たとえば、ＯＳ＃１の提供するＵＩがＧＵＩであれば、ＯＳ＃１は、ポインティングデバイスによる矢印アイコン等を移動することによりマウスイベント処理を実行し、ユーザのプロセスに対する要求を処理する。
【００５８】
ユーザによる切り替え要求が発行されると、情報処理装置１００は、ＯＳ切り替え処理を実行する。ＯＳ切り替え処理の詳細は、図８にて後述する。ＯＳ切り替え処理の内部では、ＯＳ＃１のＵＩを一時停止させ、ＯＳ＃２のＵＩに停止解除させる。
【００５９】
ＯＳ切り替え処理が終了し、状態２０２となった情報処理装置１００は、ＯＳ＃２が提供するＵＩやフレームワークに基づいて各プロセスを実行する。たとえば、図７では、ＯＳ＃２のＵＩによってフォアグラウンドとなったプロセスＣやＯＳ＃１が実行される。ＯＳ＃１の中では、バックグラウンドとなったプロセスＡが実行される。
【００６０】
図８は、ＯＳ切り替え処理のフローチャートである。図８に示すＯＳ切り替え処理は、情報処理装置１００が状態２０１から状態２０２に遷移する場合のフローチャートを示している。情報処理装置１００が状態２０２から状態２０１に遷移する場合は、ＯＳ＃２とＯＳ＃１の処理が入れ替わることになる。また、ステップＳ８０１の処理後、情報処理装置１００は、ステップＳ８０２、ステップＳ８０３、ステップＳ８０４、ステップＳ８０９をＯＳ＃１側の処理として実行する。また、情報処理装置１００は、ステップＳ８０５、ステップＳ８０７、ステップＳ８０８、ステップＳ８１０をＯＳ＃２側の処理として実行する。
【００６１】
ＯＳ＃１は、ユーザからのロック処理を行う（ステップＳ８０１）。ロック処理が実行された情報処理装置１００は、ユーザ操作を含む外部割り込み処理を行わない。ロック処理後、ＯＳ＃１は、ＯＳ＃２を含むプロセス２０３のポインタを解放する（ステップＳ８０２）。続けて、ＯＳ＃１は、ＯＳ＃１が管理中のディスパッチループからプロセス２０３を削除する（ステップＳ８０３）。具体的には、ＯＳ＃１は、プロセス２０３のコンテキストを示すポインタであるポインタ５０６を削除する。
【００６２】
次に、ＯＳ＃１は、ＯＳ＃１のブートアップポイントとなるシステム領域のアドレスを取得し、ＯＳ＃２に通知する（ステップＳ８０４）。続けて、通知とあわせて、ＣＰＵ１０１は、実行権限をＯＳ＃１からＯＳ＃２に切り替える（ステップＳ８０６）。これにより、マスタＯＳがＯＳ＃１からＯＳ＃２に切り替わることになる。実際には、ＯＳ＃１がステップＳ８０３にてＯＳ＃１のシステム領域からプロセス２０３へのポインタを削除し、ステップＳ８０６にてＯＳ＃２がプロセス２０４へのポインタを確保することで実行権限が切り替わることになる。また、実行権限を移行時に、ＣＰＵ１０１は、ＯＳ＃１のユーザ領域から未使用のメモリ領域のうち少なくとも一部のメモリ領域を解放し、解放されたメモリ領域をＯＳ＃２のユーザ領域として割り当てる。
【００６３】
ＯＳ＃２は、プロセス２０４を指すことになるポインタを新規に確保し（ステップＳ８０５）、ＯＳ＃１からの通知によってＯＳ＃１のシステム領域のポインタを取得する。取得後、ＯＳ＃２は、新規ポインタとしてＯＳ＃１のアドレスを設定する（ステップＳ８０７）。具体的には、ＯＳ＃２は、プロセス２０４のコンテキストを指すポインタとなるポインタ５１２に、ＯＳ＃１のシステム領域から取得したＯＳ＃１のユーザ領域のアドレスを設定する。これにより、ポインタ５１２は、プロセス２０４のコンテキストを示すことになる。
【００６４】
設定後、ＯＳ＃２は、ＯＳ＃２が管理中のディスパッチループにＯＳ＃１を含んだプロセス２０４を追加する（ステップＳ８０８）。また、ステップＳ８０５の処理にて、ポインタを新規に確保すると、新規ポインタがディスパッチループに追加される機構であれば、ステップＳ８０７の処理にてプロセス２０４がディスパッチループに追加されていることになる。このような場合、ＯＳ＃２は、ステップＳ８０８の処理を行わずともよい。追加後、ＯＳ＃１は、ＵＩ機能の利用を一時停止させ（ステップＳ８０９）、ＯＳ＃２は、ＵＩ機能を停止解除させる（ステップＳ８１０）。
【００６５】
ＯＳ＃１によってステップＳ８０９の処理、ＯＳ＃２によってステップＳ８１０の処理を終了後、ＯＳ＃２は、ユーザからのアンロック処理を行い（ステップＳ８１１）、ＯＳ切り替え処理を終了する。アンロック処理が実行された情報処理装置１００は、ユーザ操作を含む外部割り込み処理を行うようになる。
【００６６】
以上説明したように、情報処理装置、情報処理方法、および情報処理プログラムによれば、切り替え要求を検出した場合、マスタＯＳであるＯＳ＃１とスレイブＯＳであるＯＳ＃２を、ＯＳ＃２をマスタＯＳに、ＯＳ＃１をスレイブＯＳに設定する。これにより、情報処理装置は、スレイブＯＳの優先度を高くした場合に、スレイブＯＳとデバイスとのアクセスで間にあったマスタＯＳを省いてアクセスすることができ、スレイブＯＳからデバイスへのアクセスを高速化することができる。情報処理装置は、スレイブＯＳであったＯＳ＃２からデバイスへの処理の遅延を解消し、ＯＳ＃２の応答性能を向上させることができる。
【００６７】
また、情報処理装置は、切り替え要求が検出された場合、ＯＳ＃１にて実行されている、ＯＳ＃２を含むプロセスを停止させ、プロセッサの実行権限をＯＳ＃１からＯＳ＃２に切り替えて、ＯＳ＃２をマスタＯＳに、ＯＳ＃１をスレイブＯＳにしてもよい。これにより、情報処理装置は、ＯＳ＃１の配下にＯＳ＃２があり、ＯＳ＃２の配下にＯＳ＃１がある、といった無限ループとなる状態を避けてＯＳを切り替えることができる。
【００６８】
また、情報処理装置は、ＯＳ切り替え時に、所定の位置に割り当てられたＯＳ＃１のシステム領域から、ＯＳ＃１のユーザ領域とＯＳ＃１が実行するプロセスに割り当てられたメモリ領域を取得し、ＯＳ＃１のユーザ領域の未使用部分をＯＳ＃２に割り当ててもよい。これにより、情報処理装置は、スレイブＯＳであったＯＳがマスタＯＳとなった際に、スレイブＯＳ時に設定されたメモリ領域を越えてメモリを使用するといった、動的なメモリ割り当てを実現することができる。
【００６９】
また、情報処理装置は、ＯＳ切り替え時に、ＯＳ＃１のＵＩ機能を停止させ、ＯＳ＃２のＵＩ機能を停止解除してもよい。これにより、情報処理装置が携帯端末などの、ディスプレイの表示領域が限られている場合に、情報処理装置は、主従関係が入れ替わった際に操作対象となるウインドウをディスプレイに表示されているマスタＯＳのウインドウに限定することになる。よって、画面に表示されていないスレイブＯＳのＵＩを停止させることで、処理量を削減することができる。
【００７０】
また、情報処理装置は、主従関係が入れ替わることにより、応答性能を向上することができる。たとえば、マスタＯＳであるＯＳ＃Ｍのプロセスのスイッチ間隔をτｍ、プロセス数がＭ個とし、スレイブＯＳであるＯＳ＃Ｎのプロセスのスイッチ間隔をτｎ、プロセス数がＮ個とした場合を想定する。主従関係が固定である装置の場合、ＯＳ＃Ｎに存在するプロセスが呼び出されるには、最悪Ｍτｍ＋Ｎτｎ時間を要することになる。本実施の形態にかかる情報処理装置では、主従関係が入れ替わることで、Ｎτｎ時間で切り替えることが可能となる。
【００７１】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本情報処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本情報処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【符号の説明】
【００７２】
＃１、＃２  ＯＳ
１００  情報処理装置
３０１  検出部
３０２  切替部
３０３  停止部
３０４  移行部
３０５  取得部
３０６  割当部
【図１】
2012001787.tif 000003
【図２】
2012001787.tif 000004
【図３】
2012001787.tif 000005
【図４】
2012001787.tif 000006
【図５】
2012001787.tif 000007
【図６】
2012001787.tif 000008
【図７】
2012001787.tif 000009
【図８】
2012001787.tif 000010
【国際調査報告】
2012001787.tif 000011
2012001787.tif 000012
2012001787.tif 000013
2012001787.tif 000014