(57)【要約】【課題】オペレーティングシステムの切り替え頻度を減らす。【解決手段】本実施形態に係る情報処理装置は、第１オペレーティングシステム部と、モニタ部と、を有する。モニタ部は、切替部を含む。切替部は、第２オペレーティングシステム部が周辺機器へのアクセス要求を発行した場合、第２オペレーティングシステム部の状態を待避させて機能を停止させ、第１オペレーティングシステム部の状態を復帰して機能を開始させる。第１オペレーティングシステム部は、要求入出力部と、アクセス部と、を含む。要求入出力部は、第２オペレーティングシステム部により書き込まれた周辺機器へのアクセス要求をバッファ部から読み出し、読み出したアクセス要求を周辺機器により受け付け可能な単位の命令に分割し、分割したそれぞれの命令を発行する。アクセス部は、要求入出力部により発行された命令に従って周辺機器にアクセスする。【選択図】図３
2016045596.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとバッファ部とを備え、周辺機器が接続可能な情報処理装置であって、
前記情報処理装置を制御する第１オペレーティングシステム部と、
前記第１オペレーティングシステム部、および、前記情報処理装置を制御する第２オペレーティングシステム部の何れか一方を切り替えて機能させるモニタ部と、
を有し、
前記モニタ部は、前記第２オペレーティングシステム部が前記周辺機器へのアクセス要求を発行した場合、前記第２オペレーティングシステム部の状態を待避させて機能を停止させ、前記第１オペレーティングシステム部の状態を復帰して機能を開始させる切替部を含み、
前記第１オペレーティングシステム部は、前記第２オペレーティングシステム部により書き込まれた前記周辺機器への前記アクセス要求を前記バッファ部から読み出し、読み出した前記アクセス要求を前記周辺機器により受け付け可能な単位の命令に分割し、分割したそれぞれの命令を発行する要求入出力部と、
前記要求入出力部により発行された命令に従って前記周辺機器にアクセスするアクセス部と、
を含む
情報処理装置。
【請求項２】
前記第２オペレーティングシステム部をさらに備え、
前記第２オペレーティングシステム部は、前記周辺機器への前記アクセス要求を前記バッファ部に書き込む転送部を含む
請求項１に記載の情報処理装置。
【請求項３】
前記第１オペレーティングシステム部は、前記プロセッサが第１オペレーティングシステムを実行することにより機能し、
前記第２オペレーティングシステム部は、前記プロセッサが第２オペレーティングシステムを実行することにより機能し、
前記第１オペレーティングシステムは、前記第２オペレーティングシステムよりも、コード数が少ない
請求項２に記載の情報処理装置。
【請求項４】
前記アクセス部は、前記周辺機器からアクセス結果を受け取り、
前記要求入出力部は、前記アクセス部が受け取った前記アクセス結果を前記バッファ部に書き込み、
前記切替部は、前記周辺機器へのアクセスが完了した場合、前記第１オペレーティングシステム部の状態を待避させて機能を停止させ、前記第２オペレーティングシステム部の状態を復帰して機能を開始させ、
前記転送部は、前記周辺機器へのアクセスが完了した場合、前記バッファ部から前記アクセス結果を読み出す
請求項２または３に記載の情報処理装置。
【請求項５】
前記第１オペレーティングシステム部は、前記周辺機器の処理中に、前記第１オペレーティングシステム部の機能を停止して前記第２オペレーティングシステム部を機能させるか否かを判定する切替判定部をさらに含み、
前記切替部は、
前記切替判定部が前記第１オペレーティングシステム部の機能を停止して前記第２オペレーティングシステム部を機能させると判定した場合、前記第１オペレーティングシステム部の状態を待避させて機能を停止させ、前記第２オペレーティングシステム部の状態を復帰して機能を開始させ、
前記周辺機器が前記第１オペレーティングシステム部からのアクセスに応じて開始した処理を完了した場合、前記第２オペレーティングシステム部の状態を待避させて機能を停止させ、前記第１オペレーティングシステム部の状態を復帰して機能を開始させる
請求項４に記載の情報処理装置。
【請求項６】
前記切替判定部は、前記周辺機器による推定の処理時間が予め定められた時間以上の場合、前記第１オペレーティングシステム部の機能を停止して前記第２オペレーティングシステム部の機能を開始させると判定する
請求項５に記載の情報処理装置。
【請求項７】
前記情報処理装置は、二次記憶部と、前記プロセッサを前記第２オペレーティングシステム部として機能させるためのプログラムおよびデータを記憶する揮発性主記憶部とをさらに備え、
前記モニタ部は、
前記第２オペレーティングシステム部の機能を停止させる場合、前記揮発性主記憶部に記憶されている前記プログラムおよび前記データのコピーを前記二次記憶部に書き込み、前記揮発性主記憶部の電源を遮断し、
前記第２オペレーティングシステム部の機能を開始させる場合、前記揮発性主記憶部の電源を投入し、前記二次記憶部から前記プログラムおよび前記データのコピーを読み出して前記揮発性主記憶部に書き込むハイバネーション制御部をさらに含む
請求項４から６の何れか１項に記載の情報処理装置。
【請求項８】
前記プロセッサを前記第１オペレーティングシステム部として機能させるためのプログラムおよびデータを記憶する不揮発性主記憶部とをさらに備え、
前記不揮発性主記憶部は、前記バッファ部を含む
請求項７に記載の情報処理装置。
【請求項９】
前記ハイバネーション制御部は、
前記第２オペレーティングシステム部の機能を停止させる場合、前記第２オペレーティングシステム部が使用し且つ前記第１オペレーティングシステム部が使用しない前記周辺機器の状態を前記二次記憶部に書き込み、前記周辺機器の電源を遮断し、
前記第２オペレーティングシステム部の機能を開始させる場合、前記第２オペレーティングシステム部が使用し且つ前記第１オペレーティングシステム部が使用しない前記周辺機器の電源を投入し、前記周辺機器を前記二次記憶部に記憶されている状態に設定する
請求項７または８に記載の情報処理装置。
【請求項１０】
前記第２オペレーティングシステム部は、
前記周辺機器へのアクセスを前記第１オペレーティングシステム部に実行させるか否かを判定する転送判定部と、
前記周辺機器へのアクセスを前記第１オペレーティングシステム部で実行させないと判定した場合、前記アクセス要求を前記周辺機器により受け付け可能な単位の命令に分割し、分割したそれぞれの命令に応じて前記周辺機器にアクセスする第２アクセス部と、
を含み、
前記転送部は、前記周辺機器へのアクセスを前記第１オペレーティングシステム部で実行させると判定した場合、前記周辺機器への前記アクセス要求を前記バッファ部に書き込み、
前記切替部は、前記転送判定部が前記周辺機器へのアクセスを前記第１オペレーティングシステム部で実行させると判定した場合、前記第２オペレーティングシステム部の状態を待避させて機能を停止させ、前記第１オペレーティングシステム部の状態を復帰して機能を開始させる
請求項７から９の何れか１項に記載の情報処理装置。
【請求項１１】
前記転送判定部は、前記第２オペレーティングシステム部の停止可能時間が第１の閾値以上であり、且つ、前記周辺機器の処理時間が第２の閾値以上である場合、前記アクセス要求を前記第１オペレーティングシステム部に実行させると判定する
請求項１０に記載の情報処理装置。
【請求項１２】
前記転送部は、前記周辺機器へのアクセスを実行させる命令列を含むアクセス要求を前記バッファ部に書き込み、
前記第１オペレーティングシステム部は、前記命令列を前記バッファ部から読み出して実行するコード実行部を含み、
前記要求入出力部は、前記コード実行部による前記命令列の実行に従って、前記周辺機器へのアクセス命令を発行する
請求項２から１１の何れか１項に記載の情報処理装置。
【請求項１３】
前記第１オペレーティングシステム部は、前記命令列の正当性を検証する検証部をさらに含み、
前記コード実行部は、前記検証部による前記命令列の正当性の検証が成功した場合に、前記命令列を実行する
請求項１２に記載の情報処理装置。
【請求項１４】
プロセッサとバッファ部とを備え、周辺機器が接続可能な情報処理装置で実行される方法であって、
前記情報処理装置は、
前記情報処理装置を制御する第１オペレーティングシステム部と、
前記第１オペレーティングシステム部、および、前記情報処理装置を制御する第２オペレーティングシステム部の何れか一方を切り替えて機能させるモニタ部と、
を有し、
前記モニタ部が、前記第２オペレーティングシステム部が前記周辺機器へのアクセス要求を発行した場合、前記第２オペレーティングシステム部の状態を待避させて機能を停止させ、前記第１オペレーティングシステム部の状態を復帰して機能を開始させる切替ステップと、
前記第１オペレーティングシステム部が、前記第２オペレーティングシステム部により書き込まれた前記周辺機器への前記アクセス要求を前記バッファ部から読み出し、読み出した前記アクセス要求を前記周辺機器により受け付け可能な単位の命令に分割し、分割したそれぞれの命令を発行する要求入出力ステップと、
前記第１オペレーティングシステム部が、前記要求入出力ステップで発行された命令に従って前記周辺機器にアクセスするアクセスステップと、
を実行する方法。
【請求項１５】
プロセッサとバッファ部とを備え、周辺機器が接続可能な情報処理装置で実行されるプログラムであって、
前記情報処理装置を、
前記情報処理装置を制御する第１オペレーティングシステム部と、
前記第１オペレーティングシステム部、および、前記情報処理装置を制御する第２オペレーティングシステム部の何れか一方を切り替えて機能させるモニタ部と、
して機能させ、
前記情報処理装置に、
前記モニタ部が、前記第２オペレーティングシステム部が前記周辺機器へのアクセス要求を発行した場合、前記第２オペレーティングシステム部の状態を待避させて機能を停止させ、前記第１オペレーティングシステム部の状態を復帰して機能を開始させる切替ステップと、
前記第１オペレーティングシステム部が、前記第２オペレーティングシステム部により書き込まれた前記周辺機器への前記アクセス要求を前記バッファ部から読み出し、読み出した前記アクセス要求を前記周辺機器により受け付け可能な単位の命令に分割し、分割したそれぞれの命令を発行する要求入出力ステップと、
前記第１オペレーティングシステム部が、前記要求入出力ステップで発行された命令に従って前記周辺機器にアクセスするアクセスステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置、方法およびプログラムに関する。
【背景技術】
【０００２】
従来より、情報処理装置の仮想化技術が知られている。仮想化技術を用いることにより単一の情報処理装置で複数のオペレーティングシステム（ＯＳ）を並行して実行させることができる。また、仮想化技術を用いてＯＳの切り替えをすることにより、周辺機器へのデータの入出力のアクセスを、一方のＯＳから他方のＯＳへとオフロードすることができる。
【０００３】
ところで、周辺機器が有するバッファメモリの容量等の制限により、周辺機器へのアクセスは、通常、数バイトから数キロバイトのデータ単位で実行される。従って、比較的に大きいデータの入出力のアクセスを、一方のＯＳから他方のＯＳへとオフロードする場合には、数バイトから数キロバイトのデータ毎にＯＳの切り替えをしなければならない。従って、比較的に大きいデータの入出力のアクセスをオフロードする場合には、切り替え頻度が増加し、処理のオーバヘッドが大きくなってしまっていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１９４９１１号公報
【特許文献２】特開２０１２−２１２２５７号公報
【特許文献３】特開２０１０−２１１６４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、オペレーティングシステムを切り替えて周辺機器へアクセスさせる場合に、オペレーティングシステムの切り替え頻度を減らすことにある。
【課題を解決するための手段】
【０００６】
本実施形態に係る情報処理装置は、プロセッサとバッファ部とを備え、周辺機器が接続可能である。前記情報処理装置は、第１オペレーティングシステム部と、モニタ部と、を有する。前記第１オペレーティングシステム部は、前記情報処理装置を制御する。前記モニタ部は、前記第１オペレーティングシステム部、および、前記情報処理装置を制御する第２オペレーティングシステム部の何れか一方を切り替えて機能させる。
【０００７】
前記モニタ部は、切替部を含む。前記切替部は、前記第２オペレーティングシステム部が前記周辺機器へのアクセス要求を発行した場合、前記第２オペレーティングシステム部の状態を待避させて機能を停止させ、前記第１オペレーティングシステム部の状態を復帰して機能を開始させる。前記第１オペレーティングシステム部は、要求入出力部と、アクセス部と、を含む。前記要求入出力部は、前記第２オペレーティングシステム部により書き込まれた前記周辺機器へのアクセス要求を前記バッファ部から読み出し、読み出した前記アクセス要求を前記周辺機器により受け付け可能な単位の命令に分割し、分割したそれぞれの命令を発行する。前記アクセス部は、前記要求入出力部により発行された命令に従って前記周辺機器にアクセスする。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態に係る情報処理装置のハードウェア構成を示す図。
【図２】第１実施形態に係る情報処理装置の概略の機能構成を示す図。
【図３】第１実施形態に係る情報処理装置の機能構成を示す図。
【図４】第１実施形態に係るバッファ部に書き込まれる情報の第１例を示す図。
【図５】第１実施形態に係るバッファ部に書き込まれる情報の第２例を示す図。
【図６】第１実施形態に係る情報処理装置の処理フローを示す図。
【図７】第１実施形態の変形例に係る情報処理装置の機能構成を示す図。
【図８】第１実施形態の変形例に係る情報処理装置の処理フローを示す図。
【図９】第１実施形態の変形例に係る切替部の処理フローを示す図。
【図１０】第２実施形態に係る情報処理装置のハードウェア構成を示す図。
【図１１】第２実施形態に係る情報処理装置の機能構成を示す図。
【図１２】ハイバネーション制御部の第１の処理フローを示す図。
【図１３】ハイバネーション制御部の第２の処理フローを示す図。
【図１４】第２実施形態の変形例に係る情報処理装置の機能構成を示す図。
【図１５】第２実施形態の変形例に係る転送判定部の処理フローを示す図。
【図１６】第３実施形態に係る情報処理装置の機能構成を示す図。
【図１７】第３実施形態に係るバッファ部に書き込まれる情報の例を示す図。
【図１８】第３実施形態に係る情報処理装置の処理フローを示す図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら実施形態に係る情報処理装置について詳細に説明する。本実施形態に係る情報処理装置は、オペレーティングシステムを切り替えて周辺機器へのアクセスをオフロードする場合に、オペレーティングシステムの切り替え頻度を減らすことができる。これにより、本実施形態に係る情報処理装置は、処理のオーバヘッドを削減し、リアルタイム性を向上し、さらに、省電力化することができる。なお、以下、複数の実施形態および変形例を説明するが、略同一の機能の構成要素には図面中に同一の符号を付けて、重複した説明を省略する。
【００１０】
（第１実施形態）
図１は、第１実施形態に係る情報処理装置１０のハードウェア構成を示す図である。情報処理装置１０は、ＣＰＵ（Central  Processing  Unit）１１（プロセッサ）と、主記憶部１２と、ストレージ１３と、周辺機器１４とを備える。
【００１１】
ＣＰＵ１１は、主記憶部１２に記憶されたプログラムに記述された命令列を実行する。主記憶部１２は、ＣＰＵ１１によるプログラムの実行の際の作業領域として用いられる。主記憶部１２は、オペレーティングシステム（ＯＳ）と呼ばれるプログラムを記憶する。オペレーティングシステムは、ＣＰＵ１１により実行される。オペレーティングシステムは、情報処理装置１０に備えられるデバイスを管理および制御し、アプリケーションプログラムにハードウェアデバイスを利用させるための基本的なプログラムである。
【００１２】
本実施形態においては、主記憶部１２は、マイクロＯＳ（第１オペレーティングシステム）および大型ＯＳ（第２オペレーティングシステム）を記憶する。さらに、主記憶部１２は、マイクロＯＳおよび大型ＯＳに関連するプログラムおよびデータも記憶する。
【００１３】
マイクロＯＳは、大型ＯＳよりもコード数が少ない。マイクロＯＳは、一例として、大型ＯＳよりもコード数が１／１００程度である。従って、ＣＰＵ１１がマイクロＯＳを実行した場合の消費電力は、一般にＣＰＵ１１が大型ＯＳを実行した場合の消費電力よりも小さい。また、マイクロＯＳは、大型ＯＳと比べて、管理および制御可能なハードウェアデバイスの数が少なくてもよい。
【００１４】
大型ＯＳは、一例として、Ｌｉｎｕｘ（登録商標）またはＷｉｎｄｏｗｓ（登録商標）等の汎用ＯＳである。大型ＯＳは、汎用ＯＳに限らず、特殊な分野で使用される専用のＯＳであってもよい。
【００１５】
マイクロＯＳは、一例として、汎用ＯＳに存在するセキュリティの脆弱性を補完するためのセキュアＯＳである。マイクロＯＳは、セキュアＯＳに限らず、大型ＯＳより小型であればどのようなＯＳであってもよい。
【００１６】
また、主記憶部１２は、モニタプログラムと呼ばれるプログラム、および、モニタプログラムに関連するプログラムおよびデータを記憶する。モニタプログラムは、ＣＰＵ１１により実行される。モニタプログラムは、ＣＰＵ１１に実行されることにより、情報処理装置１０を仮想化した仮想マシンをオペレーティングシステムに提供することができる。
【００１７】
ＣＰＵ１１がモニタプログラムを実行することにより、複数の仮想マシンによりオペレーティングシステムを並行して実行させることができる。モニタプログラムは、時分割で複数の仮想マシンを切替えて実行することにより、オペレーティングシステムを並行して実行させる。本実施形態においては、ＣＰＵ１１は、モニタプログラムを実行して仮想マシンを機能させ、マイクロＯＳおよび大型ＯＳの何れか一方を切り替えて機能させる。
【００１８】
ストレージ１３は、不揮発性の記憶装置であり、モニタプログラム、マイクロＯＳおよび大型ＯＳを記憶する。ＣＰＵ１１は、情報処理装置１０の起動時において、ストレージ１３からモニタプログラム、マイクロＯＳおよび大型ＯＳを読み出して、主記憶部１２に記憶させる。そして、ＣＰＵ１１は、モニタプログラム、およびマイクロＯＳおよび大型ＯＳのそれぞれを実行する。
【００１９】
周辺機器１４は、バスおよびインタフェース等を介して接続可能な機器であって、情報処理装置１０の一部として機能する。周辺機器１４は、例えばハードディスクドライブ等の記憶装置、ネットワークインタフェースカード等の通信機器、測定機器および信号発生機器、音声入出力装置、および、画像入出力装置等の、ＣＰＵ１１から制御可能な機器である。
【００２０】
なお、情報処理装置１０は、複数の周辺機器１４を備えてよい。また、情報処理装置１０は、入力装置および表示装置等のさらに他のデバイスを備えてもよい。
【００２１】
図２は、第１実施形態に係る情報処理装置１０の概略の機能構成を示す図である。情報処理装置１０は、ハードウェア部２０と、マイクロＯＳ部２１（第１オペレーティングシステム部）と、大型ＯＳ部２２（第２オペレーティングシステム部）と、モニタ部２３とを備える。
【００２２】
ハードウェア部２０は、図１に示したＣＰＵ１１、主記憶部１２、ストレージ１３および周辺機器１４等を備える。
【００２３】
マイクロＯＳ部２１は、ＣＰＵ１１がマイクロＯＳを実行することにより機能する。マイクロＯＳ部２１は、情報処理装置１０に備えられるハードウェアデバイスを管理および制御し、アプリケーションプログラムに対してこれらのハードウェアデバイスを仮想化して提供する。
【００２４】
大型ＯＳ部２２は、ＣＰＵ１１が大型ＯＳを実行することにより機能する。大型ＯＳ部２２は、情報処理装置１０に備えられるハードウェアデバイスを管理および制御し、アプリケーションプログラムに対してこれらのハードウェアデバイスを仮想化して提供する。
【００２５】
モニタ部２３は、ＣＰＵ１１がモニタプログラムを実行することにより機能する。モニタ部２３は、マイクロＯＳ部２１および大型ＯＳ部２２に仮想マシンを提供し、マイクロＯＳ部２１および大型ＯＳ部２２を仮想マシン上で動作させる。そして、モニタ部２３は、マイクロＯＳ部２１および大型ＯＳ部２２の何れか一方を切り替えて機能させる。モニタ部２３は、マイクロＯＳ部２１または大型ＯＳ部２２からの呼び出し、および、周辺機器１４等からの割り込みにより切り替えを実行する。
【００２６】
図３は、第１実施形態に係る情報処理装置１０の機能構成を示す図である。以下、マイクロＯＳ部２１、大型ＯＳ部２２およびモニタ部２３の詳細な機能についてさらに説明する。
【００２７】
大型ＯＳ部２２は、要求部３１と、転送部３２とを含む。モニタ部２３は、切替部３３を含む。マイクロＯＳ部２１は、要求入出力部３４と、アクセス部３５とを含む。また、主記憶部１２は、バッファ部３６と、状態保存部３７とを含む。
【００２８】
要求部３１は、大型ＯＳ部２２が周辺機器１４にアクセスする場合に呼び出される。例えば、要求部３１は、大型ＯＳ部２２が周辺機器１４へとデータを出力（ライト）する場合、または、大型ＯＳ部２２が周辺機器１４からデータを入力（リード）する場合に呼び出される。そして、要求部３１は、転送部３２を呼び出して、周辺機器１４へのアクセス要求（例えば、周辺機器１４へのデータの出力（ライト）の要求、または、周辺機器１４からのデータの入力（リード）の要求）を発行する。
【００２９】
要求部３１から発行されるアクセス要求は、周辺機器１４により受付可能なデータ単位の命令でなくてよい。例えば、ハードディスクドライブからデータを読み出す場合、情報処理装置１０は、入出力バッファの容量等の制限から、１回の命令で予め定められた単位（例えば、４Ｋバイト）でしかデータを読み出すことができない。つまり、ハードディスクドライブからデータを読み出す場合、情報処理装置１０は、制限を超えるデータ（例えば１００Ｍバイト）を単一の命令で読み出すことはできない。しかし、要求部３１は、周辺機器１４により受付可能なデータ単位より大きなデータ単位でのアクセス要求、例えば、ハードディスクのセクタ番号１から１００Ｍバイト分のデータを入力（リード）するといったアクセス要求を発行してもよい。
【００３０】
転送部３２は、大型ＯＳ部２２が周辺機器１４へのアクセス要求を発行する場合、要求部３１により呼び出される。転送部３２は、要求部３１から呼び出された場合、要求部３１により発行された周辺機器１４へのアクセス要求をバッファ部３６に書き込む。
【００３１】
バッファ部３６には、一例として、図４および図５に示されるようなアクセス要求が書き込まれる。すなわち、バッファ部３６には、アクセス対象の周辺機器１４を特定する情報、種別、トータルサイズ、周辺機器１４の固有データ、および、入出力データが書き込まれる。
【００３２】
図４の表中におけるアクセス対象の周辺機器を特定する情報は、情報処理装置１０に接続された周辺機器１４を識別する情報である。種別は、その周辺機器１４へのアクセスが、出力（ライト）なのか、入力（リード）なのかを表す。トータルサイズは、出力（ライト）または入力（リード）をするデータのサイズを表す。
【００３３】
図４の表中における周辺機器の固有データは、例えば、その周辺機器１４にアクセスするために必要となるデータである。例えば周辺機器１４がハードディスクドライブ（ＨＤＤ１）である場合には、周辺機器１４の固有データは、開始セクタの番号等である。また、例えば周辺機器１４がネットワークインタフェースカード（ＮＩＣ１）である場合には、周辺機器１４の固有データは、通信のプロトコル（例えばＴＣＰ／ＩＰ）、接続先のＩＰアドレス（例えばａａａ．ｂｂｂ．ｃｃｃ．ｄｄｄ）およびポート番号（例えばポート“８０”）、および、接続後に最初に送るメッセージ（例えば「初期化コマンド＝ＧＥＴ  ｉｎｄｅｘ．ｈｔｍｌ  ＨＴＴＰ／１．０￥ｎ￥ｎ」）等である。
【００３４】
入出力データは、アクセスの種別が出力（ライト）の場合には、周辺機器１４へと出力するデータが格納される。入出力データは、アクセスの種別が入力（リード）の場合には、周辺機器１４から入力したデータが格納される。なお、アクセスの種別が入力（リード）の場合、転送部３２は、入出力データが空の状態のアクセス要求をバッファ部３６に書き込む。
【００３５】
そして、転送部３２は、アクセス要求をバッファ部３６に書き込んだ後、オペレーティングシステムを切り替えるために切替部３３を呼び出す。
【００３６】
切替部３３は、大型ＯＳ部２２が周辺機器１４へのアクセス要求を発行するために転送部３２から呼び出される。切替部３３は、大型ＯＳ部２２の状態を待避させて機能を停止させ、マイクロＯＳ部２１の状態を復帰して機能を開始させる。
【００３７】
より具体的には、切替部３３は、大型ＯＳ部２２のコンテキストを取得して、取得したコンテキストを状態保存部３７に書き込む（コンテキストの待避）。続いて、切替部３３は、マイクロＯＳ部２１のコンテキストを状態保存部３７から読み出して、ＣＰＵ１１に設定する（コンテキストの復帰）。なお、コンテキストとは、ＣＰＵ１１のレジスタ等のマイクロＯＳ部２１と大型ＯＳ部２２で共有するデバイスの状態を表す情報である。複数のＯＳを並行して実行する場合、ＣＰＵ１１は、一方のＯＳの実行時のコンテキストを待避し、他方のＯＳのコンテキストを復帰することにより、ＯＳの切り替えをすることができる。
【００３８】
そして、切替部３３は、マイクロＯＳ部２１の状態を復帰して機能を開始させた後、大型ＯＳ部２２が発行した周辺機器１４へのアクセス要求をマイクロＯＳ部２１に実行させるために、要求入出力部３４を呼び出す。
【００３９】
要求入出力部３４は、大型ＯＳ部２２が周辺機器１４へのアクセス要求を発行した場合、切替部３３により呼び出される。要求入出力部３４は、大型ＯＳ部２２により書き込まれた周辺機器１４へのアクセス要求をバッファ部３６から読み出す。要求入出力部３４は、一例として、図４または図５に示されるようなアクセス要求を読み出す。
【００４０】
要求入出力部３４は、読み出したアクセス要求を周辺機器１４により受け付け可能な単位の命令に分割し、分割したそれぞれの命令をアクセス部３５に対して発行する。より具体的には、要求入出力部３４は、アクセス要求を周辺機器１４が入出力できるデータサイズの命令に分割し、分割した命令を入出力済みのデータサイズがアクセス要求に含まれるトータルサイズに達するまで、繰り返して発行する。例えばハードディスクドライブのセクタ番号１から１００Ｍバイト分について入力（リード）するというアクセス要求の場合、要求入出力部３４は、最初にセクタ番号１から１２８セクタ分のデータのリード命令を発行し、次に１２９セクタから１２８セクタ分のデータのリード命令を発行するといったように、アクセス要求を複数のリード命令に分割して繰り返す。
【００４１】
そして、要求入出力部３４は、アクセス部３５を呼び出し、発行した命令を順次にアクセス部３５に渡す。
【００４２】
アクセス部３５は、要求入出力部３４に呼び出される。アクセス部３５は、要求入出力部３４により発行された命令に従って周辺機器１４にアクセスする。そして、アクセス部３５は、周辺機器１４からアクセス結果を受け取り、受け取ったアクセス結果を要求入出力部３４へと返す。
【００４３】
より具体的には、アクセス部３５は、要求入出力部３４から出力命令（ライト命令）が発行された場合には、要求入出力部３４から、出力すべきデータを受け取るとともに、周辺機器１４の固有データを受け取る。そして、アクセス部３５は、指定された周辺機器１４に固有データに示された内容に従ってアクセスして、指定された周辺機器１４にデータを出力する。また、アクセス部３５は、要求入出力部３４から入力命令（リード命令）が発行された場合には、要求入出力部３４から、周辺機器１４の固有データを受け取る。そして、アクセス部３５は、指定された周辺機器１４から固有データに示された内容に従ってアクセスして、指定された周辺機器１４からデータを入力し、入力したデータをアクセス結果として要求入出力部３４に返す。
【００４４】
要求入出力部３４は、発行した命令に応じた周辺機器１４へのアクセス結果を、アクセス部３５から受け取る。そして、要求入出力部３４は、アクセス部３５が受け取ったアクセス結果をバッファ部３６に書き込む。例えば、要求入出力部３４は、入力命令（リード命令）を発行した場合、周辺機器１４から入力したデータを受け取り、バッファ部３６におけるアクセス要求の入出力データの領域に書き込む。
【００４５】
そして、要求入出力部３４は、周辺機器１４へのアクセスが完了した場合、つまり、分割した全ての命令に従った周辺機器１４へのアクセスが完了した場合、切替部３３を呼び出す。
【００４６】
切替部３３は、周辺機器１４へのアクセスが完了したことにより要求入出力部３４から呼び出された場合、マイクロＯＳ部２１の状態を待避させて機能を停止させ、大型ＯＳ部２２の状態を復帰して機能を開始させる。より具体的には、切替部３３は、マイクロＯＳ部２１のコンテキストを取得して、取得したコンテキストを状態保存部３７に書き込む。続いて、切替部３３は、大型ＯＳ部２２のコンテキストを状態保存部３７から読み出して、ＣＰＵ１１に設定する。そして、切替部３３は、転送部３２を呼び出す。
【００４７】
転送部３２は、周辺機器１４へのアクセスが完了したことにより切替部３３から呼び出された場合、バッファ部３６からアクセス結果を読み出す。例えば、周辺機器１４からのデータを入力（リード）するアクセス要求を発行した場合、バッファ部３６から入力データを読み出す。そして、転送部３２は、読み出したアクセス結果を、要求部３１に返す。
【００４８】
図６は、第１実施形態に係る情報処理装置１０の処理フローを示す図である。次に、情報処理装置１０の処理フローを説明する。
【００４９】
まず、要求部３１は、転送部３２を呼び出し、転送部３２にアクセス要求を渡す（Ｓ１１）。続いて、転送部３２は、アクセス要求に含まれる、アクセス対象の周辺機器１４を特定する値、種別およびトータルサイズをバッファ部３６に書き込む（Ｓ１２）。続いて、転送部３２は、アクセス要求に含まれる周辺機器１４の固有データをバッファ部３６に書き込む（Ｓ１３）。
【００５０】
続いて、転送部３２は、周辺機器１４へのアクセスの種別が、出力（ライト）であるか入力（リード）であるかを判定する（Ｓ１４）。出力（ライト）の場合、転送部３２は、バッファ部３６にデータを書き込み（Ｓ１５）、処理をステップＳ１６に進める。入力（リード）の場合、転送部３２は、そのまま処理をステップＳ１６に進める。そして、ステップＳ１６において、転送部３２は、切替部３３を呼び出す。
【００５１】
続いて、切替部３３は、大型ＯＳ部２２のコンテキストを取得して状態保存部３７に書き込む。これにより、切替部３３は、大型ＯＳ部２２のコンテキストを待避させて、大型ＯＳ部２２の機能を停止させることができる（Ｓ１７）。
【００５２】
続いて、切替部３３は、マイクロＯＳ部２１のコンテキストを状態保存部３７から読み出して、コンテキストを再設定する。これにより、切替部３３は、マイクロＯＳ部２１のコンテキストを復帰させて、マイクロＯＳ部２１の機能を開始させることができる（Ｓ１８）。そして、切替部３３は、要求入出力部３４を呼び出す。
【００５３】
続いて、要求入出力部３４は、入出力済みのデータサイズが、バッファ部３６に書き込まれているトータルサイズと同一であるか否かを判定する（Ｓ１９）。要求入出力部３４は、入出力済みのデータサイズとトータルサイズとが同一である場合には（Ｓ１９のＹｅｓ）、処理をステップＳ２４に進め、同一ではない場合には（Ｓ１９のＮｏ）、処理をステップＳ２０に進める。
【００５４】
ステップＳ２０において、要求入出力部３４は、アクセスの種別が出力（ライト）であるか入力（リード）であるかを判定する。種別が出力（ライト）である場合、要求入出力部３４は、アクセス要求を分割した出力命令（ライト命令）をアクセス部３５に発行して、バッファ部３６に記憶されているデータを周辺機器１４に出力させる（Ｓ２１）。種別が入力（リード）である場合、要求入出力部３４は、アクセス要求を分割した入力命令（リード命令）をアクセス部３５に発行して、アクセス部３５が周辺機器１４から受け取ったデータをバッファ部３６に書き込む（Ｓ２２）。要求入出力部３４は、分割した命令を発行すると、処理をステップＳ２３に進める。
【００５５】
続いて、ステップＳ２３において、要求入出力部３４は、入出力済みのデータサイズを更新する。要求入出力部３４は、ステップＳ２３を終えると処理をステップＳ１９に戻す。そして、要求入出力部３４は、ステップＳ１９からステップＳ２３までの処理を、入力済みのデータサイズとトータルサイズとが同一となるまで繰り返す。例えば、トータルサイズが１Ｍバイト（１０２４Ｋバイト）であり、周辺機器１４が有する入出力バッファの量が１Ｋバイトであったとする場合、要求入出力部３４は、ステップＳ１９からステップＳ２３までの処理を１０２４回繰り返す。
【００５６】
入力済みのデータサイズとトータルサイズとが同一となった場合（Ｓ１９のＹｅｓ）、アクセス要求に応じた周辺機器１４へのアクセスを完了したので、要求入出力部３４は、切替部３３を呼び出す（Ｓ２４）。続いて、切替部３３は、マイクロＯＳ部２１のコンテキストを取得して状態保存部３７に書き込む。これにより、切替部３３は、マイクロＯＳ部２１のコンテキストを待避させて、マイクロＯＳ部２１の機能を停止させることができる（Ｓ２５）。
【００５７】
続いて、切替部３３は、大型ＯＳ部２２のコンテキストを状態保存部３７から読み出して、コンテキストを再設定する。これにより、切替部３３は、大型ＯＳ部２２のコンテキストを復帰させて、大型ＯＳ部２２の機能を開始させることができる（Ｓ２６）。そして、切替部３３は、転送部３２を呼び出す。
【００５８】
続いて、転送部３２は、アクセス結果を要求部３１に返す（Ｓ２７）。なお、アクセス要求の種別が入力（リード）の場合には、転送部３２は、バッファ部３６から入力データを読み出して、要求部３１に渡す。ステップＳ２７を終えると、情報処理装置１０は、本フローを終了する。
【００５９】
以上のように本実施形態に係る情報処理装置１０は、大型ＯＳ部２２による周辺機器１４のアクセス要求をマイクロＯＳ部２１にオフロードする場合、マイクロＯＳ部２１でアクセス要求を分割して周辺機器１４にアクセスする。これにより、本実施形態に係る情報処理装置１０によれば、オペレーティングシステムの切り替えの頻度を少なくしてオーバヘッドを無くし、処理のリアルタイム性を向上させることができる。
【００６０】
例えば、１Ｍバイト（１０２４Ｋバイト）のデータをネットワークを介して外部へ出力する場合、ネットワークインタフェースカードが持つデータ入出力用バッファの容量が１Ｋバイトであれば、情報処理装置１０は、データを１０２４個に分割してネットワークインタフェースカードにアクセスする。しかしながら、情報処理装置１０は、１Ｍバイトのアクセス要求をそのままバッファ部３６に書き込むので、このような場合であっても、オペレーティングシステムの切り替えを、往復で２０４８回もせずに、往復２回で完了させることができる。
【００６１】
（第１実施形態の変形例）
図７は、第１実施形態の変形例に係る情報処理装置１０の機能構成を示す図である。第１実施形態の変形例に係る情報処理装置１０は、周辺機器１４の処理中において、マイクロＯＳ部２１の機能を停止して、大型ＯＳ部２２を機能させることができる。なお、本変形例に係る情報処理装置１０は、図３に示す機能構成と略同一である。以下、図３に示す機能構成との相違点について説明する。
【００６２】
本変形例に係るマイクロＯＳ部２１は、切替判定部４１をさらに含む。切替判定部４１は、アクセス部３５から呼び出される。より具体的には、切替判定部４１は、アクセス部３５が周辺機器１４にアクセスした結果、周辺機器１４が処理中となった後に、アクセス部３５から呼び出される。
【００６３】
切替判定部４１は、周辺機器１４の処理中に、マイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させるか否かを判定する。切替判定部４１は、一例として、周辺機器１４による推定の処理時間が予め定められた時間以上の場合、マイクロＯＳ部２１の機能を停止して大型ＯＳ部２２の機能を開始させると判定する。また、切替判定部４１は、一例として、アクセス部３５から呼び出された場合、すなわち、周辺機器１４が処理中となった場合、常に、マイクロＯＳ部２１の機能を停止して大型ＯＳ部２２の機能を開始させると判定してもよい。
【００６４】
切替判定部４１は、マイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させると判定した場合には、切替部３３を呼び出す。切替判定部４１は、マイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させると判定しなかった場合には、特に処理を実行せずに、アクセス部３５に処理を戻す。
【００６５】
周辺機器１４は、アクセス部３５からのアクセスに応じて処理を開始した後は、マイクロＯＳ部２１の機能が停止しても、その処理を継続する。また、周辺機器１４は、処理が完了した場合、処理が完了したことを通知する割り込みを、切替部３３へ与える。
【００６６】
切替部３３は、切替判定部４１がマイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させると判定したことにより、切替判定部４１から呼び出された場合、マイクロＯＳ部２１の状態を待避させて機能を停止させ、大型ＯＳ部２２の状態を復帰して機能を開始させる。そして、切替部３３は、転送部３２を呼び出す。転送部３２は、切替判定部４１がマイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させると判定したことにより切替部３３から呼び出された場合、アクセス要求を発行したタスクを切り替えて、他のタスクを実行する。これにより、大型ＯＳ部２２は、周辺機器１４の処理中において、アクセス要求を発行した処理とは異なる他の処理を実行することができる。
【００６７】
また、切替部３３は、周辺機器１４から処理が完了したことを通知する割り込みを受け取った場合、周辺機器１４に対するアクセス元が、マイクロＯＳ部２１であるか大型ＯＳ部２２であるかを判定する。切替部３３は、周辺機器１４に対するアクセス元が大型ＯＳ部２２である場合には、処理が完了したことを通知する割り込みを大型ＯＳ部２２へと与える。
【００６８】
切替部３３は、周辺機器１４に対するアクセス元がマイクロＯＳ部２１である場合には、すなわち、周辺機器１４がマイクロＯＳ部２１からのアクセスによって開始した処理を完了した場合、大型ＯＳ部２２の状態を待避させて機能を停止させ、マイクロＯＳ部２１の状態を復帰して機能を開始させる。そして、切替部３３は、切替判定部４１を呼び出す。
【００６９】
切替判定部４１は、切替部３３から呼び出されると、アクセス部３５に処理を戻す。アクセス部３５は、切替判定部４１から処理が戻されると、周辺機器１４に対するアクセスを継続する。これにより、アクセス部３５は、周辺機器１４からのアクセス結果を受け取ることができる。そして、アクセス部３５は、要求入出力部３４から次の命令が発行された場合、周辺機器１４へとアクセスして処理を開始させた後、再度、切替判定部４１を呼び出す。
【００７０】
図８は、第１実施形態の変形例に係る情報処理装置１０の処理フローを示す図である。本変形例に係る情報処理装置１０は、ステップＳ１１からステップＳ１８までの処理は、図６に示すフローと同一である。従って、本変形例の処理フローについては、ステップＳ１８より後を説明する。
【００７１】
ステップＳ１８の処理を終えると、切替部３３は、要求入出力部３４を呼び出して、処理をステップＳ３１に進める。ステップＳ３１において、要求入出力部３４は、入出力済みのデータサイズが、バッファ部３６に書き込まれているトータルサイズと同一であるか否かを判定する。要求入出力部３４は、入出力済みのデータサイズとトータルサイズとが同一である場合には（Ｓ３１のＹｅｓ）、処理をステップＳ３８に進め、同一ではない場合には（Ｓ３１のＮｏ）、処理をステップＳ３２に進める。
【００７２】
ステップＳ３２において、要求入出力部３４は、アクセスの種別が出力（ライト）であるか入力（リード）であるかを判定する。種別が出力（ライト）である場合、要求入出力部３４は、アクセス要求を分割した出力命令（ライト命令）をアクセス部３５に発行して、バッファ部３６に記憶されているデータを周辺機器１４に出力させる（Ｓ３３）。種別が入力（リード）である場合、要求入出力部３４は、アクセス要求を分割した入力命令（リード命令）をアクセス部３５に発行する（Ｓ３４）。アクセス部３５は、要求入出力部３４が発行した命令に従って周辺機器１４にアクセスして、周辺機器１４に処理を開始させると、切替判定部４１を呼び出して処理をステップＳ３５に進める。
【００７３】
続いて、ステップＳ３５において、切替判定部４１は、周辺機器１４の処理中にマイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させるか否かを判定する。切替判定部４１は、周辺機器１４の処理中にマイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させると判定した場合には（Ｓ３５のＹｅｓ）、処理をステップＳ３８に進める。
【００７４】
切替判定部４１は、周辺機器１４の処理中にマイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させないと判定した場合には（Ｓ３５のＮｏ）、処理をステップＳ３６に進める。
【００７５】
ステップＳ３６において、要求入出力部３４は、ステップＳ３４またはステップＳ３５で発行した命令のアクセス結果を受け取り、バッファ部３６に書き込む。要求入出力部３４は、データを周辺機器１４から入力する命令（リード命令）を発行した場合には、周辺機器１４から取得したデータをバッファ部３６に書き込む。
【００７６】
続いて、ステップＳ３７において、要求入出力部３４は、入出力済みのデータサイズを更新する。要求入出力部３４は、ステップＳ３７を終えると処理をステップＳ３１に戻す。そして、要求入出力部３４は、ステップＳ３１からステップＳ３７までの処理を、入力済みのデータサイズとトータルサイズとが同一となるまで繰り返す。
【００７７】
周辺機器１４の処理中にマイクロＯＳ部２１の機能を停止して大型ＯＳ部２２を機能させると判定した場合（Ｓ３５のＹｅｓ）、または、入力済みのデータサイズとトータルサイズとが同一となった場合（Ｓ３１のＹｅｓ）、要求入出力部３４は、切替部３３を呼び出す（Ｓ３８）。続いて、切替部３３は、マイクロＯＳ部２１のコンテキストを取得して状態保存部３７に書き込む。これにより、切替部３３は、マイクロＯＳ部２１のコンテキストを待避させて、マイクロＯＳ部２１の機能を停止させることができる（Ｓ３９）。
【００７８】
続いて、切替部３３は、大型ＯＳ部２２のコンテキストを状態保存部３７から読み出して、コンテキストを再設定する。これにより、切替部３３は、大型ＯＳ部２２のコンテキストを復帰させて、大型ＯＳ部２２の機能を開始させることができる（Ｓ４０）。そして、切替部３３は、転送部３２を呼び出す。
【００７９】
続いて、転送部３２は、発行したアクセス要求に対する周辺機器１４の処理が未完了であるか否かを判定する（Ｓ４１）。発行したアクセス要求に対する周辺機器１４の処理が未完了ではない場合（Ｓ４１のＮｏ）、転送部３２は、処理をステップＳ４２に進める。ステップＳ４２において、転送部３２は、アクセス結果を要求部３１に返す。
【００８０】
発行したアクセス要求に対する周辺機器１４の処理が未完了である場合（Ｓ４１のＹｅｓ）、転送部３２は、処理をステップＳ４３に進める。ステップＳ４３において、転送部３２は、別のタスクに処理を切り替える。これにより情報処理装置１０は、周辺機器１４の処理中において、大型ＯＳ部２２に他の処理を実行させることができる。
【００８１】
そして、情報処理装置１０は、ステップＳ４２またはステップＳ４３の処理を終えると本フローを終了する。
【００８２】
図９は、第１実施形態の変形例に係る切替部３３の処理フローを示す図である。本変形例に係る切替部３３は、図８に示したフローと並行して、図９に示すフローを実行する。
【００８３】
まず、切替部３３は、周辺機器１４から処理の完了を示す割り込みを受け取るまで、処理を待機する（Ｓ４４）。切替部３３は、周辺機器１４から処理の完了を示す割り込みを受け取った場合（Ｓ４４のＹｅｓ）、処理をステップＳ４５に進める。
【００８４】
ステップＳ４５において、切替部３３は、割り込みをしてきた周辺機器１４に対するアクセス元が、マイクロＯＳ部２１であるか大型ＯＳ部２２であるかを判定する。切替部３３は、アクセス元が大型ＯＳ部２２である場合（Ｓ４５のＹｅｓ）、処理をステップＳ４６に進める。ステップＳ４６において、切替部３３は、処理が完了したことを通知する割り込みを大型ＯＳ部２２へと与え、本フローを終了する。
【００８５】
切替部３３は、アクセス元がマイクロＯＳ部２１である場合（Ｓ４５のＮｏ）、処理をステップＳ４７に進める。ステップＳ４７において、切替部３３は、大型ＯＳ部２２のコンテキストを取得して状態保存部３７に書き込む。これにより、切替部３３は、大型ＯＳ部２２のコンテキストを待避させて、大型ＯＳ部２２の機能を停止させることができる（Ｓ４７）。
【００８６】
続いて、切替部３３は、マイクロＯＳ部２１のコンテキストを状態保存部３７から読み出して、コンテキストを再設定する。これにより、切替部３３は、マイクロＯＳ部２１のコンテキストを復帰させて、マイクロＯＳ部２１の機能を開始させることができる（Ｓ４８）。
【００８７】
そして、切替部３３は、要求入出力部３４を呼び出す。要求入出力部３４は、切替部３３から呼び出されると、図８のステップＳ３６から処理を実行する。これにより、要求入出力部３４は、ステップＳ３１からステップＳ３７までのループに処理を復帰し、アクセス要求に応じた命令の発行処理を繰り返すことができる。
【００８８】
本変形例に係る情報処理装置１０は、周辺機器１４の処理中において、マイクロＯＳ部２１の機能を停止し、大型ＯＳ部２２を機能させることができる。これにより、情報処理装置１０は、オフロードによる大型ＯＳ部２２の機能の停止期間を短くし、より効率良く周辺機器１４に対するアクセスを実行することができる。
【００８９】
（第２実施形態）
図１０は、第２実施形態に係る情報処理装置５０のハードウェア構成を示す図である。本実施形態に係る情報処理装置５０は、大型ＯＳ部２２の機能の停止中に、大型ＯＳ部２２に関連するハードウェアデバイスの電源を遮断して省電力化を図ることができる。
【００９０】
本実施形態に係る情報処理装置５０は、図１に示した第１実施形態に係る情報処理装置１０の主記憶部１２に代えて、不揮発性主記憶部５１と、揮発性主記憶部５２と、電源管理部５３と、二次記憶部５４とを備える。
【００９１】
不揮発性主記憶部５１は、電源を遮断してもデータを保存し続けるメモリである。不揮発性主記憶部５１は、モニタプログラムおよびマイクロＯＳ、および、これらに関連するプログラムおよびデータを記憶し、ＣＰＵ１１によるモニタプログラムおよびマイクロＯＳの実行の際の作業領域として用いられる。不揮発性主記憶部５１は、一例として、ＭＲＡＭ（Magnetoresistive  Random  Access  Memory）である。
【００９２】
揮発性主記憶部５２は、電源を遮断すると、データを消失するメモリである。揮発性主記憶部５２は、大型ＯＳ、および、大型ＯＳに関連するプログラムおよびデータを記憶し、ＣＰＵ１１による大型ＯＳの実行の際の作業領域として用いられる。揮発性主記憶部５２は、一例として、ＤＲＡＭ（Dynamic  Random  Access  Memory）である。
【００９３】
電源管理部５３は、情報処理装置５０が備えるそれぞれのハードウェアデバイスの電源の投入および遮断を制御する。より具体的には、電源管理部５３は、ＣＰＵ１１からの制御に従って、揮発性主記憶部５２の電源の投入および遮断、それぞれの周辺機器１４の電源の投入および遮断を制御する。
【００９４】
二次記憶部５４は、電源を遮断してもデータを保存し続ける記憶装置であって、例えば、ハードディスクドライブまたはフラッシュメモリ等である。二次記憶部５４は、バスおよびインタフェース等を介してＣＰＵ１１に接続されている。
【００９５】
図１１は、第２実施形態に係る情報処理装置５０の概略の機能構成を示す図である。本実施形態に係る情報処理装置５０は、図３に示す機能構成と略同一である。以下、図３に示す機能構成との相違点について説明する。
【００９６】
本実施形態に係る不揮発性主記憶部５１は、バッファ部３６および状態保存部３７を含む。また、本実施形態に係るモニタ部２３は、ハイバネーション制御部５５をさらに含む。
【００９７】
切替部３３は、大型ＯＳ部２２の機能を停止させてマイクロＯＳ部２１の機能を開始させる場合、ハイバネーション制御部５５を呼び出す。また、切替部３３は、マイクロＯＳ部２１の機能を停止させて大型ＯＳ部２２の機能を開始させる場合も、ハイバネーション制御部５５を呼び出す。
【００９８】
ハイバネーション制御部５５は、大型ＯＳ部２２の機能を停止させてマイクロＯＳ部２１の機能を開始させる場合に、切替部３３により呼び出される。この場合、ハイバネーション制御部５５は、次のような処理を実行する。
【００９９】
ハイバネーション制御部５５は、揮発性主記憶部５２に記憶されている、ＣＰＵ１１を大型ＯＳ部２２として機能させるためのプログラムおよびデータのコピーを取得して、二次記憶部５４に書き込む。そして、ハイバネーション制御部５５は、電源管理部５３に命令を与えて、揮発性主記憶部５２の電源を遮断する。さらに、ハイバネーション制御部５５は、大型ＯＳ部２２が使用し且つマイクロＯＳ部２１が使用しない周辺機器１４の状態を読み出して、二次記憶部５４に書き込む。そして、ハイバネーション制御部５５は、電源管理部５３に命令を与えて、大型ＯＳ部２２が使用し且つマイクロＯＳ部２１が使用しない周辺機器１４の電源を遮断する。
【０１００】
また、ハイバネーション制御部５５は、マイクロＯＳ部２１の機能を停止させて大型ＯＳ部２２の機能を開始させる場合に、切替部３３により呼び出される。この場合、ハイバネーション制御部５５は、次のような処理を実行する。
【０１０１】
ハイバネーション制御部５５は、揮発性主記憶部５２の電源を投入する。そして、ハイバネーション制御部５５は、二次記憶部５４から、ＣＰＵ１１を大型ＯＳ部２２として機能させるためのプログラムおよびデータのコピーを読み出して揮発性主記憶部５２に書き込む。さらに、ハイバネーション制御部５５は、大型ＯＳ部２２が使用し且つマイクロＯＳ部２１が使用しない周辺機器１４の電源を投入する。そして、ハイバネーション制御部５５は、これらの周辺機器１４を二次記憶部５４に記憶されている状態に設定する。
【０１０２】
図１２は、第２実施形態に係る情報処理装置５０の、ステップＳ１７とステップＳ１８との間の処理フローを示す図である。図１３は、第２実施形態に係る情報処理装置５０の、ステップＳ２５とステップＳ２６との間の処理フローを示す図である。
【０１０３】
本実施形態に係る情報処理装置５０は、図６のステップＳ１１からステップＳ２７までの処理に加えて、ステップＳ１７とステップＳ１８との間に、図１２のステップＳ５１からステップＳ５５の処理を実行する。さらに、本実施形態に係る情報処理装置５０は、図６のステップＳ１１からステップＳ２７までの処理に加えて、ステップＳ２５とステップＳ２６との間に、図１３のステップＳ６１からステップＳ６５の処理を実行する。
【０１０４】
図１２に示すステップＳ１７において、大型ＯＳ部２２のコンテキスト待避をした後、切替部３３は、ハイバネーション制御部５５を呼び出す。続いて、ハイバネーション制御部５５は、揮発性主記憶部５２に記憶されているプログラムおよびデータのコピーを二次記憶部５４に書き込む（Ｓ５１）。続いて、ハイバネーション制御部５５は、電源管理部５３に揮発性主記憶部５２の電源遮断命令を発行し、揮発性主記憶部５２の電源を遮断する（Ｓ５２）。
【０１０５】
続いて、ハイバネーション制御部５５は、大型ＯＳ部２２が使用し且つマイクロＯＳ部２１が使用しない周辺機器１４の一覧を取得する（Ｓ５３）。続いて、ハイバネーション制御部５５は、一覧の周辺機器１４の各周辺機器の状態を読み出して、二次記憶部５４に書き込む（Ｓ５４）。続いて、ハイバネーション制御部５５は、電源管理部５３に一覧の各周辺機器１４の電源遮断命令を発行し、一覧の周辺機器１４の電源を遮断する（Ｓ５５）。そして、ステップＳ１８において、切替部３３は、マイクロＯＳ部２１のコンテキスト復帰をする。
【０１０６】
また、図１３に示すステップＳ２５において、マイクロＯＳ部２１のコンテキスト待避をした後、切替部３３は、ハイバネーション制御部５５を呼び出す。続いて、ハイバネーション制御部５５は、電源管理部５３に揮発性主記憶部５２の電源投入命令を発行し、揮発性主記憶部５２の電源を投入する（Ｓ６１）。続いて、ハイバネーション制御部５５は、二次記憶部５４に記憶されているプログラムおよびデータのコピーを読み出して、揮発性主記憶部５２に書き込む（Ｓ６２）。
【０１０７】
続いて、ハイバネーション制御部５５は、大型ＯＳ部２２が使用し且つマイクロＯＳ部２１が使用しない周辺機器１４の一覧を取得する（Ｓ６３）。続いて、ハイバネーション制御部５５は、電源管理部５３に一覧の周辺機器１４の電源投入命令を発行し、一覧の周辺機器１４の電源を投入する（Ｓ６４）。続いて、ハイバネーション制御部５５は、一覧の周辺機器１４を、二次記憶部５４に記憶された状態に復元する（Ｓ６５）。そして、ステップＳ２６において、切替部３３は、大型ＯＳ部２２のコンテキスト復帰をする。
【０１０８】
一般に周辺機器１４に対するデータの入出力時間は長い。従って、大容量のデータの入出力アクセスをマイクロＯＳ部２１にオフロードした場合、大型ＯＳ部２２は、長時間停止する。また、マイクロＯＳ部２１は、マイクロＯＳのコード数が大型ＯＳのコード数より少ないので、一般にメモリ消費量が大型ＯＳ部２２よりも少ない。従って、ＣＰＵ１１は、マイクロＯＳを、例えばＭＲＡＭのような、低容量および電力消費量が少ない不揮発性メモリ上に展開することができる。ＭＲＡＭ以外にもバッテリにより内容が保持されるＳＲＡＭ等のデバイスを不揮発性メモリとして利用してもよい。
【０１０９】
一方、ＣＰＵ１１は、汎用ＯＳを、ＤＲＡＭのような大容量および電力消費量が多い揮発性メモリ上に展開しなければならない。そこで、第２実施形態に係る情報処理装置５０は、マイクロＯＳおよびマイクロＯＳに関連するデータを不揮発性主記憶部５１に記憶させ、大型ＯＳおよび大型ＯＳに関連するデータを揮発性主記憶部５２に記憶させ、大型ＯＳ部２２の停止中においては、揮発性主記憶部５２の電源を遮断する。これにより、情報処理装置５０は、省電力化を図ることができる。
【０１１０】
また、第２実施形態に係る情報処理装置５０は、大型ＯＳ部２２の停止中においては、マイクロＯＳ部２１が使用しないデバイス（大型ＯＳ部２２が使用し且つマイクロＯＳ部２１が使用しない周辺機器１４）の電源を遮断する。これにより、第２実施形態に係る情報処理装置５０は、さらなる省電力化を図ることができる。
【０１１１】
（第２実施形態の変形例）
図１４は、第２実施形態の変形例に係る情報処理装置５０の機能構成を示す図である。本変形例に係る情報処理装置５０は、アクセス要求が発行された場合であっても、条件によっては大型ＯＳ部２２から直接、周辺機器１４へとアクセスすることができる。
【０１１２】
本変形例に係る情報処理装置５０は、図１１に示す機能構成と略同一である。以下、図１１に示す機能構成との相違点について説明する。
【０１１３】
本変形例に係る大型ＯＳ部２２は、転送判定部６１と、第２アクセス部６２とをさらに含む。本変形例においては、要求部３１は、アクセス要求を発行する場合に、転送判定部６１を呼び出す。
【０１１４】
転送判定部６１は、要求部３１がアクセス要求を発行する場合に、要求部３１から呼び出される。転送判定部６１は、周辺機器１４へのアクセスをマイクロＯＳ部２１に実行させるか否かを判定する。
【０１１５】
例えば、転送判定部６１は、大型ＯＳ部２２がタスクを停止させておくことが可能な最大の時間である停止可能時間を、現在のタスクの動作状況等から計算する。さらに、例えば、転送判定部６１は、アクセス要求に応じた処理を周辺機器１４に実行させた場合における周辺機器１４の処理時間を、アクセス要求の内容および周辺機器１４の処理能力等から計算する。そして、転送判定部６１は、一例として、大型ＯＳ部２２の停止可能時間が、予め設定された第１の閾値以上であり、且つ、周辺機器１４の処理時間が、予め設定された第２の閾値以上である場合、アクセス要求をマイクロＯＳ部２１に実行させると判定する。また、転送判定部６１は、一例として、停止可能時間が第１の閾値より短い、または、周辺機器１４の処理時間が第２の閾値より短い場合、アクセス要求を大型ＯＳ部２２に実行させると判定する。
【０１１６】
転送判定部６１は、アクセス要求をマイクロＯＳ部２１に実行させると判定した場合、転送部３２を呼び出す。また、転送判定部６１は、周辺機器１４へのアクセスをマイクロＯＳ部２１で実行させないと判定した場合（すなわち、アクセス要求を大型ＯＳ部２２に実行させると判定した場合）、転送部３２は呼び出さずに、第２アクセス部６２を呼び出す。
【０１１７】
第２アクセス部６２は、周辺機器１４へのアクセスをマイクロＯＳ部２１で実行させないと判定した場合に、転送判定部６１に呼び出される。第２アクセス部６２は、転送判定部６１により呼び出された場合、アクセス要求を周辺機器１４により受け付け可能な単位の命令に分割し、分割したそれぞれの命令に応じて周辺機器１４にアクセスする。そして、第２アクセス部６２は、周辺機器１４からアクセス結果を受け取り、受け取ったアクセス結果を転送判定部６１に返す。
【０１１８】
転送部３２は、周辺機器１４へのアクセスをマイクロＯＳ部２１で実行させると判定した場合、転送判定部６１に呼び出される。転送部３２は、転送判定部６１に呼び出されると、周辺機器１４へのアクセス要求をバッファ部３６に書き込む。また、転送部３２は、周辺機器１４へのアクセスが完了したことにより切替部３３から呼び出された場合、バッファ部３６からアクセス結果を読み出し、読み出したアクセス結果を、転送判定部６１に返す。転送判定部６１は、第２アクセス部６２または転送部３２からアクセス結果が返ってきた場合、そのアクセス結果を要求部３１に返す。
【０１１９】
図１５は、第２実施形態の変形例に係る転送判定部６１の処理フローを示す図である。本変形例に係る情報処理装置５０は、図６、図１２および図１３の処理フローに加えて、ステップＳ１１とステップＳ１２との間に、図１５に示すステップＳ７１からステップＳ７４の処理を実行する。
【０１２０】
まず、ステップＳ１１において、要求部３１は、転送判定部６１を呼び出し、転送判定部６１にアクセス要求を渡す。続いて、ステップＳ７１において、転送判定部６１は、現在のタスクの動作状況等から大型ＯＳ部２２の停止可能時間を計算し、大型ＯＳ部２２の停止可能時間が予め設定された第１の閾値以上であるか否かを判定する。転送判定部６１は、大型ＯＳ部２２の停止可能時間が第１の閾値以上である場合（Ｓ７１のＹｅｓ）、処理をステップＳ７２に進め、大型ＯＳ部２２の停止可能時間が第１の閾値以上ではない場合（Ｓ７１のＮｏ）、処理をステップＳ７３に進める。
【０１２１】
ステップＳ７２において、転送判定部６１は、アクセス要求の内容および周辺機器１４の処理能力等から周辺機器１４の処理時間を計算し、周辺機器１４の処理時間が予め設定された第２の閾値以上であるか否かを判定する。転送判定部６１は、周辺機器１４の処理時間が第２の閾値以上である場合（Ｓ７２のＹｅｓ）、処理をステップＳ１２に進め、周辺機器１４の処理時間が第２の閾値以上ではない場合（Ｓ７２のＮｏ）、処理をステップＳ７３に進める。
【０１２２】
ステップＳ１２において、転送判定部６１は、転送部３２を呼び出す。そして、転送部３２は、アクセス要求に含まれる、アクセス対象の周辺機器１４を特定する値、種別およびトータルサイズをバッファ部３６に書き込む。
【０１２３】
ステップＳ７３において、転送判定部６１は、第２アクセス部６２を呼び出す。第２アクセス部６２は、アクセス要求を周辺機器１４により受け付け可能な単位の命令に分割し、分割したそれぞれの命令に応じて周辺機器１４にアクセスする。続いて、ステップＳ７４において、第２アクセス部６２は、周辺機器１４からアクセス結果を受け取り、受け取ったアクセス結果を転送判定部６１に返す。そして、情報処理装置５０は、ステップＳ７４の処理を終えると、本フローを終了する。
【０１２４】
以上の本変形例に係る情報処理装置５０は、省電力化を図ることができる。これとともに、本変形例に係る情報処理装置５０は、実行しているタスクの影響等により大型ＯＳ部２２の停止可能時間が短く、マイクロＯＳ部２１による処理時間が停止可能時間を上回ってしまい、マイクロＯＳ部２１にアクセス要求を処理させることが困難な場合、大型ＯＳ部２２にアクセス要求を処理させることができる。また、本変形例に係る情報処理装置５０は、周辺機器１４の処理時間が短いため、マイクロＯＳ部２１にアクセス要求を処理させた方がコストが高くなる場合に、大型ＯＳ部２２にアクセス要求を処理させることができる。
【０１２５】
（第３実施形態）
図１６は、第３実施形態に係る情報処理装置７０の機能構成を示す図である。本実施形態に係る情報処理装置７０は、周辺機器１４へのアクセス命令を含む命令列（コード）をマイクロＯＳ部２１に実行させることができる。
【０１２６】
本実施形態に係る情報処理装置７０は、図３に示す構成と略同一である。以下、図３に示す構成との相違点について説明する。
【０１２７】
本実施形態において、要求部３１は、周辺機器１４へのアクセス命令を含む命令列、署名および入出力データを含むアクセス要求を発行する。なお、命令列に含まれるアクセス命令の種別が入力（リード）のみの場合には、入出力データは空である。署名は、命令列が正当に作成されたかを検証するための情報である。
【０１２８】
転送部３２は、命令列、署名および入出力データを含むアクセス要求をバッファ部３６に書き込む。バッファ部３６には、一例として、図１７に示されるような情報が書き込まれる。図１７に示される情報は、入出力データに示されるデータが無くなるまで、一秒毎に、周辺機器１４であるサウンドカードに対してデータを出力させることを示す命令列の例である。なお、命令列には、アクセス対象となる周辺機器１４を特定する値、アクセスの種別および周辺機器１４の固有データ等が含まれる。
【０１２９】
本実施形態に係るマイクロＯＳ部２１は、図３で説明した構成に加えて、コード実行部７２と、検証部７３とをさらに含む。
【０１３０】
本実施形態において、要求入出力部３４は、切替部３３から呼び出された場合、コード実行部７２を呼び出す。コード実行部７２は、要求入出力部３４から呼び出された場合、命令列、署名および入出力データをバッファ部３６から読み出す。コード実行部７２は、検証部７３を呼び出して、署名および命令列を渡す。
【０１３１】
検証部７３は、コード実行部７２により呼び出されて署名および命令列を受け取ると、命令列の正当性を検証する。検証部７３は、一例として、署名に含まれるハッシュ値と命令列から算出したハッシュ値とが一致し、且つ、署名が正しい鍵で作成されているかを判定する。検証部７３は、ハッシュ値が一致し、且つ、署名が正しい鍵で作成されている場合には、命令列の正当性の検証が成功したとして、判定結果をコード実行部７２に返す。検証部７３は、ハッシュ値が一致しなかった場合、または、署名が正しい鍵で作成されていない場合には、エラーであったことを示す情報をコード実行部７２に返す。なお、署名の検証方式は、一般的に知られたＲＳＡ署名等の方式であってよい。
【０１３２】
コード実行部７２は、検証部７３による命令列の正当性の検証が成功した場合、命令列を実行する。この場合において、コード実行部７２は、命令列にアクセス命令が含まれている場合には、アクセス部３５を呼び出して、アクセス命令をアクセス部３５に渡す。アクセス部３５は、コード実行部７２により呼び出されてアクセス命令が渡されると、指定された周辺機器１４にアクセスをし、アクセス結果をコード実行部７２に渡す。コード実行部７２は、アクセス命令の種別が入力命令（リード命令）である場合には、アクセス結果に含まれるデータをバッファ部３６に書き込む。
【０１３３】
そして、コード実行部７２は、命令列の実行を終了した場合、周辺機器１４へのアクセスが完了したとして要求入出力部３４を呼び出す。要求入出力部３４は、周辺機器１４へのアクセスが完了してコード実行部７２から呼び出された場合、切替部３３を呼び出す。
【０１３４】
なお、アクセス要求は、署名を含まなくてもよい。この場合、マイクロＯＳ部２１は検証部７３を含まず、コード実行部７２は、命令列の正当性の検証をせずに命令列を実行する。
【０１３５】
図６は、第３実施形態に係る情報処理装置７０の処理フローを示す図である。
【０１３６】
まず、要求部３１は、転送部３２を呼び出し、転送部３２に、アクセス要求を渡す（Ｓ８１）。続いて、転送部３２は、アクセス要求に含まれる命令列および署名をバッファ部３６に書き込む（Ｓ８２）。続いて、転送部３２は、命令列に含まれるアクセス命令の種別が出力（ライト）であるか入力（リード）であるかを判定する（Ｓ８３）。出力（ライト）の場合、転送部３２は、バッファ部３６にデータを書き込み（Ｓ８４）、処理をステップＳ８５に進める。入力（リード）の場合、転送部３２は、そのまま処理をステップＳ８５に進める。そして、ステップＳ８５において、転送部３２は、切替部３３を呼び出す。
【０１３７】
続いて、切替部３３は、大型ＯＳ部２２のコンテキストを取得して状態保存部３７に書き込む。これにより、切替部３３は、大型ＯＳ部２２のコンテキストを待避させて、大型ＯＳ部２２の機能を停止させることができる（Ｓ８６）。
【０１３８】
続いて、切替部３３は、マイクロＯＳ部２１のコンテキストを状態保存部３７から読み出して、コンテキストを再設定する。これにより、切替部３３は、マイクロＯＳ部２１のコンテキストを復帰させて、マイクロＯＳ部２１の機能を開始させることができる（Ｓ８７）。そして、切替部３３は、要求入出力部３４を呼び出す。
【０１３９】
続いて、要求入出力部３４は、コード実行部７２を呼び出す。さらに、コード実行部７２は、バッファ部３６から命令列および署名を読み出し、検証部７３を呼び出して署名を検証させる（Ｓ８８）。署名が正しくない場合（Ｓ８８のＮｏ）、コード実行部７２は、エラー処理を実行して（Ｓ８９）、本フローを終了する。署名が正しい場合（Ｓ８８のＹｅｓ）、コード実行部７２は、処理をステップＳ９０に進める。
【０１４０】
ステップＳ９０において、コード実行部７２は、命令列の実行が完了したか否かを判定する。コード実行部７２は、命令列の実行が完了した場合には（Ｓ９０のＹｅｓ）、処理をステップＳ９７に進め、完了していない場合には（Ｓ９０のＮｏ）、処理をステップＳ９１に進める。
【０１４１】
ステップＳ９１において、コード実行部７２は、命令列の中から次に実行すべき命令を取り出す。続いて、ステップＳ９２において、コード実行部７２は、取り出した命令が、周辺機器１４へのアクセス命令であるか否かを判定する。アクセス命令ではない場合には（Ｓ９２のＮｏ）、コード実行部７２は、処理をステップＳ９３に進める。ステップＳ９３において、コード実行部７２は、取り出した命令を実行する。
【０１４２】
アクセス命令である場合には（Ｓ９２のＹｅｓ）、コード実行部７２は、処理をステップＳ９４に進める。ステップＳ９４において、コード実行部７２は、取得したアクセス命令の種別が出力（ライト）であるか入力（リード）であるかを判定する。種別が出力（ライト）である場合、コード実行部７２は、バッファ部３６に記憶されているデータを読み出して出力命令（ライト命令）をアクセス部３５に与えて、読み出したデータを周辺機器１４に出力する（Ｓ９５）。種別が入力（リード）である場合、コード実行部７２は、入力命令（リード命令）をアクセス部３５に与えて、周辺機器１４からデータを取得してバッファ部３６に書き込む（Ｓ９６）。
【０１４３】
そして、コード実行部７２は、ステップＳ９３、ステップＳ９５またはステップＳ９６の処理を終えると、処理をステップＳ９０に戻す。そして、コード実行部７２は、ステップＳ９０からステップＳ９６までの処理を、命令列の実行を全て完了するまで繰り返す。
【０１４４】
命令列の実行を全て完了すると（Ｓ９０のＹｅｓ）、コード実行部７２は、切替部３３を呼び出す（Ｓ９７）。続いて、切替部３３は、マイクロＯＳ部２１のコンテキストを取得して状態保存部３７に書き込む。これにより、切替部３３は、マイクロＯＳ部２１のコンテキストを待避させて、マイクロＯＳ部２１の機能を停止させることができる（Ｓ９８）。
【０１４５】
続いて、切替部３３は、大型ＯＳ部２２のコンテキストを状態保存部３７から読み出して、コンテキストを再設定する。これにより、切替部３３は、大型ＯＳ部２２のコンテキストを復帰させて、大型ＯＳ部２２の機能を開始させることができる（Ｓ９９）。そして、切替部３３は、転送部３２を呼び出す。
【０１４６】
続いて、転送部３２は、アクセス結果を要求部３１に返す（Ｓ１００）。なお、アクセス要求の種別が入力（リード）の場合には、転送部３２は、バッファ部３６から入力データを読み出して、要求部３１に渡す。ステップＳ１００を終えると、情報処理装置７０は、本フローを終了する。
【０１４７】
以上のように本実施形態に係る情報処理装置７０は、命令列の実行もマイクロＯＳ部２１に実行させることができる。これにより、情報処理装置７０は、例えば、周辺機器１４への複雑なタイミングのアクセス、周辺機器１４の複雑な領域へのアクセス等を容易に実行させることができる。また、情報処理装置７０は、命令列の署名を検証することができるので、不正な命令列の実行を防止することができる。また、さらに、本実施形態に係る情報処理装置７０は、第２実施形態に係る情報処理装置５０の構成を適用することも可能である。これにより、情報処理装置７０は、より省電力化を図ることができる。
【０１４８】
以上説明した本実施形態の情報処理装置１０、５０、７０で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。また、本実施形態の情報処理装置１０、５０、７０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の情報処理装置１０、５０、７０で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１４９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５０】
１０  情報処理装置
１１  ＣＰＵ
１２  主記憶部
１３  ストレージ
１４  周辺機器
２０  ハードウェア部
２１  マイクロＯＳ部
２２  大型ＯＳ部
２３  モニタ部
３１  要求部
３２  転送部
３３  切替部
３４  要求入出力部
３５  アクセス部
３６  バッファ部
３７  状態保存部
４１  切替判定部
５０  情報処理装置
５１  不揮発性主記憶部
５２  揮発性主記憶部
５３  電源管理部
５４  二次記憶部
５５  ハイバネーション制御部
６１  転送判定部
６２  第２アクセス部
７０  情報処理装置
７２  コード実行部
７３  検証部
【図１】
2016045596.tif 000003
【図２】
2016045596.tif 000004
【図３】
2016045596.tif 000005
【図４】
2016045596.tif 000006
【図５】
2016045596.tif 000007
【図６】
2016045596.tif 000008
【図７】
2016045596.tif 000009
【図８】
2016045596.tif 000010
【図９】
2016045596.tif 000011
【図１０】
2016045596.tif 000012
【図１１】
2016045596.tif 000013
【図１２】
2016045596.tif 000014
【図１３】
2016045596.tif 000015
【図１４】
2016045596.tif 000016
【図１５】
2016045596.tif 000017
【図１６】
2016045596.tif 000018
【図１７】
2016045596.tif 000019
【図１８】
2016045596.tif 000020