(57)【要約】      （修正有）【課題】複数のＯＳを切り替え可能な情報処理装置において、あるＯＳが保持する情報を他のＯＳから保護することができる情報処理装置を提供する。【解決手段】第１のＯＳ及び第２のＯＳを切り替え可能な情報処理装置であって、第２のＯＳから、第１のＯＳへの切替処理において、ＣＰＵ内部をクリアし、第２のＯＳが管理するデータを記憶しているメモリ領域５０５，５０６を遮断することにより、第２のＯＳが管理するデータを第１のＯＳから保護する。【選択図】図６
2010267286.tif 000002
【特許請求の範囲】
【請求項１】
第１モードおよび第２モードを切り替えて動作する情報処理装置であって、
ＣＰＵと、
第２モードにおいて管理されるデータを記憶している第２モード用メモリ領域と、
第２モードから第１モードへの切替に係る退避命令、および、第１モードへの分岐命令を記憶している第２モード用例外ハンドラ領域と、
前記第２モード用メモリ領域および前記第２モード用例外ハンドラ領域に対する外部からのアクセスの遮断および開放を切り替えるアクセス遮断機構と、
外部のデバッガと前記ＣＰＵとを接続または遮断するデバッガ無効化回路と、
第２モードから第１モードに切り替わるとき、前記アクセス遮断機構に対して、前記第２モード用メモリ領域の遮断を指示した後に、前記デバッガ無効化回路に対して接続を指示し、第１モードから第２モードに切り替わるとき、前記デバッガ無効化回路に対して遮断を指示した後に、前記アクセス遮断機構に対して、前記第２モード用メモリ領域の開放を指示する切替管理部と
を備えることを特徴とする情報処理装置。
【請求項２】
前記切替管理部は、
前記分岐命令に分岐する命令を保持する分岐命令保持部と、
前記分岐命令に分岐する命令がフェッチされたことを検知するフェッチ検知部とを含み、
前記フェッチ検知部が前記命令のフェッチを検知すると、前記アクセス遮断機構に対して、前記第２モード用メモリ領域の遮断を指示した後にデバッガ無効化回路に対して接続を指示する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記情報処理装置は、さらに、
前記第１モードにおいて管理されるデータを記憶している第１モード用メモリ領域と、
第１モードから第２モードへの切替に係る退避命令、および、第１モードへの復帰命令を記憶している第１モード用例外ハンドラ領域とを備え、
前記第１モード用メモリ領域および前記第１モード用例外ハンドラ領域は、第１モードで動作しているときおよび第２モードで動作しているとき何れの場合も外部に開放されている
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ＣＰＵは、前記切替管理部を操作するためのデバイスドライバを介して前記切替管理部を操作し、
前記切替管理部は、ハードウェアで構成され、前記ＣＰＵから前記デバイスドライバを介してメモリ保護要求を受け付けると、前記アクセス遮断機構に対してメモリ保護制御信号を通知する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
第１モードおよび第２モードを切り替えて動作する情報処理装置の制御方法であって、
前記情報処理装置は、
ＣＰＵと、
第２モードにおいて管理されるデータを記憶している第２モード用メモリ領域と、
第２モードから第１モードへの切替に係る退避命令、および、第１モードへの分岐命令に分岐する命令を記憶している第２モード用例外ハンドラ領域と、
前記第２モード用メモリ領域および前記第２モード用例外ハンドラ領域に対する外部からのアクセスの遮断および開放を切り替えるアクセス遮断機構と、
外部のデバッガと前記ＣＰＵとを接続または遮断するデバッガ無効化回路と、
切替管理部とを備え、
前記制御方法は、前記切替管理部により、
第２モードから第１モードに切り替わるとき、前記アクセス遮断機構に対して、前記第２モード用メモリ領域の遮断を指示する第１のステップと、
前記第１のステップの後に、前記デバッガ無効化回路に対して接続を指示する第２のステップと、
第１モードから第２モードに切り替わるとき、前記デバッガ無効化回路に対して遮断を指示する第３のステップと、
前記第３のステップの後に、前記アクセス遮断機構に対して、前記第２モード用メモリ領域の開放を指示する第４のステップとを含むことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、複数のオペレーティングシステムを切り替えて処理を行う技術に関する。
【背景技術】
【０００２】
一台の装置が複数のオペレーティングシステムを保持し、オペレーティングシステムを切り替えて処理を行う技術が開示されている。
例えば特許文献１には、複数のオペレーティングシステムを保持した装置において、各オペレーティングシステムのカーネルを主記憶に常駐させておくことにより、オペレーティングシステムの切り替え処理の高速化をはかり、更に、切り替え処理時に、それまで動作していた状態を２次記憶に記憶させることにより、復帰したとき切り替え処理前の状態から継続した処理を行うことを可能にする技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開昭６４‐４８３８号公報
【特許文献２】特開２００１−２１６１７２号公報
【特許文献３】特開昭６０‐９７４４０号公報
【特許文献４】特開昭５８‐１８１１４９号公報
【特許文献５】特開昭６２‐１３３５３３号公報
【特許文献６】特開平６‐２８４９７号公報
【特許文献７】特許番号第３０１８３３６号公報
【特許文献８】特許番号第２７８８５９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示されている技術は、各オペレーティングシステムが所有している情報が他のオペレーティングシステムから保護されているとは言えず、あるオペレーティングシステムの動作が他のオペレーティングシステムの動作を妨害したり、他のオペレーティングシステムが所有している情報を破壊したりする可能性がある。
【０００５】
そこで本発明は、上記の問題点に鑑みなされたものであって、複数のオペレーティングシステムを保持して、各オペレーティングシステムを切り替えて処理を行う情報処理装置であって、あるオペレーティングシステムが所有している情報を他のオペレーティングシステムから保護することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の目的を達成するために、本発明は、第１モードおよび第２モードを切り替えて動作する情報処理装置であって、ＣＰＵと、第２モードにおいて管理されるデータを記憶している第２モード用メモリ領域と、第２モードから第１モードへの切替に係る退避命令、および、第１モードへの分岐命令を記憶している第２モード用例外ハンドラ領域と、前記第２モード用メモリ領域および前記第２モード用例外ハンドラ領域に対する外部からのアクセスの遮断および開放を切り替えるアクセス遮断機構と、外部のデバッガと前記ＣＰＵとを接続または遮断するデバッガ無効化回路と、第２モードから第１モードに切り替わるとき、前記アクセス遮断機構に対して、前記第２モード用メモリ領域の遮断を指示した後に、前記デバッガ無効化回路に対して接続を指示し、第１モードから第２モードに切り替わるとき、前記デバッガ無効化回路に対して遮断を指示した後に、前記アクセス遮断機構に対して、前記第２モード用メモリ領域の開放を指示する切替管理部とを備えることを特徴とする。
【発明の効果】
【０００７】
本発明は、第１のＯＳ及び第２のＯＳの管理に従い動作する情報処理装置であって、第１のＯＳが管理するデータを記憶している第１領域と、第２のＯＳの復帰命令と第２のＯＳへの分岐命令を含むリセットハンドラを記憶している第２領域と、第１領域に対する外部からのアクセスの遮断及び開放を切り替えるアクセス遮断機構とから構成される記憶手段と、前記リセットハンドラの第２領域における位置を示す位置情報を格納している例外テーブル格納手段と、第１のＯＳの管理下で動作中に、第１のＯＳから第２のＯＳへの切替指示を受け付けると、前記アクセス遮断機構に対して第１領域の遮断を指示し、ＣＰＵに対してリセットを指示する切替管理手段と、プログラムカウンタを備え、プログラムカウンタにセットされた位置情報が示す位置の命令を実行し、切替管理手段からリセットの指示を受けると、内部を初期化し、プログラムカウンタに前記リセットハンドラの位置を示す位置情報をセットするＣＰＵとから構成される。
【０００８】
この構成によると、情報処理装置は、当該情報処理装置の動作を管理するオペレーティングシステムを、第１のＯＳから第２のＯＳへ切り替えるとき、第１領域に対する外部からのアクセスを遮断するので、第１のＯＳが管理するデータを保護することができる。また、ＣＰＵが内部を初期化することにより、第１のＯＳの管理により当該情報処理装置が動作していたときのＣＰＵ内部のデータを破棄し、ＣＰＵ内部のデータにおいても、第１のＯＳが管理するデータを第２のＯＳから保護することができる。また、切替管理手段が切替指示を受けるとＣＰＵをリセットするので、切替指示を受けた後に確実に第２のＯＳのリセットハンドラを実行させることができる。
【０００９】
ここで、前記記憶手段のアクセス遮断機構は、更に、前記第２領域に対する外部からのアクセスの遮断及び開放を切り替え、前記切替管理手段は、前記切替指示を受け付けると、前記アクセス遮断機構に対して第１領域の遮断に続き、第２領域の開放を指示する。
【００１０】
この構成によると、第２領域は、第１のＯＳから第２のＯＳへ切り替わってから開放することにより、第１のＯＳから第２領域の内容を保護することができる。
ここで、前記記憶手段は、更に、第２のＯＳへの切替前の第１のＯＳのＣＰＵ状態を退避させる退避命令を含む第１割込みハンドラを記憶している第３領域を備え、前記アクセス遮断機構は、更に、前記第３領域に対する外部からのアクセスの遮断及び開放を切り替え、前記例外テーブル格納手段は、前記第１割込みハンドラの前記第３領域における位置を示す位置情報を格納しており、前記ＣＰＵは、第１のＯＳの管理下で実行中のプログラムから前記第１割込みハンドラが呼び出されると、プログラムカウンタに、前記第１割込みハンドラの位置を示す位置情報をセットし、前記切替管理手段は、前記第１割込みハンドラから、第１のＯＳから第２のＯＳへの前記切替指示を受け付ける。
【００１１】
この構成によると、情報処理装置は、動作するオペレーティングシステムを第１のＯＳから第２のＯＳへ切り替えるとき、切替前の第１のＯＳのＣＰＵ状態を退避させるので、再度、当該装置の動作を管理するオペレーティングシステムが、第２のＯＳから第１のＯＳへ切り替わるときには、退避させたＣＰＵ状態を読み出すことにより、前のＣＰＵ状態を復帰させることができる。
【００１２】
ここで、前記切替管理手段は、前記第１割込みハンドラから、第２のＯＳ上で動作するプログラムの種類と前記プログラムに要求する処理内容とを受け取り、前記リセットハンドラへ、前記プログラムの種類と前記処理要求とを通知する。
【００１３】
この構成によると、情報処理装置は、当該装置が第１のＯＳの管理に従い動作しているとき、第２のＯＳが管理するプログラムへの処理要求により、第１のＯＳから第２のＯＳへ切り替わるとき、前記処理要求を、切替管理手段を介して第２のＯＳへ通知することができる。
【００１４】
ここで、前記記憶手段の第３領域は、更に、第２割込みハンドラを記憶し、前記第２割込みハンドラは、発生したハードウェア割込みが、第１のＯＳが管理するハードウェアからの割込み又は第２のＯＳが管理するハードウェアからの割込みの何れであるか判断する判断命令と、第２のＯＳが管理するハードウェアからの割込みであると判断する場合に、前記第１割込みハンドラに分岐する命令とを含み、前記例外テーブル格納手段は、前記第２割込みハンドラの前記第３領域における位置を示す位置情報を格納しており、前記ＣＰＵは、第１のＯＳの管理下で動作中に割込みを受け付けると、プログラムカウンタに、前記第２割込みハンドラの位置を示す位置情報をセットする。
【００１５】
この構成によると、情報処理装置は、第１のＯＳが動作中に第２のＯＳが管理するハードウェアからの割込みが発生した場合にも、ＣＰＵが第２割込みハンドラを実行し、第２のＯＳへの切替動作を第１割込みハンドラへ依頼することにより、現在実行中でないＯＳが管理するハードウェアの割込み処理をすることができる。
【００１６】
ここで、前記情報処理装置は、前記第２割込みハンドラの処理、及び、前記第１割込みハンドラの処理を経て、第２のＯＳの管理下で動作中であって、前記リセットハンドラは、第２のＯＳから第１のＯＳへの復帰準備を行う命令を含み、前記ＣＰＵは、前記第１のＯＳへの復帰準備として、内部のリンクレジスタに第１のＯＳへ戻るプログラムの先頭番地をセットしたのち、第２のＯＳが管理するハードウェアを操作するデバイスドライバへ分岐し、前記デバイスドライバの処理の終了を検知すると、リンクレジスタにセットした前記先頭番地を、プログラムカウンタをセットする。
【００１７】
この構成によると、情報処理装置は、デバイスドライバによる割込み処理が終了すると、再度第１のＯＳの処理に戻ることができる。
また、第１のＯＳに戻る処理は、第１のＯＳから第２のＯＳへの切替処理と同様の処理を行うことにより、第２のＯＳから第１のＯＳが管理するデータを保護することができる。
【００１８】
ここで、前記第２割込みハンドラは、更に、第１のＯＳが管理するハードウェアからの割込みであると判断する場合に、第１のＯＳが管理するハードウェアを操作するデバイスドライバへ分岐する分岐命令を含み、前記ＣＰＵは、割込みが発生すると、プログラムカウンタに、前記第２割込みハンドラの位置を示す位置情報をセットし、第１のＯＳが管理するハードウェアからの割込みであると判断すると、前記第２割込みハンドラから呼び出される前記デバイスドライバの位置を示す位置情報をセットする。
【００１９】
この構成によると、当該情報処理装置が第１のＯＳの管理に従い動作しているときに、第１のＯＳが管理するハードウェアからの割込みが発生した場合に、ＣＰＵが第２割込みハンドラを実行することにより、ハードウェア割込みを処理することができる。
【００２０】
ここで、前記記憶手段は、更に、第２のＯＳが管理するデータを記憶している第４領域を備え、前記アクセス遮断機構は、更に、前記第４領域に対する外部からのアクセスの遮断及び開放を切り替え、前記切替管理手段は、前記リセットハンドラから、前記第４領域の開放指示を受け取ると、前記アクセス遮断機構に対して、前記第４領域の開放を指示する。
【００２１】
この構成によると、情報処理装置は、第２のＯＳが復帰するとき実行されるリセットハンドラ内の処理において、第４領域を開放する。そのため、当該情報処理装置の動作を管理するオペレーティングシステムが、第１のＯＳから第２のＯＳへ確実に切り替わった後に、第４領域が開放されるので、第１のＯＳから第２のＯＳが管理するデータを保護することができる。また、リセットハンドラで第４領域の開放をするかどうかの判断をした後に第４領域の開放をすることもできる。
【００２２】
ここで、情報処理装置は、更に、前記例外テーブル格納手段と外部との接続を切り替える例外テーブル切替手段を備え、前記例外テーブル格納手段は、前記第１割込みハンドラ及び前記第３割込みハンドラの格納位置を示す位置情報を含む第１例外テーブルと、前記リセットハンドラの格納位置を示す位置情報を含む第２例外テーブルとを格納しており、前記ＣＰＵが第１のＯＳの管理下で動作中の場合、前記切替管理手段は、第１例外テーブルの接続を指示し、第２のＯＳの管理下で動作中の場合、前記切替管理手段は、第２例外テーブルへの接続を指示し、前記例外テーブル切替手段は、前記切替管理手段からの指示を受けて、前記第１例外テーブル又は前記第２例外テーブルを外部と接続する。
【００２３】
この構成によると、情報処理装置は、当該装置が第１のＯＳの管理に従い動作しているときは、第１のＯＳ専用の例外テーブルである第１例外テーブルのみ、外部からのアクセスを許可し、第２のＯＳの管理に従い動作しているときは、第２例外テーブルのみ、外部からのアクセスを許可することができる。
【００２４】
ここで、前記アクセス遮断機構は、前記第３領域に対する外部からのアクセスの遮断及び開放を切り替え、前記切替管理手段は、前記第１割込みハンドラから第１のＯＳから第２のＯＳへの切替指示を受け付けると、前記アクセス遮断機構に対して、前記第３領域の遮断を指示する。
【００２５】
この構成によると、第３領域を遮断することにより、第２のＯＳから前記第１割込みハンドラ及び前記第２割込みハンドラを保護することができる。また、第２のＯＳは、第３領域が遮断された後でも、前記切替管理手段から受け取る第１のＯＳからの処理要求に従い、処理を実行することができる。
【００２６】
ここで、前記第１割込みハンドラは、前記退避命令を実行した後、前記ＣＰＵに対し、省電力モードへの切り替えを指示し、前記ＣＰＵは、省電力モードへの切替処理を行い、前記切替処理が終了すると、前記切替管理手段へ省電力モードに切り替わったことを示す信号を出力し、前記切替管理手段は、前記ＣＰＵから省電力モードに切り替わったことを示す信号を受け取った後、前記ＣＰＵにリセットを指示する。
【００２７】
この構成によると、ＣＰＵは、省電力モードに切り替わった後でリセットの指示を受けるので、第２の割込みを受け付けた場合であっても実行中の処理が終了した後に、内部を初期化することができる。ＣＰＵが外部のデバイスとのやりとりとしている時にリセットが掛かると、外部のデバイスとのやりとりが完結せず、外部のデバイスが、ハングアップしてしまう可能性がある、そこで、このように構成することでその問題を解決することができる。
【００２８】
また、上記の目的を達成するために、本発明は、第１のＯＳ及び第２のＯＳの管理に従い動作する情報処理装置であって、第１のＯＳが管理するデータを記憶している第１領域と、第１のＯＳから第２のＯＳへの切替に係る退避命令、及び、第２のＯＳへの分岐命令に分岐する命令を含む第１割込みハンドラを記憶している第２領域と、第２のＯＳの退避命令および第２のＯＳへの復帰命令を含む第２割込みハンドラを記憶している第３領域と、前記第１領域及び前記第２領域に対する外部からのアクセスの遮断及び開放を切り替えるアクセス遮断機構とから構成される記憶手段と、前記第３領域への分岐を示す分岐命令を保持する分岐命令保持部と、前記分岐命令がフェッチされたことを検知するフェッチ検知部とを備え、前記フェッチ検知部が前記分岐命令のフェッチを検知すると、前記アクセス遮断機構に対して前記第１領域の遮断を指示する切替管理手段とから構成される。
【００２９】
この構成によると、情報処理装置は、切替管理手段が保持する分岐コードがフェッチされたことにより第１領域の遮断を指示する。そのため、第２のＯＳへの分岐と第１領域の遮断を同時に行うことができ、第２のＯＳから第１のＯＳが管理するデータを保護することができる。
【００３０】
ここで、前記情報処理装置は、更に、プログラムカウンタを備え、プログラムカウンタにセットされる位置情報が示す命令を実行するＣＰＵを備え、前記ＣＰＵが前記第２割込みハンドラを処理し、第２のＯＳから第１のＯＳに切り替える指示をする前に、前記ＣＰＵは、前記分岐命令保持部に第１のＯＳから第２のＯＳへのリターンアドレスを設定する。
【００３１】
この構成によると、情報処理装置は、第１のＯＳへ切り替える前に第２のＯＳのリターンアドレスを分岐命令保持部に設定するので、第２のＯＳは、第１のＯＳが第２のＯＳに切り替えた後にＣＰＵが実行する命令アドレスを設定できる。
【００３２】
ここで、前記第１割込みハンドラは、割込みをマスクし、前記切替管理手段に対して、第２のＯＳ上で動作するプログラムの種類と前記プログラムに要求する処理内容とを通知し、前記ＣＰＵは、前記第１割込みハンドラから呼び出される前記第２割込みハンドラの前記復帰命令の位置を示す位置情報を、前記分岐命令保持部から読み出し、プログラムカウンタにセットし、前記切替管理手段は、前記第２割込みハンドラへ、前記プログラムの種類と前記処理内容とを通知する。
【００３３】
また、前記第２割込みハンドラは、第１のＯＳから第２のＯＳへの切替要因を確認し、前記切替要因が第２のＯＳが管理するプログラムへの処理要求である場合に、前記プログラムへ分岐し、前記ＣＰＵは、前記割込みハンドラから呼び出される前記プログラムの位置を示す位置情報をプログラムカウンタにセットする。
【００３４】
この構成によると、情報処理装置は、当該装置が第１のＯＳの管理に従い動作しているとき、第２のＯＳが管理するプログラムへの処理要求により、第１のＯＳから第２のＯＳへ切り替わるとき、前記処理要求を、切替管理手段を介して第２のＯＳに通知し、第２のＯＳは要求された処理を実行することができる。
【００３５】
ここで、前記第２割込みハンドラは、第１のＯＳから第２のＯＳへの切替要因を確認し、前記切替要因が第２のＯＳが管理するハードウェアからの割込みである場合に、割込みマスクを解除し、第２のＯＳが管理するハードウェアを操作するデバイスドライバの位置を示す位置情報を、前記ＣＰＵのプログラムカウンタにセットし、前記ＣＰＵは、前記デバイスドライバの処理の終了を検知すると、プログラムカウンタに、前記第２割込みハンドラの前記復帰命令の位置を示す位置情報をプログラムカウンタにセットする。
【００３６】
この構成によると、情報処理装置は、第２のＯＳに係る割込みが第２のＯＳが管理するハードウェアからの割込みである場合にも、ＣＰＵが第２割込みハンドラを実行することにより、ハードウェア割込みを処理することができる。また、デバイスドライバによる割込み処理が終了すると、第２のＯＳの退避命令へ移行するので、再度第１のＯＳの処理に戻ることができる。
【００３７】
ここで、前記情報処理装置は、更に、前記切替管理手段からの指示を受け、外部のデバッガと前記ＣＰＵとを接続又は遮断するデバッガ無効化回路を備え、前記切替管理手段は、前記ＣＰＵが第１のＯＳの管理に従い動作しているときは、前記デバッガ無効化回路に対して遮断を指示し、前記ＣＰＵが第２のＯＳの管理に従い動作しているときは、デバッガ無効化回路に対して接続を指示する。
【００３８】
この構成によると、情報処理装置は、ＣＰＵが第１のＯＳに従い動作しているときは、デバッガを無効にすることにより、デバッガから第１のＯＳが管理するデータを保護することができる。
【００３９】
ここで、前記情報処理装置は、更に、第１のＯＳが管理するハードウェアからの割込みを受け付ける第１信号線と、第２のＯＳが管理するハードウェアからの割込みを受け付ける第２信号線と、第１及び第２のＯＳが管理するハードウェアを操作するそれぞれのデバイスドライバの位置情報を記述したテーブルとを備えるベクタ割込みコントローラと、前記第２領域は、更に、前記第１のＯＳのブートコードを備え、前記ＣＰＵは、前記ブートコードの実行中に前記ベクタ割込みコントローラからのデバイスドライバの位置情報の取得を無効化し、第３領域に格納されている第２割込みハンドラの実行中に前記ベクタ割込みコントローラからのデバイスドライバの位置情報の取得を有効にする。
【００４０】
この構成によると、情報処理装置がベクタ割込みコントローラを備える場合、ベクタ割込みコントローラがハードウェア割込みを受け付けると、割込みハンドラの処理を経ずに、前記テーブルに従い直接デバイスドライバの処理へ分岐する。この場合、切替管理手段が、第１領域、および第２領域の遮断をアクセス遮断機構に指示できないので、第１のＯＳに従い動作しているときは、ベクタ割込みコントローラからのデバイスドライバの位置情報の取得を無効化して、第１領域、および第２領域が開放された状態で第２のＯＳの処理へ切り替わることを抑制し、第１のＯＳが管理する情報を第２のＯＳから保護する。
【００４１】
ここで、前記情報処理装置は、更に、パワーオンリセット回路を備え、前記記憶手段は、更に、記憶内容消去手段を備え、前記パワーオンリセット回路は、前記ＣＰＵ及び前記記憶手段を初期化するリセット信号を、前記ＣＰＵ及び前記記憶内容消去手段に出力し、前記ＣＰＵは、前記パワーオンリセット回路からリセット信号を受けると、内部を初期化し、前記記憶内容消去手段は、前記パワーオンリセット回路から、リセット信号を受けると、前記記憶手段が記憶している記憶内容を破棄し、前記リセット信号を受けてから、前記記憶内容の破棄を終了するまでの間、外部から前記記憶手段へのアクセスを遮断する。
【００４２】
この構成によると、情報処理装置がパワーオンリセットにより初期化されると、ＣＰＵ及び記憶領域はそれぞれ、内部がクリアされるが、ＣＰＵの内部がクリアされるまでの時間と、記憶手段の内部がクリアされるまでの時間には差がある。ＣＰＵの内部がクリアされ、第２のＯＳがブートしても、記憶手段の内部が全てクリアされておらず第１のＯＳが管理するデータが残っている場合には、第２のＯＳから第１のＯＳが管理するデータを保護できない。そのため、パワーオンリセットが掛かると、記憶手段の内部がクリアされるまで、ＣＰＵからの読み出しを遮断することで、第２のＯＳから第１のＯＳが管理するデータを保護することができる。
【図面の簡単な説明】
【００４３】
【図１】情報処理装置１００の構成を機能的に示す機能ブロック図である。
【図２】情報処理装置１００のソフトウェア構成を示す図である。
【図３】ＣＰＵ１０１の構成を示す図である。
【図４】ＣＰＵ１０１に含まれるレジスタファイル４００の構成を示す図である
【図５】ＣＰＵ１０１の動作を示す図である。
【図６】メモリ１０２の構成を示す図である。
【図７】ＯＳ１用例外ハンドラ領域５０３のメモリマップの一例を示す図である。
【図８】リセットハンドラ５１１が実行されたときのＣＰＵ１０１の動作を示す図である。
【図９】割込みハンドラ５１２が実行されたときのＣＰＵ１０１の動作を示す図である。
【図１０】ソフトウェア割込みハンドラ５１３が実行されたときのＣＰＵ１０１の動作を示す図である。
【図１１】ＣＰＵ省電力モード切替処理の動作を示す図である。
【図１２】（ａ）は、ＯＳ１用例外テーブル６０１のデータ構成を示す図である。（ｂ）は、ＯＳ２用例外テーブル６０２のデータ構成を示す図である。
【図１３】切替管理部１０６の構成を示す図である。
【図１４】切替管理部１０６の動作を示すシーケンスチャートである。
【図１５】情報処理装置１００全体の動作を示すフローチャートである。
【図１６】情報処理装置１００ａの構成を機能的に示す機能ブロック図である。
【図１７】メモリ１０２ａの構成を示す図である。
【図１８】ＯＳ１用ソフトウェア割込みハンドラ８０１及び８０２が実行されたときのＣＰＵ１０１ａの動作を示す図である。
【図１９】ＯＳ２用リセットハンドラ８０３が実行されたときのＣＰＵ１０１ａの動作を示す図である。
【図２０】ＯＳ２用ソフトウェア割込みハンドラ８０４が実行されたときのＣＰＵ１０１ａの動作を示す図である。
【図２１】切替管理部１０６ａの構成を示す図である。
【図２２】ＯＳ１からＯＳ２への遷移処理における、切替管理部１０６ａの動作を示すシーケンスチャートである。
【図２３】デバッガ無効化回路１１２ａを説明するための図である。（ａ）は、デバッガ無効化回路１１２ａが「有効」である状態を示し、（ｂ）は、デバッガ無効化回路１１２ａが「無効」である状態を示す。
【図２４】情報処理装置１００ａ全体の動作を示すフローチャートである。
【図２５】情報処理装置１００ｂの構成を機能的に示す機能ブロック図である。
【図２６】切替管理部１０６ｂの構成を示す図である。
【図２７】情報処理装置１００ｂにおける割込み制御を説明するシーケンスチャートである。
【図２８】情報処理装置１００ｄの構成を機能的に示す機能ブロック図である。
【図２９】ＯＳ２からＯＳ１への遷移処理における、切替管理部１０６ａの動作を示すシーケンスチャートである。
【図３０】メモリ１０２ｄの構成を示す図である。
【発明を実施するための形態】
【００４４】
≪第１の実施形態≫
本発明に係る第１の実施形態として、情報処理装置１００について図面を参照して説明する。なお、本明細書及び図面において、「オペレーティングシステム」を単に「ＯＳ」と記載することがある。
【００４５】
＜構成＞
図１は、情報処理装置１００の構成を機能的に示す機能ブロック図である。
同図に示す様に、情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１、メモリ１０２、例外テーブル切替部１０３、ＯＳ１用例外テーブル格納部１０４、ＯＳ２用例外テーブル格納部１０５、切替管理部１０６、割込みコントローラ１０７、ＯＳ１管理のハードウェア１０８、ＯＳ２管理のハードウェア１０９及びバス１１０から構成される。
【００４６】
また、図２は、情報処理装置１００のソフトウェア構成を示す図である。
同図に示す様に、情報処理装置１００のソフトウェアは、ＯＳ１（２０１）、ＯＳ１上で動作するプログラム１（２０２ａ）、プログラム２（２０２ｂ）、・・・、プログラムＮ（２０２ｎ）、及び、ＯＳ２（２０３）、ＯＳ２上で動作するプログラム１（２０４ａ）、プログラム２（２０４ｂ）、・・・、プログラムＮ（２０４ｎ）から構成される。さらに、ＯＳ１は、ＯＳ１管理のハードウェア１０８を操作するためのデバイスドライバ２０１ａと、切替管理部１０６を操作するためのデバイスドライバ２０１ｂとを含み、ＯＳ２は、ＯＳ２管理のハードウェア１０９を操作するためのデバイスドライバ２０２ａと、切替管理部１０６を操作するためのデバイスドライバ２０２ｂとを含む。
【００４７】
情報処理装置１００は、ＯＳ１が管理する処理、及び、ＯＳ２が管理する処理に応じて、動作するオペレーティングシステムを、ＯＳ１からＯＳ２へ、又は、ＯＳ２からＯＳ１へ切り替えて連続して処理を行う。以下では、情報処理装置１００の各構成要素について説明する。
【００４８】
（１）ＣＰＵ１０１
図３は、ＣＰＵ１０１の構成を示す図である。同図に示す様に、ＣＰＵ１０１は、ＣＰＵコア３０１、ＭＭＵ（Memory Management Unit）３０２及びキャッシュ３０３から構成される。
【００４９】
ＣＰＵコア３０１は、命令フェッチ部、命令デコーダ、演算器、レジスタファイルなどを備える。命令フェッチ部は、キャッシュ３０３から命令を読み出す。命令デコーダは、読み出した命令を解釈し、その情報を演算器に通知する。更に命令デコーダは、データをレジスタから演算器に転送する。演算器は、データに演算を施して、レジスタに書き戻す。
【００５０】
また、ＣＰＵコア３０１は、切替管理部１０６から割り込み信号とリセット信号を含む例外信号を受け付ける。リセット信号は、ＣＰＵ１０１に、内部のクリアとリセットハンドラへの分岐とを通知する信号である。
【００５１】
ＭＭＵ３０２は、論理アドレスを物理アドレスに変換することにより仮想記憶機能を実現する。論理アドレスと物理アドレスとは、メモリ１０２上に置かれたページテーブルにより対応付けられており、ＭＭＵ３０２は、ページテーブルを参照してアドレス変換を行う。
【００５２】
キャッシュ３０３は、メモリ１０２に対して高速小容量のメモリであって、ＣＰＵコア３０１がメモリ１０２から読み出した命令を保持する。
なお、本実施例ではキャッシュ３０３として、物理アドレスキャッシュを想定しているが、本発明において、キャッシュは物理アドレスキャッシュに限定されず、仮想アドレスキャッシュであってもよい。
【００５３】
ここで、ＣＰＵ１０１は、Ｕｓｅｒモード又は例外モードの何れかのモードをもつ。Ｕｓｅｒモードは、ＣＰＵ１０１が通常処理を行っている状態を示し、例外モードは、ＣＰＵ１０１が例外処理を行っている状態を示す。例外モードは、例外の発生要因によって更に複数のモードが存在する。
【００５４】
図４は、ＣＰＵコア３０１に含まれるレジスタファイル４００を示す図である。レジスタファイル４００は、複数のレジスタセットを備える。各レジスタセットは、ＣＰＵ１０１の各モードに対応している。
【００５５】
レジスタセット４０１は、Ｕｓｅｒモードに対応したレジスタセットであり、カレントステータスレジスタ（ｃｓｒ）４１１、プログラムカウンタ（ｐｃ）４１２、リンクレジスタ（ｌｒ）４１３、スタックポインタ（ｓｐ）４１４、及び、汎用レジスタ（ｒ＿０〜ｒ＿ｎ）４１５から構成される。
【００５６】
レジスタセット４０２、レジスタセット４０３、・・・、レジスタセット４０４は、それぞれ、例外モードの内の一つのモードに対応したレジスタセットである。レジスタセット４０２は、ステータスレジスタ（ｓｒ＿Ｂ）４２１、リンクレジスタ（ｌｒ＿Ｂ）４２２、及び、スタックポインタ（ｓｐ＿Ｂ）４２３から構成される。レジスタセット４０３から、レジスタセット４０４までのレジスタセットも同様に、ステータスレジスタ、リンクレジスタ及びスタックポインタから構成されるが、例えばレジスタセット４０３のように、汎用レジスタ（ｒ＿０＿Ｃ〜ｒ＿ｎ＿Ｃ）を持つ場合もある。
【００５７】
レジスタセット４０１のカレントステータスレジスタ（ｃｓｒ）４１１は、ＣＰＵ１０１のモードを示すモードビットを含む。当該モードビットは、ＣＰＵ１０１が例外モードのときのみアクセス可能である。
【００５８】
ＣＰＵ１０１は、Ｕｓｅｒモードのとき、レジスタセット４０１の内のカレントステータスレジスタ４１１のモードビット以外のレジスタにアクセス可能であり、例外モードのとき、全てのレジスタセットにアクセス可能である。
【００５９】
次に、図５を用いてＣＰＵ１０１の動作について説明する。
ＣＰＵ１０１がＵｓｅｒモードのとき、割込み又は例外が発生しなければ（ステップＳ１０１でＮＯ）、ＣＰＵ１０１は、命令をフェッチし（ステップＳ１０２）、解読し（ステップＳ１０３）、実行し（ステップＳ１０４）、プログラムカウンタ（ｐｃ）４１２のアドレスを進める（ステップＳ１０５）。その後、ステップＳ１０１に戻り、処理を続ける。
【００６０】
ＣＰＵ１０１がＵｓｅｒモードのとき、割込み又は例外が発生した場合（ステップＳ１０１でＹＥＳ、なお、ここでは一例としてレジスタセット４０２に対応する例外が発生したと仮定する）、ＣＰＵ１０１は、例外が発生した時点において実行していた命令の次の命令の番地、即ち、戻りアドレスをレジスタセット４０２のリンクレジスタ（ｌｒ＿Ｂ）４２２にコピーする（ステップＳ１０６）。
【００６１】
次に、ＣＰＵ１０１は、カレントステータスレジスタ（ｃｓｒ）４１１の値を、ステータスレジスタ（ｓｒ＿Ｂ）４２１にコピーする（ステップＳ１０７）。ＣＰＵ１０１は、カレントステータスレジスタ（ｃｓｒ）４１１のモードビットを例外の種類を示すビットに書き換える（ステップＳ１０８）。次に、ＣＰＵ１０１は、例外の種類に応じたベクタアドレスへ分岐し（ステップＳ１０９）、プログラムカウンタ（ｐｃ）４１２を、例外ハンドラを示す番地にセットする（ステップＳ１１０）。
【００６２】
その後、ＣＰＵ１０１は、汎用レジスタ４１５、スタックポインタ（ｓｐ＿Ｂ）４２３、リンクレジスタ（ｌｒ）４２２、プログラムカウンタ（ｐｃ）４１２、及び、カレントステータスレジスタ（ｃｓｒ）４１１を使用して例外処理を行う。具体的には、命令をフェッチし（ステップＳ１１１）、解読し（ステップＳ１１２）、実行する（ステップＳ１１３）。ＣＰＵ１０１は、例外モードからＵｓｅｒモードに復帰する命令が発行されるまで、ステップＳ１１０からステップＳ１１４を繰り返す（ステップＳ１１４でＮＯ）。
【００６３】
例外モードからＵｓｅｒモードに復帰する命令が発行されると（ステップＳ１１４でＹＥＳ）、ＣＰＵ１０１は、レジスタセット４０２のリンクレジスタ（ｌｒ＿Ｂ）４２２を、レジスタセット４０１のプログラムカウンタ（ｐｃ）４１２へコピーする（ステップＳ１１５）。また、ＣＰＵ１０１は、ステータスレジスタ（ｓｒ＿Ｂ）４２１の値を、カレントステータスレジスタ（ｃｓｒ）４１１へコピーする（ステップＳ１１６）。
【００６４】
カレントステータスレジスタ（ｃｓｒ）４１１のモードビットが、例外を示すモードから、Ｕｓｅｒモードに切り替わり、ＣＰＵ１０１は、ステップＳ１０１に戻りＵｓｅｒモードの処理を行う。
【００６５】
なお、レジスタセット４０３やレジスタセット４０４など、他のレジスタセットを用いる例外が発生した場合も、ＣＰＵ１０１は同様に動作する。
（２）メモリ１０２
図６は、主記憶であるメモリ１０２の構成を示す図である。メモリ１０２は、バスインターフェース５０１、メモリ保護機構５０２及びメモリ領域から成り、同図に示す様に、メモリ領域は、ＯＳ１用例外ハンドラ領域５０３、ＯＳ１用メモリ領域５０４、ＯＳ２用例外ハンドラ領域５０５及びＯＳ２用メモリ領域５０６に分割されている。
【００６６】
メモリ保護機構５０２は、バスインターフェース５０１とＯＳ１用例外ハンドラ領域５０３との間に設けられたスイッチ５０７、バスインターフェース５０１とＯＳ１用メモリ領域５０４との間に設けられたスイッチ５０８、バスインターフェース５０１とＯＳ２用例外ハンドラ領域５０５との間に設けられたスイッチ５０９、及び、バスインターフェース５０１とＯＳ２用メモリ領域５０６との間に設けられたスイッチ５１０を備える。
【００６７】
メモリ保護機構５０２は、切替管理部１０６から発行されるメモリ保護制御信号を受け取り、受け取ったメモリ保護制御信号に応じて、各スイッチを開閉することにより、各スイッチと接続している各メモリ領域を遮断、又は、開放する。いま、図６は、スイッチ５０７及びスイッチ５０８が閉じられ、スイッチ５０９とスイッチ５１０とが開いているので、ＯＳ１用例外ハンドラ領域５０３とＯＳ１用メモリ領域５０４とが開放されており、ＯＳ２用例外ハンドラ領域５０５とＯＳ２用メモリ領域５０６とが遮断されている状態を示している。開放されたメモリ領域は、バス１１０からアクセス可能であり、遮断されたメモリ領域は、バス１１０からアクセス不可能であり、内部のデータが保護される。
【００６８】
（ａ）ＯＳ１用例外ハンドラ領域５０３
図７は、ＯＳ１用例外ハンドラ領域５０３を示す図である。
ＯＳ１用例外ハンドラ領域５０３は、リセットハンドラ５１１、デバイスドライバ２０１ａ、デバイスドライバ２０１ｂ、割込みハンドラ５１２、ソフトウェア割込みハンドラ５１３、前のＣＰＵ状態５１４などを保持する。左側の（００００ＡＡＡＡ）、（００００ＡＡＢＢ）などは、各プログラムが配置されているアドレスを示している。
【００６９】
（リセットハンドラ５１１）
ＯＳ１用例外ハンドラ領域５０３が保持するリセットハンドラ５１１は、実際にはコンピュータプログラムであるが、ここでは、説明の便宜のため、図８に示すフローチャートを用いて、リセットハンドラ５１１が実行されたときのＣＰＵ１０１の動作について説明する。
【００７０】
ＣＰＵ１０１は、ブートチェックを行い、ＯＳ１がブートしているか否か判断する（ステップＳ２０１）。ＯＳ１がブートしていない場合（ステップＳ２０１でＮＯ）、ＯＳ１をブートし（ステップＳ２０２）、ステップＳ２０８へ進む。
【００７１】
ＯＳ１がブートしている場合（ステップＳ２０１でＹＥＳ）、ＣＰＵ１０１は、メモリ１０２のＯＳ１用例外ハンドラ領域５０３から前のＣＰＵ状態５１４を読み出し、ＣＰＵ状態を復帰する（ステップＳ２０３）。なお、ＣＰＵ状態には、ＭＭＵ３０２の設定も含まれる。ＣＰＵ１０１は、ＭＭＵ３０２を有効化し（ステップＳ２０４）、キャッシュ３０３を有効化する（ステップＳ２０５）。その後、ＣＰＵ１０１は、切替管理部１０６に対して、ＯＳ１用メモリ領域５０４の開放を指示し（ステップＳ２０６）、更に、切替管理部１０６に対して、遷移要因を問い合わせる。
【００７２】
遷移要因がＯＳ１上で動作するプログラム（図２の２０２ａから２０２ｎのいずれか）への処理要求である場合（ステップＳ２０７でプログラム）、ＣＰＵ１０１は、要求されたプログラムへ分岐する（ステップＳ２０８）。
【００７３】
遷移要因がＯＳ１管理のハードウェア１０８からの割込みである場合（ステップＳ２０７でハードウェア）、ＣＰＵ１０１は、ＯＳ２への復帰準備として、レジスタファイル４００の割込みに対応するレジスタセットのリンクレジスタに、ＯＳ１からＯＳ２への遷移プログラムの先頭アドレスをセットする（ステップＳ２０９）。その後、割込みハンドラ５１２へ分岐する。  
【００７４】
（割込みハンドラ５１２）
割込みハンドラ５１２についてもリセットハンドラ５１１と同様、図９に示すフローチャートを用いて、割込みハンドラ５１２が実行されたときのＣＰＵ１０１の動作について説明する。
【００７５】
ＣＰＵ１０１は、割込みコントローラ１０７に割込み要因を問い合わせる（ステップＳ５０１）。割込み要因が、ＯＳ１管理のハードウェア１０８によるものである場合（ステップＳ５０２でＯＳ１管理のハードウェア）、ＣＰＵ１０１は、デバイスドライバ２０１ａに分岐し、デバイスドライバ２０１ａによる処理を行う（ステップＳ５０４）。
【００７６】
割込み要因が、ＯＳ２管理のハードウェア１０９によるものである場合（ステップＳ５０２でＯＳ２管理のハードウェア）、ソフトウェア割り込みハンドラ５１３に分岐する（ステップＳ５０３）。
【００７７】
（ソフトウェア割込みハンドラ５１３）
ソフトウェア割込みハンドラ５１３についても同様に、図１０に示すフローチャートを用いて、ソフトウェア割込みハンドラが実行されたときのＣＰＵ１０１の動作について説明する。
【００７８】
ＣＰＵ１０１は、ＭＭＵ３０２を無効化し（ステップＳ３０１）、キャッシュ３０３を無効化する（ステップＳ３０２）。更に、ＣＰＵ１０１は、カレントステータスレジスタ（ｃｓｒ）４１１の所定ビットをセットして割込みをマスクする（ステップＳ３０３）。
【００７９】
その後、ＣＰＵ１０１は、ＣＰＵ状態をＯＳ１用例外ハンドラ領域５０３に退避させ（ステップＳ３０４）、ＯＳ２上で動作するプログラムを指定する情報（図２の２０４ａから２０４ｎのいずれか）と、そのプログラムに要求する処理内容を切替管理部１０６に出力する（ステップＳ３０５）。
【００８０】
次に、ＣＰＵ１０１は、切替管理部１０６に対して、ＯＳ１用メモリ領域５０４の保護を指示し（ステップＳ３０６）、更に、切替管理部１０６に対して、ＯＳ２への切替を指示する（ステップＳ３０７）。次に、ＣＰＵ１０１は、省電力モードへの切替処理へ移行する（ステップＳ３０８）。
【００８１】
（ＣＰＵ省電力モード切替処理）
ここでは、図１１に示すフローチャートを用いて、ＣＰＵ１０１と切替管理部１０６との動作に基づき、ＣＰＵ１０１の省電力モードへの切替処理について説明する。
【００８２】
ＣＰＵ１０１が切替管理部１０６に対してＯＳ切替要求を実行する（ステップＳ４０１）と、切替管理部１０６はＯＳ切替要求を受け付け、（ステップＳ４０２）、後述する割込み制御部７０５により、割込み線をマスクする（ステップＳ４０３）。
ＣＰＵ１０１はＯＳ切替要求を実行した後、省電力モードへの切替処理（ステップＳ４０４）を実行する。その後、ＣＰＵ１０１は省電力モードに切り替わると、省電力モードに切り替わったことを示す信号を切替管理部１０６に出力する（ステップＳ４０５）。
【００８３】
切替管理部１０６は、省電力モードに切り替わったことを示す信号を受け取ると、ＣＰＵ１０１に対してリセットを掛ける（ステップＳ４０６）。
ＣＰＵ１０１は切替管理部１０６から例外信号を受け取ると、ＣＰＵ１０１内部の状態をクリアして、リセットハンドラの処理へ移行する（ステップＳ４０７）。
【００８４】
なお、ステップＳ４０４で省電力モードへの切替処理を行う前に、ＣＰＵ１０１が外部のデバイスとやりとりをしているときは、その処理を終了してから、省電力モードへの切替処理を行う。
【００８５】
（ｂ）ＯＳ１用メモリ領域５０４
ＯＳ１用メモリ領域５０４には、ＯＳ１を構成するプログラム及びデータとＯＳ１上で動作するプログラム（２０２ａから２０２ｎ）及びデータとがロードされる。
【００８６】
（ｃ）ＯＳ２用例外ハンドラ領域５０５
ＯＳ２用例外ハンドラ領域５０５は、リセットハンドラ、割込みハンドラ、ソフトウェア割込みハンドラ、デバイスドライバ２０３ａ、デバイスドライバ２０３ｂ、前のＣＰＵ状態などを保持する。
【００８７】
ＯＳ２用例外ハンドラ領域５０５が保持するリセットハンドラによる動作については図示していないが、図８に示したフローチャートのステップＳ２０２、ステップＳ２０６及びステップＳ２０９の各ステップについて、「ＯＳ１」を「ＯＳ２」に変更し、「ＯＳ２」を「ＯＳ１」に変更すればよい。
【００８８】
ＯＳ２用例外ハンドラ領域５０５が保持する割込みハンドラによる動作についても図示していないが、図９に示したフローチャートのステップＳ５０２、ステップＳ５０５、ステップＳ５０６、ステップＳ５０７及びステップＳ５０８の各ステップについて、「ＯＳ１」を「ＯＳ２」に変更し、「ＯＳ２」を「ＯＳ１」に変更し、更に、ステップＳ５０９について、「デバイスドライバ２０１ａ」を「デバイスドライバ２０３ａ」に変更すればよい。
【００８９】
ＯＳ２用例外ハンドラ領域５０５が保持するソフトウェア割込みハンドラによる動作についても図示していないが、図１０に示したフローチャートのステップＳ３０４、ステップＳ３０５、ステップＳ３０６及びステップＳ３０７の各ステップについて、「ＯＳ１」を「ＯＳ２」に変更し、「ＯＳ２」を「ＯＳ１」に変更すればよい。
【００９０】
（ｄ）ＯＳ２用メモリ領域５０６
ＯＳ２用メモリ領域５０６には、ＯＳ２を構成するプログラム及びデータとＯＳ２上で動作するプログラム（２０４ａから２０４ｎ）及びデータとがロードされる。
【００９１】
なお、本実施形態では、ＯＳ１及びＯＳ２が共通にアクセスできるメモリ領域を設けていないが、設けても良い。
（３）例外テーブル切替部１０３
例外テーブル切替部１０３は、バス１１０とＯＳ１用例外テーブル格納部１０４、及び、バス１１０とＯＳ２用例外テーブル格納部１０５を接続するスイッチを備える。
【００９２】
例外テーブル切替部１０３は、切替管理部１０６から供給される例外テーブル制御信号を受け付け、例外テーブル制御信号が「ＯＳ１」を示す場合に、バス１１０とＯＳ１用例外テーブル格納部１０４とが接続するようスイッチを制御し、例外テーブル制御信号が「ＯＳ２」を示す場合に、バス１１０とＯＳ２用例外テーブル格納部１０５とが接続するようスイッチを制御する。
【００９３】
（４）ＯＳ１用例外テーブル格納部１０４    
図１２（ａ）は、ＯＳ１用例外テーブル格納部１０４に格納されているＯＳ１用例外テーブル６０１を示す図である。
【００９４】
同図に示すように、ＯＳ１用例外テーブル６０１のエントリには、それぞれ例外要因に対応付けられた分岐命令が記述されている。例えば、「リセット」に対応付けられた分岐命令は、「００００ＡＡＡＡ」のアドレスへの分岐を示す「ＢＬ０ｘ００００ＡＡＡＡ」である。図７に示したように、「００００ＡＡＡＡ」のアドレスは、ＯＳ１用例外ハンドラ領域５０３内であって、リセットハンドラ５１１が配置されている。
【００９５】
ＣＰＵ１０１は、ＯＳ１が動作している状態において例外が発生すると、ＯＳ１用例外テーブル６０１を参照し、発生した例外の種類に応じたエントリにアクセスし、分岐命令を実行する。
【００９６】
（５）ＯＳ２用例外テーブル格納部１０５
図１２（ｂ）は、ＯＳ２用例外テーブル格納部１０５に格納されているＯＳ２用例外テーブル６０２を示す図である。
【００９７】
ＯＳ１用例外テーブル６０１と同様に、ＯＳ２用例外テーブル６０２のエントリには、それぞれ例外要因に対応つけられた分岐命令が記述されている。例えば、「割込み」に対応付けられた分岐命令は、「００００ＦＦＦＦ」のアドレスへの分岐を示す「ＢＬ０ｘ００００ＦＦＦＦ」である。なお、各分岐命令により示されるアドレスは、ＯＳ２用例外ハンドラ領域５０５内を示している。
【００９８】
ＣＰＵ１０１は、ＯＳ２が動作している状態において例外が発生すると、ＯＳ２用例外テーブル６０２を参照し、発生した例外の種類に応じたエントリにアクセスし、分岐命令を実行する。
【００９９】
（６）切替管理部１０６
図１３は、切替管理部１０６の構成を示す図である。
同図に示す様に、切替管理部１０６は、システム状態管理部７０１、メモリ保護制御部７０２、例外テーブル制御部７０３、例外制御部７０４、割込み制御部７０５及びゲート７０６から構成される。
【０１００】
システム状態管理部７０１は、バス１１０から受け取る情報、ＣＰＵ１０１から受け取る省電力モードに切り替わったことを示す情報に応じて、メモリ保護制御部７０２、例外テーブル制御部７０３、例外制御部７０４及び割込み制御部７０５へ指示を出力する。
【０１０１】
メモリ保護制御部７０２は、システム状態管理部７０１の指示に応じて、スイッチ５０７、５０８、５０９及び５１０を制御するための信号をメモリ１０２に出力する。
例外テーブル制御部７０３は、システム状態管理部７０１の指示に応じて、例外テーブル制御信号を例外テーブル切替部１０３に出力する。
【０１０２】
例外制御部７０４は、システム状態管理部７０１の指示に応じて、ＣＰＵ１０１にリセット信号を出力する。
割り込み制御部７０５は、システム状態管理部７０１の指示に応じて、ゲート７０６を制御し、割込みコントローラ１０７から受け取る割り込み信号１１１のＣＰＵ１０１への出力を制御する。
【０１０３】
図１４は、ＯＳ１からＯＳ２に遷移する場合のシステム状態管理部７０１の動作を示すシーケンスチャートである。図１４では、紙面の左から右へ（ｔ１からｔ５へ）向かって時間が経過するものとする。以下では、時間の流れに沿ってシステム状態管理部７０１の動作を説明する。
【０１０４】
ｔ１以前：システム状態管理部７０１は、メモリ保護制御部７０２に対して、ＯＳ１用例外ハンドラ領域５０３とＯＳ１用メモリ領域５０４との開放、及び、ＯＳ２用例外ハンドラ領域５０５とＯＳ２用メモリ領域５０６との遮断を指示する。また、システム状態管理部７０１は、例外テーブル制御部７０３に対して、ＯＳ１用例外テーブル６０１への接続を指示する。また、例外制御部７０４に対して、リセット信号を出力しないよう指示する。また、割り込み制御部７０５に対して割り込みをマスクしないよう指示する。
【０１０５】
ｔ１：システム状態管理部７０１は、バス１１０からＯＳ１用メモリ領域保護要求（Ｓ３０６）を受け取ると、メモリ保護制御部７０２に対して、ＯＳ１用メモリ領域の遮断を指示する。
【０１０６】
ｔ２：バス１１０からＯＳ２への切替を指示されると、システム状態管理部７０１は、割込み制御部７０５へ割込みをマスクする指示を出力する。
ｔ３：システム状態管理部７０１は、ＣＰＵ１０１から、省電力モードに切り替わったことを示す信号を受け取ると、例外制御部７０４へ、ＣＰＵ１０１へリセットを掛ける指示を出力する。また、メモリ保護制御部７０２に対して、ＯＳ１用例外ハンドラ領域の遮断及びＯＳ２用例外ハンドラ領域の開放を指示する。さらに、例外テーブル制御部７０３にＯＳ２用例外テーブル格納部１０５に切り替えるよう指示する。
【０１０７】
ｔ４：システム状態管理部７０１は、ＣＰＵ１０１の内部状態がクリアされるのに十分な時間が経過した後、例外制御部７０４に対して、リセットを解除する指示を出力する。また、割り込み制御部７０５へ割り込みマスクを解除する指示を出力する。
【０１０８】
ｔ５：システム状態管理部７０１はバス１１０からＯＳ２用メモリ開放要求（Ｓ２０６）を受け取ると、メモリ保護制御部７０２に対して、ＯＳ２用メモリ領域の開放を指示する。
【０１０９】
ＯＳ２からＯＳ１に遷移する場合のシステム状態管理部７０１の動作については図示していないが、図１４に示したシーケンスチャートの「ＯＳ１」を「ＯＳ２」に変更し、「ＯＳ２」を「ＯＳ１」に変更すればよい。
【０１１０】
（７）割込みコントローラ１０７
割込みコントローラ１０７は、ＯＳ１管理のハードウェア１０８及びＯＳ２管理のハードウェア１０９からの割込みを受け付けると、割込み線１１１により切替管理部１０６へ割込みの発生を伝える。また、割込みコントローラ１０７は、割込みハンドラ５１２（ＯＳ１用）及び割込みハンドラ（ＯＳ２用）からの割込み要因の問い合わせに対して、割込み要因を各ハンドラに伝える。
【０１１１】
＜動作＞
図１５は、情報処理装置１００全体の動作を示すフローチャートである。ここでは、図１５に基づき、情報処理装置１００の動作について説明する。なお、ここでは、説明の便宜上、ステップＳ７０２の処理から開始することとする。
【０１１２】
情報処理装置１００は、ＯＳ１のブートチェックを行う（ステップＳ７０２）。ＯＳ１がブートしていない場合（ステップＳ７０２でＮ）、ＯＳ１のブート処理を行い（ステップＳ７０３）、ステップＳ７０７へ進む。ＯＳ１がブートしている場合（ステップＳ７０２でＹ）、前のＣＰＵ状態をＯＳ１用例外ハンドラ領域５０３から読み出して、ＯＳ１のＣＰＵ状態を復帰する（ステップＳ７０４）。
【０１１３】
情報処理装置１００は、ＯＳ２からＯＳ１への遷移要因を確認する。遷移要因が、ＯＳ１管理のハードウェア１０８からの割込みである場合（ステップＳ７０５でＨ）、情報処理装置１００は、ＯＳ２への復帰準備を行い（ステップＳ７０６）、その後、ステップＳ７１０へ進む。遷移要因が、ＯＳ１上で動作するプログラムへの処理要求である場合（ステップＳ７０５でＰ）、情報処理装置１００は、要求されたプログラムの処理を行う（ステップＳ７０７）。その後、ＯＳ２への切替が必要となった場合、情報処理装置１００は、ＯＳ１退避処理行う（ステップＳ７０８）。
【０１１４】
一方、情報処理装置１００がＯＳ１に従い動作している状態において、ハードウェアに係る割込みが発生すると（ステップＳ７０９）、情報処理装置１００は、割込み要因を確認し（ステップＳ７１０）、割込み要因がＯＳ２管理のハードウェアである場合（ステップＳ７１０で２）、ステップＳ７０８へ進む。割込み要因がＯＳ１管理のハードウェアである場合（ステップＳ７１０で１）、情報処理装置１００は、デバイスドライバ２０１ａによる割込みに対応する処理を行い（ステップＳ７１１）、ステップＳ７０６でＯＳ２への復帰準備をしている場合、ステップＳ７０８へ進む。
【０１１５】
ステップＳ７０８のＯＳ１退避処理の後、情報処理装置１００は、ＣＰＵ１０１内部の状態をクリアし（ステップＳ８０１）、ＯＳ２のブートチェックを行う（ステップＳ８０２）。ＯＳ２がブートしていない場合（ステップＳ８０２でＮ）、ＯＳ２のブート処理を行い（ステップＳ８０３）、ステップＳ８０７へ進む。ＯＳ２がブートしている場合（ステップＳ８０２でＹ）、前のＣＰＵ状態をＯＳ２用例外ハンドラ領域５０５から読み出して、ＯＳ２のＣＰＵ状態を復帰する（ステップＳ６０４）。
【０１１６】
情報処理装置１００は、ＯＳ１からＯＳ２への遷移要因を確認する。遷移要因が、ＯＳ２管理のハードウェア１０９からの割込みである場合（ステップＳ８０５でＨ）、情報処理装置１００は、ＯＳ１への復帰準備を行い（ステップＳ８０６）、その後、ステップＳ８１０へ進む。遷移要因が、ＯＳ２上で動作するプログラムへの処理要求である場合（ステップＳ８０５でＰ）、情報処理装置１００は、要求されたプログラムの処理を行う（ステップＳ８０７）。その後、ＯＳ１への切替が必要となった場合、情報処理装置１００は、ＯＳ２退避処理を行う（ステップＳ８０８）。
【０１１７】
一方、情報処理装置１００がＯＳ２に従い動作している状態において、ハードウェアに係る割込みが発生すると（ステップＳ８０９）、情報処理装置１００は、割込み要因を確認し（ステップＳ８１０）、割込み要因がＯＳ１管理のハードウェアである場合（ステップＳ８１０で１）、ステップＳ８０８へ進む。割込み要因がＯＳ２管理のハードウェアである場合（ステップＳ８１０で１）、情報処理装置１００は、デバイスドライバ２０３ａによる割込みに対応する処理を行い（ステップＳ８１１）、ステップＳ８０６でＯＳ２への復帰準備をしている場合、ステップＳ８０８へ進む。
【０１１８】
ステップＳ８０８のＯＳ２退避処理の後、情報処理装置１００は、ＣＰＵ１０１内部の状態をクリアし（ステップＳ７０１）、ステップＳ７０２に戻り処理を続ける。
ここで、ステップＳ７０２からステップＳ７０６まで破線で囲まれた処理は、ＯＳ１のリセットハンドラ５１１を実行することによる処理であり、ステップＳ７０８のＯＳ１退避処理は、ＯＳ１のソフトウェア割込みハンドラ５１３を実行することによる処理であり、ステップＳ７１０の割込み要因の確認処理は、ＯＳ１の割込みハンドラ５１２を実行することによる処理である。  
【０１１９】
同様に、ステップＳ８０２からステップＳ８０６まで破線で囲まれた処理は、ＯＳ２のリセットハンドラを実行することによる処理であり、ステップＳ８０８のＯＳ２退避処理は、ＯＳ２のソフトウェア割込みハンドラを実行することによる処理であり、ステップＳ８１０の割込み要因の確認処理は、ＯＳ２の割込みハンドラを実行することによる処理である。
【０１２０】
≪第２の実施形態≫
本発明に係る、第２の実施形態として、情報処理装置１００ａについて、図面を参照して説明する。
【０１２１】
＜構成＞
図１６は、情報処理装置１００ａの構成を機能的に示す機能ブロック図である。
同図に示す様に、情報処理装置１００ａは、ＣＰＵ１０１ａ、メモリ１０２ａ、例外テーブル切替部１０３ａ、ＯＳ１用例外テーブル格納部１０４ａ、ＯＳ２用例外テーブル格納部１０５ａ、切替管理部１０６ａ、割込みコントローラ１０７ａ、ＯＳ１管理のハードウェア１０８ａ、ＯＳ２管理のハードウェア１０９ａ、バス１１０ａ、デバッガ無効化回路１１２ａ及びデバッガインターフェース１１３ａから構成される。
【０１２２】
情報処理装置１００との構成上の違いは、デバッガ無効化回路１１２ａ及びデバッガインターフェース１１３ａを備える点である。
ＣＰＵ１０１ａ、例外テーブル切替部１０３ａ、ＯＳ１用例外テーブル格納部１０４ａ、ＯＳ２用例外テーブル格納部１０５ａ、ＯＳ１管理のハードウェア１０８ａ、ＯＳ２管理のハードウェア１０９ａ及びバス１１０ａは、それぞれ、第１の実施形態である情報処理装置１００の、ＣＰＵ１０１、例外テーブル切替部１０３、ＯＳ１用例外テーブル格納部１０４、ＯＳ２用例外テーブル格納部１０５、割込みコントローラ１０７、ＯＳ１管理のハードウェア１０８及びＯＳ２管理のハードウェア１０９と同様の構成及び機能を有するため、ここでは説明を省略する。
【０１２３】
（１）メモリ１０２ａ
図１７は、メモリ１０２ａの構成を示す図である。
メモリ１０２ａは、メモリ１０２と同様に、バスインターフェース５０１ａ、メモリ保護機構５０２ａ、ＯＳ１用例外ハンドラ領域５０３ａ、ＯＳ１用メモリ領域５０４ａ、ＯＳ２用例外ハンドラ領域５０５ａ及びＯＳ２用メモリ領域５０６ａから構成される。
【０１２４】
メモリ保護機構５０２ａは、バスインターフェース５０１ａとＯＳ２用例外ハンドラ領域５０５ａとの間に設けられたスイッチ５０９ａ、及び、バスインターフェース５０１ａとＯＳ２用メモリ領域５０６ａとの間に設けられたスイッチ５１０ａを備える。
【０１２５】
メモリ保護機構５０２ａは、切替管理部１０６ａから発行されるメモリ保護制御信号を受け取り、受け取ったメモリ保護制御信号に応じて、スイッチ５０９ａ及びスイッチ５１０ａを開閉することにより、各スイッチと接続しているＯＳ２用例外ハンドラ領域５０５ａ及びＯＳ２用メモリ領域５０６ａを遮断、又は、開放する。いま、図１７では、スイッチ５０９ａとスイッチ５１０ａとが開いているので、ＯＳ２用例外ハンドラ領域５０５ａとＯＳ２用メモリ領域５０６ａとが遮断されている状態を示している。保護されたこれらのメモリ領域は、バス１１０ａからアクセス不可能であり、内部の情報が保護される。
【０１２６】
第１の実施形態との違いは、バスインターフェース５０１ａとＯＳ１用例外ハンドラ領域５０３ａとの間にスイッチが存在せず、同様に、バスインターフェース５０１ａとＯＳ１用メモリ領域５０４ａとの間にスイッチが存在しない点である。即ち、第２の実施形態では、ＯＳ１用例外ハンドラ領域５０３ａとＯＳ１用メモリ領域５０４ａとは、常に開放された状態であり、バス１１０ａからアクセスが可能である。
【０１２７】
（ａ）ＯＳ１用例外ハンドラ領域５０３ａ
ＯＳ１用例外ハンドラ領域５０３ａは、リセットハンドラ、ＯＳ１管理のハードウェア１０８ａを操作するためのデバイスドライバ、割込みハンドラ、ＯＳ１用ソフトウェア割込みハンドラ８０１及び８０２、前のＣＰＵ状態などを保持する。
【０１２８】
ＯＳ１用例外ハンドラ領域５０３ａが保持するリセットハンドラは、図８に示したリセットハンドラ５１１と異なるが、公知技術である通常のオペレーティングシステムのブート処理で実現可能であるため、説明を省略する。また、ＯＳ１用例外ハンドラ領域５０３ａが保持する割込みハンドラは、図９に示した割込みハンドラ５１２のステップＳ５０９の「デバイスドライバ２０１ａ」を「ＯＳ１管理のハードウェア１０８ａを操作するデバイスドライバ」に変更すればよい。
【０１２９】
ここでは、図１８に示すフローチャートを用いて、ＯＳ１用ソフトウェア割込みハンドラ８０１及び８０２が実行されたときのＣＰＵ１０１ａの動作について説明する。
（ＯＳ１用ソフトウェア割込みハンドラ８０１）
ＣＰＵ１０１ａは、キャッシュを無効化し（ステップＳ９０１）、ＭＭＵを無効化する（ステップＳ９０２）。更に、ＣＰＵは、カレントステータスレジスタ（ｃｓｒ）の所定ビットをセットして割込みをマスクする（ステップＳ９０３）。
【０１３０】
その後、ＣＰＵ１０１ａは、ＣＰＵ状態をＯＳ１用例外ハンドラ領域５０３ａに退避させ（ステップＳ９０４）、ＯＳ２上で動作するプログラムを指定する情報と、そのプログラムに要求する処理内容を切替管理部１０６ａに出力する（ステップＳ９０５）。
【０１３１】
次に、ＣＰＵ１０１ａは、切替管理部１０６ａに対して、戻り先番地を指示した後（Ｓ９０６）、ＯＳ２への切替を指示し（ステップＳ９０７）、続いて、省電力モードへの切替処理へ移行する（ステップＳ９０８）。
【０１３２】
（ＯＳ１用ソフトウェア割込みハンドラ８０２）
ＣＰＵ１０１ａは、ＯＳ１用例外ハンドラ領域５０３ａから前のＣＰＵ状態を読み出し、ＯＳ１のＣＰＵ状態を復帰させる（ステップＳ９１１）。ＣＰＵ１０１ａは、切替管理部１０６ａにデバッガの有効化を指示した後（ステップＳ９１２）、ＭＭＵを有効化し（ステップＳ９１３）、キャッシュを有効化する（ステップＳ９１４）。その後、ＣＰＵ１０１ａは、切替管理部１０６ａに対して、遷移要因を問い合わせる。
【０１３３】
遷移要因がＯＳ１上で動作するプログラムへの処理要求である場合（ステップＳ９１５でプログラム）、ＣＰＵ１０１ａは、要求されたプログラムへ分岐する（ステップＳ９１６）。
【０１３４】
遷移要因がＯＳ１管理のハードウェア１０８ａからの割込みである場合（ステップＳ９１５でハードウェア）、ＣＰＵ１０１ａは、割込みマスクを解除する（ステップＳ９１７）。
【０１３５】
その後、割込み処理から復帰すると（ステップＳ９１８）、ＣＰＵ１０１ａは、ＯＳ１用ソフトウェア割込みハンドラ８０１のステップＳ９０１へとび、処理を続ける。
（ｂ）ＯＳ２用例外ハンドラ領域５０５ａ
ＯＳ２用例外ハンドラ領域５０５ａは、ＯＳ２用リセットハンドラ８０３、ＯＳ２管理のハードウェア１０９ａを操作するためのデバイスドライバ、割込みハンドラ、ＯＳ２用ソフトウェア割込みハンドラ８０４、前のＣＰＵ状態などを保持する。
【０１３６】
ＯＳ２用例外ハンドラ領域５０５ａが保持する割込みハンドラの処理は、図９に示したフローチャートのステップＳ５０４について、「デバイスドライバ２０１ａ」を「ＯＳ２管理のハードウェア１０９ａを操作するデバイスドライバ」に変更すればよい。
【０１３７】
（ＯＳ２用リセットハンドラ８０３）
ここでは、図１９に示すフローチャートを用いて、ＯＳ２用リセットハンドラ８０３が実行されたときのＣＰＵ１０１ａの動作について説明する。
【０１３８】
ＣＰＵ１０１ａは、ブートチェックを行い、ＯＳ２がブートしているか否か判断する（ステップＳ１００１）。ＯＳ２がブートしていない場合（ステップＳ１００１でＮＯ）、ＯＳ２をブートし（ステップＳ１００２）、ステップＳ１００８へ進む。
【０１３９】
ＯＳ２がブートしている場合（ステップＳ１００１でＹＥＳ）、ＣＰＵ１０１ａは、メモリ１０２ａのＯＳ２用例外ハンドラ領域５０５ａから前のＣＰＵ状態を読み出し、ＣＰＵ状態を復帰する（ステップＳ１００３）。ＣＰＵ１０１ａは、ＭＭＵを有効化し（ステップＳ１００４）、キャッシュを有効化する（ステップＳ１００５）。その後、ＣＰＵ１０１ａは、切替管理部１０６ａに対して、ＯＳ２用メモリ領域５０６ａの開放を指示し（ステップＳ１００６）、更に、切替管理部１０６ａに対して、遷移要因を問い合わせる。
【０１４０】
遷移要因がＯＳ２上で動作するプログラムへの処理要求である場合（ステップＳ１００７でプログラム）、ＣＰＵ１０１ａは、要求されたプログラムへ分岐する（ステップＳ１００８）。
【０１４１】
遷移要因がＯＳ２管理のハードウェア１０９ａからの割込みである場合（ステップＳ１００７でハードウェア）、ＣＰＵ１０１ａは、割込みマスクを解除する（ステップＳ１００９）。割込み処理から復帰すると（ステップＳ１０１０）、ＣＰＵ１０１ａは、後述するＯＳ２用ソフトウェア割込みハンドラ８０４へとび、処理を続ける。
【０１４２】
（ＯＳ２用ソフトウェア割込みハンドラ８０４）
ここでは、図２０に示すフローチャートを用いて、ＯＳ２用ソフトウェア割込みハンドラ８０４が実行されたときのＣＰＵ１０１ａの動作について説明する。
【０１４３】
ＣＰＵ１０１ａは、キャッシュを無効化し（ステップＳ１０２１）、ＭＭＵを無効化する（ステップＳ１０２２）。更に、ＣＰＵは、カレントステータスレジスタ（ｃｓｒ）の所定ビットをセットして割込みをマスクする（ステップＳ１０２３）。
【０１４４】
その後、ＣＰＵ１０１ａは、ＣＰＵ状態をＯＳ２用例外ハンドラ領域５０５ａに退避させ（ステップＳ１０２４）、ＯＳ１上で動作するプログラムを指定する情報と、そのプログラムに要求する処理内容を切替管理部１０６ａに出力する（ステップＳ１０２５）。
【０１４５】
また、ＯＳ２用メモリ領域保護要求を切替管理部１０６ａに出力し（ステップＳ１０２６）、後述する分岐コード格納部７０９ａに格納されているＯＳ１への分岐コードに分岐する（ステップＳ１０２７）。分岐コード格納部７０９ａに格納されている分岐コードに含まれる分岐先アドレスは、図１８に示すＯＳ１用ソフトウェア割り込みハンドラ内のステップＳ９０６で指定されたアドレスである。
【０１４６】
（ｃ）ＯＳ１用メモリ領域５０４ａ、及び、ＯＳ２用メモリ領域５０６ａ
ＯＳ１用メモリ領域５０４ａには、ＯＳ１を構成するプログラム及びデータとＯＳ１上で動作するプログラム及びデータとがロードされる。
【０１４７】
また、ＯＳ２用メモリ領域５０６ａには、ＯＳ２を構成するプログラム及びデータとＯＳ２上で動作するプログラム及びデータとがロードされる。
（２）切替管理部１０６ａ
図２１は、切替管理部１０６ａの構成を示す図である。
【０１４８】
同図に示す様に、切替管理部１０６は、システム状態管理部７０１ａ、メモリ保護制御部７０２ａ、例外テーブル制御部７０３ａ、例外制御部７０４ａ、割込み制御部７０５ａ、デバッガ制御部７０６ａ及びゲート７０７ａから構成される。
【０１４９】
システム状態管理部７０１ａは、フェッチ検知部７０８ａと分岐コード格納部７０９ａとを備える。フェッチ検知部７０８ａは、分岐コード格納部７０９ａに格納されている分岐コードがＣＰＵ１０１ａによりフェッチされたことを検知することができる。分岐コード格納部７０９ａは、ＯＳ２からＯＳ１へ遷移するときにＣＰＵ１０１ａが実行する、ＯＳ２用ソフトウェア割込みハンドラ８０４への分岐を示す分岐コードを格納している。なお、当該分岐コードは、予め分岐コード格納部７０９ａに格納されていてもよいし、ＯＳ１からＯＳ２へ遷移するときに、ＯＳ１からＯＳ２へ通知され、ＯＳ２により分岐コード格納部７０９ａに書き込まれてもよい。また、ＯＳ１により分岐コード格納部７０９ａに書き込まれてもよい。この場合、ＯＳ１は、当該分岐コードを書き込むことはできるが、読み出すことはできない。
【０１５０】
システム状態管理部７０１ａは、バス１１０ａから受け取る情報、ＣＰＵ１０１ａから受け取る省電力モードに切り替わったことを示す情報、フェッチ検知部７０８ａによるフェッチの検知に応じて、メモリ保護制御部７０２ａ、例外テーブル制御部７０３ａ、例外制御部７０４ａ、割込み制御部７０５ａ及びデバッガ制御部７０６ａへ指示を出力する。
【０１５１】
メモリ保護制御部７０２ａは、システム状態管理部７０１ａの指示に応じて、スイッチ５０９ａ及び５１０ａを制御するための信号をメモリ１０２ａに出力する。
例外テーブル制御部７０３ａは、システム状態管理部７０１ａの指示に応じて、例外テーブル制御信号を例外テーブル切替部１０３ａに出力する。
【０１５２】
例外制御部７０４ａは、システム状態管理部７０１ａの指示に応じて、ＣＰＵ１０１ａにリセット信号を出力する。
割り込み制御部７０５ａは、システム状態管理部７０１ａの指示に応じて、ゲート７０７ａを制御し、割込みコントローラ１０７ａから受け取る割り込み信号１１１ａのＣＰＵ１０１ａへの出力を制御する。
【０１５３】
図２２は、ＯＳ１からＯＳ２に遷移する場合のシステム状態管理部７０１ａの動作を示すシーケンスチャートである。図２２では、紙面の左から右へ（ｔ１からｔ４へ）向かって時間が経過するものとする。以下では、時間の流れに沿ってシステム状態管理部７０１ａの動作を説明する。
【０１５４】
ｔ１以前：システム状態管理部７０１ａは、メモリ保護制御部７０２ａに対して、ＯＳ２用例外ハンドラ領域５０５ａとＯＳ２用メモリ領域５０６ａとの遮断を指示する。また、システム状態管理部７０１ａは、例外テーブル制御部７０３ａに対して、ＯＳ１用例外テーブルへの接続を指示する。また、例外制御部７０４ａに対して、リセット信号を出力しないよう指示する。また、割り込み制御部７０５ａに対して割り込みをマスクしないよう指示する。また、デバッガ制御部７０６ａにデバッガを有効にするよう指示する。
【０１５５】
ｔ１：システム状態管理部７０１ａは、バス１１０からＯＳ２への切替要求（ステップＳ９０７）を受け取ると、割り込み制御部７０５ａへ割り込みをマスクする指示を出力する。さらに、システム状態管理部７０１ａは、デバッガ制御部７０６ａへデバッガを無効にするよう指示する。
【０１５６】
ｔ２：システム状態管理部７０１ａは、ＣＰＵ１０１ａから、省電力モードに切り替わったことを示す信号を受け取ると、例外制御部７０４ａへ、ＣＰＵ１０１へリセットをかける指示を出力する。また、メモリ保護制御部７０２に対して、ＯＳ２用例外ハンドラ領域の開放を指示する。また、例外テーブル制御部７０３ａにＯＳ２用例外テーブルに切り替えるよう指示する。
【０１５７】
ｔ３：システム状態管理部７０１ａは、ＣＰＵ１０１ａの内部状態がクリアされるのに十分な時間が経過した後、例外制御部７０４ａに対して、リセットを解除する指示を出力する。また、割り込み制御部７０５ａへ割り込みマスクを解除する指示を出力する。
【０１５８】
ｔ４：システム状態管理部７０１ａは、バス１１０ａからＯＳ２用メモリ領域開放要求（ステップＳ１００６）を受け取ると、メモリ保護制御部７０２ａに対して、ＯＳ２用メモリ領域の開放を指示する。
【０１５９】
図２９は、ＯＳ２からＯＳ１に遷移する場合のシステム状態管理部７０１ａの動作を示すシーケンスチャートである。図２９では、紙面の左から右へ（ｔ１からｔ３へ）向かって時間が経過するものとする。以下では、時間の流れに沿ってシステム状態管理部７０１ａの動作を説明する。
【０１６０】
ｔ１以前：システム状態管理部７０１ａは、メモリ保護制御部７０２ａに対して、ＯＳ２用例外ハンドラ領域５０５ａとＯＳ２用メモリ領域５０６ａとの開放を指示する。また、システム状態管理部７０１ａは、例外テーブル制御部７０３ａに対して、ＯＳ２用例外テーブルへの接続を指示する。また、例外制御部７０４ａに対して、リセット信号を出力しないよう指示する。また、割り込み制御部７０５ａに対して割り込みをマスクしないよう指示する。また、デバッガ制御部７０６ａにデバッガを無効にするよう指示する。
【０１６１】
ｔ１：システム状態管理部７０１ａは、バス１１０からＯＳ２用メモリ領域保護要求（ステップＳ１０２６）を受け取ると、メモリ保護制御部７０２ａに対して、ＯＳ２用メモリ領域５０６ａの遮断を指示する。
【０１６２】
ｔ２：システム状態管理部７０１ａは、分岐コード格納部７０９ａへのアクセスをフェッチ検知部７０８ａが検知すると、メモリ保護制御部７０２ａに対して、ＯＳ２用例外ハンドラ領域５０５ａの遮断を指示する。また、例外テーブル制御部７０３ａにＯＳ１用例外テーブルに切り替えるよう指示する。
【０１６３】
ｔ３：システム状態管理部７０１ａは、バス１１０からデバッガの有効化の指示を受けるとデバッガ制御部７０６ａにデバッガの有効化を指示する。
（３）デバッガ無効化回路１１２ａ及びデバッガインターフェース１１３ａ
デバッガ無効化回路１１２ａは、ＣＰＵ１０１ａとデバッガインターフェース１１３ａとの間に設けられ、ＣＰＵ１０１ａとデバッガインターフェース１１３ａとを接続又は切断することができる。
【０１６４】
デバッガ無効化回路１１２ａは、切替管理部１０６ａから「有効」を示すデバッガ制御信号を受け取ると、ＣＰＵ１０１ａとデバッガインターフェース１１３ａとを接続し、切替管理部１０６ａから「無効」を示すデバッガ制御信号を受け取ると、ＣＰＵ１０１ａとデバッガインターフェース１１３ａとを切断する。
【０１６５】
ＣＰＵ１０１ａとデバッガインターフェース１１３ａとが接続されているときは、デバッガインターフェース１１３ａの外部に接続されるデバッガが有効であり、ＣＰＵ１０１ａとデバッガインターフェース１１３ａとが切断されているときは、デバッガインターフェース１１３ａの外部に接続されるデバッガが無効である。具体例として、デバッガ無効化回路１１２ａは、図２３に示す様なスイッチにより実現される。
【０１６６】
デバッガインターフェース１１３ａは、情報処理装置１００ａと外部のデバッガとを接続するためのインターフェースである。
図２３は、デバッガ無効化回路１１２ａ、ＣＰＵ１０１ａ及びメモリ１０２ａの関係を説明するために、情報処理装置１００の一部を簡略化して記載した図である。
【０１６７】
（ａ）は、情報処理装置１００ａでＯＳ１が動作している状態を示す。ＯＳ１が動作している状態において、メモリ１０２ａは、切替管理部１０６ａから出力されるメモリ保護制御信号により、ＯＳ２用例外ハンドラ領域５０５ａ及びＯＳ２用メモリ領域５０６ａが遮断されている。このときデバッガ無効化回路１１２ａは、切替管理部１０６ａから、「有効」を示すデバッガ制御信号を受け取り、デバッガインターフェース１１３ａとＣＰＵ１０１ａとを接続するよう、スイッチを閉状態にする。
【０１６８】
なお、ＯＳ２からＯＳ１への切替時には、切替管理部１０６ａが分岐コードをフェッチした時点を、ＯＳの切り替わり時点であると判断し、切替管理部１０６ａにより分岐コードがフェッチされたのち、デバッガ無効化回路１１２ａが、切替管理部１０６ａから発行される「有効」を示すデバッガ制御信号を受け取とってもよい。
【０１６９】
（ｂ）は、情報処理装置１００ａでＯＳ２が動作している状態を示す。ＯＳ２が動作している状態において、メモリ１０２ａは、切替管理部１０６ａから出力されるメモリ保護制御信号により、ＯＳ２用例外ハンドラ領域５０５ａ及びＯＳ２用メモリ領域５０６ａが開放されている。このときデバッガ無効化回路１１２ａは、切替管理部１０６ａから、「無効」を示すデバッガ制御信号を受け取り、デバッガインターフェース１１３ａとＣＰＵ１０１ａとを切断するよう、スイッチを開状態にする。
【０１７０】
＜動作＞
図２４は、情報処理装置１００ａ全体の動作を示すフローチャートである。ここでは、図２４に基づき、情報処理装置１００ａの動作について説明する。
【０１７１】
情報処理装置１００ａは、ＯＳ１のブート処理を行い（ステップＳ１０３１）、ＯＳ１による処理を行う（ステップＳ１０３２）。その後、情報処理装置１００ａはＯＳ１の退避処理を行う（ステップＳ１０３３）。
【０１７２】
ＯＳ１が復帰すると（ステップＳ１０３４）、情報処理装置１００ａは、ＯＳ２からＯＳ１への遷移要因を確認する。遷移要因が、ＯＳ１上で動作するプログラムへの処理要求である場合（ステップＳ１０３５でＰ）、ステップＳ１０３２へとび、要求された処理を行う。遷移要因が、ＯＳ１管理のハードウェア１０８ａからの割込みである場合（ステップＳ１０３５でＨ）、情報処理装置１００ａは、割込みマスクを解除する（ステップＳ１０３６）。
ここで、割込みコントローラ１０７ａが割込み信号を出力していた場合、割込みマスクの解除（ステップＳ１０３６）の直後に、ＣＰＵ１０１ａは割込みを受け付け、情報処理装置１００ａは割込み発生状態（ステップＳ１０３８）になる。その後、情報処理装置１００ａは、割込み要因を確認する（ステップＳ１０３９）。
割込み要因が、ＯＳ１管理のハードウェア１０８ａからの割込みである場合（ステップＳ１０３９で１）、情報処理装置１００ａは、デバイスドライバにより割込みに対応する処理を行い、割込み処理が終了すると、割込みを受け付けたコードの次のコードを実行し、割込みからの復帰処理を行う（ステップＳ１０３７）。情報処理装置１００ａは、割込みから復帰すると（ステップＳ１０３７）、ステップＳ１０３３へとび、ＯＳ１の退避処理を行う。
割込み要因が、ＯＳ２管理のハードウェア１０９ａからの割込みである場合（ステップＳ１０３９で２）、情報処理装置１００ａは、割込みコントローラ１０７ａに対し、割込み要因クリアの処理をせずにステップＳ１０３３へ進む。
【０１７３】
なお、情報処理装置１００ａがＯＳ１に従い動作している状態（ステップＳ１０３２）において、ＯＳ１管理のハードウェア１０８ａに係る割込みが発生した場合、情報処理装置１００ａは、公知技術である通常のオペレーティングシステムの割り込み処理を行うため、説明を省略する。
【０１７４】
ステップＳ１０３３のＯＳ１退避処理の後、情報処理装置１００ａは、ＣＰＵ１０１ａ内部の状態をクリアし（ステップＳ１０５１）、ＯＳ２のブートチェックを行う（ステップＳ１０５２）。ＯＳ２がブートしていない場合（ステップＳ１０５２でＮ）、ＯＳ２のブート処理を行い（ステップＳ１０５３）、ステップＳ１０５６へ進む。ＯＳ２がブートしている場合（ステップＳ１０５２でＹ）、前のＣＰＵ状態をＯＳ２用例外ハンドラ領域５０５ａから読み出して、ＯＳ２のＣＰＵ状態を復帰する（ステップＳ１０５４）。
【０１７５】
情報処理装置１００ａは、ＯＳ１からＯＳ２への遷移要因を確認する。遷移要因がＯＳ２上で動作するプログラムへの処理要求である場合（ステップＳ１０５５でＰ）、情報処理装置１００ａは、要求されたプログラムの処理を行う（ステップＳ１０５６）。その後、情報処理装置１００ａは、ＯＳ１の処理が必要な場合、ＯＳ２の退避処理を行う（ステップＳ１０５７）。遷移要因が、ＯＳ２管理のハードウェア１０９ａからの割込みである場合（ステップＳ８０５でＨ）、情報処理装置１００ａは、割込みマスクを解除する（ステップＳ１０５８）。
ここで、割込みコントローラ１０７ａが割込み信号を出力していた場合、割込みマスクの解除（ステップＳ１０５９）の直後に、ＣＰＵ１０１ａは割込みを受け付け、情報処理装置１００ａは割込み発生状態（ステップＳ１０６０）になる。その後、情報処理装置１００ａは、割込み要因を確認する（ステップＳ１０６１）。
【０１７６】
割込み要因が、ＯＳ２管理のハードウェア１０９ａからの割込みである場合（ステップＳ１０６１で２）、情報処理装置１００ａは、デバイスドライバにより割込みに対応する処理を行い（ステップＳ１０６２）、割込み処理が終了すると、割込みを受け付けたコードの次のコードを実行し、割込みからの復帰処理を行う（ステップＳ１０５９）。情報処理装置１００ａは、割込みから復帰すると（ステップＳ１０５９）、ステップＳ１０５７へ進みＯＳ２の退避処理を行う。
【０１７７】
割込み要因が、ＯＳ１管理のハードウェア１０８ａからの割込みである場合（ステップＳ１０６１で1）、情報処理装置１００ａは、割込みコントローラ１０７ａに対し、割込み要因クリアの処理をせずにＯＳ２の状態を退避する処理を実行し（ステップＳ１０５７）、ＯＳ２からＯＳ１への切替処理を行った後、ＯＳ１の復帰処理（ステップＳ１０３４）を行う。  
【０１７８】
なお、情報処理装置１００ａがＯＳ２に従い動作している状態（ステップＳ１０５６）において、ＯＳ２管理のハードウェア１０９ｂに係る割込みが発生した場合、情報処理装置１００ａは公知技術である通常のオペレーティングシステムの割り込み処理を行うため、説明を省略する。
【０１７９】
ここで、ステップＳ１０３３からステップＳ１０３７まで破線で囲まれた処理は、ＯＳ１用ソフトウェア割込みハンドラ８０１及び８０２を実行することによる処理であり、ステップＳ１０３９の割込み要因の確認処理は、ＯＳ１の割込みハンドラを実行することによる処理である。
【０１８０】
また、ステップＳ１０５２からステップＳ１０５９までのステップの内、破線で囲まれた処理は、ＯＳ２用リセットハンドラ８０３を実行することによる処理であり、ステップＳ１０５７のＯＳ２の退避処理は、ＯＳ２用ソフトウェア割込みハンドラ８０４を実行することによる処理であり、ステップＳ１０６２の割込み要因の確認処理は、ＯＳ２の割込みハンドラを実行することによる処理である。
【０１８１】
＜変形例１＞
上記第２の実施形態における情報処理装置１００ａは、割込み要因の確認を、ソフトウェアが割込みコントローラ１０７ａに問い合わせる構成を有しているが、割込み要因の確認をハードウェアが実現するように構成してもよい。そこで、情報処理装置１００ａの変形例として、情報処理装置１００ｂについて説明する。
【０１８２】
図２５は、情報処理装置１００ｂの構成を機能的に示す機能ブロック図である。
同図に示す様に、情報処理装置１００ｂは、ＣＰＵ１０１ｂ、メモリ１０２ｂ、例外テーブル切替部１０３ｂ、ＯＳ１用例外テーブル格納部１０４ｂ、ＯＳ２用例外テーブル格納部１０５ｂ、切替管理部１０６ｂ、ベクタ割込みコントローラ１０７ｂ、ＯＳ１管理のハードウェア１０８ｂ、ＯＳ２管理のハードウェア１０９ｂ、バス１１０ｂ、デバッガ無効化回路１１２ｂ及びデバッガインターフェース１１３ｂから構成される。
【０１８３】
情報処理装置１００ａとの構成上の違いは、情報処理装置１００ｂは、割込みコントローラ１０７ａに替えて、ベクタ割込みコントローラ１０７ｂを備える点である。以下では、情報処理装置１００ａと異なる部分を中心に説明する。
【０１８４】
（１）ベクタ割込みコントローラ１０７ｂ
ベクタ割込みコントローラ１０７ｂは、割込みコントローラ１０７ａと同様に、ＯＳ１管理のハードウェア１０８ｂからの割込みを受け付ける割込み線、及び、ＯＳ２管理のハードウェア１０９ｂからの割込みを受け付ける割込み線を備える。
【０１８５】
また、ベクタ割込みコントローラ１０７ｂは、デバイスとデバイスドライバのアドレスとを対応付けたテーブルを保持しており、割込み線から割込みを受け付けると、テーブルを参照して、割込みを発生したデバイスがＯＳ１管理のハードウェア１０８ｂであるか、ＯＳ２管理のハードウェア１０９ｂであるかを判断し、対応するデバイスドライバの配置されたメモリアドレスを取得し、取得したアドレスをＣＰＵ１０１ｂへ通知する。
【０１８６】
なお、ベクタ割込みコントローラ１０７ｂは、ＯＳ１管理のハードウェア１０８ｂおよびＯＳ２管理のハードウェア１０９ｂの他に、複数のハードウェアを接続することができ、各ハードウェアに応じたアドレスをＣＰＵ１０１ｂに通知することができる。即ち、デバイスからベクタ割込みコントローラ１０７ｂへ割込みの発生が伝えられると、ＣＰＵ１０１ｂは、直接デバイスドライバへ分岐する。
【０１８７】
（２）切替管理部１０６ｂ
図２６は、切替管理部１０６ｂの構成を示す図である。同図に示す様に、切替管理部１０６ｂは、システム状態管理部７０１ｂ、メモリ保護制御部７０２ｂ、例外テーブル制御部７０３ｂ、例外制御部７０４ｂ、割込み制御部７０５ｂ、デバッガ制御部７０６ｂ及びゲート７０７ｂから構成される。
【０１８８】
システム状態管理部７０１ｂは、バス１１０ｂから受け取る情報、信号線から受け取る情報、情報処理装置１００ｂの各状態、フェッチ検知部７０８ｂによる分岐コードフェッチの検知に応じて、メモリ保護制御部７０２ｂ、例外テーブル制御部７０３ｂ、例外制御部７０４ｂ、割込み制御部７０５ｂ及びデバッガ制御部７０６ｂへ指示を出力する。
【０１８９】
システム状態管理部７０１ｂの動作は、図２２に示したシステム状態管理部７０１ａの動作と同様であるので、説明を省略する。
図２７は、情報処理装置１００ｂにおける割込み制御の具体例を示したシーケンスチャートである。
【０１９０】
ここで、ＶＥビットは、ＣＰＵ１０１ｂに設定されるベクタ割込みコントローラ無効化ビットである。ＶＥ＝０は、ベクタ割込みの受け付けの禁止、即ちベクタ割込みのマスクを示し、ＶＥ＝１は、ベクタ割込みの受け付け許可を示す。ＶＥビットは、ソフトウェアにより、ＣＰＵ１０１ｂに設定される。ＣＰＵ１０１ｂリセット後のＶＥビットの初期状態は、ＶＥ＝０である。
【０１９１】
ここで、Ｉビットは、ＣＰＵ１０１ｂのカレントステータスレジスタ（ｃｓｒ）が保持するＩＲＱ割込み無効化ビットである。Ｉ＝１は、割込みの受け付け禁止、即ち割込みをマスクを示し、Ｉ＝０は、割込みの受け付け許可を示す。
【０１９２】
ここで、ｎＩＲＱは、割込みの発生をＣＰＵ１０１ｂへ伝える信号であり、切替管理部１０６ｂ内のゲート７０７ｂより出力される信号である。ｎＩＲＱ＝０（ＬＯＷ）のとき割り込みが発生している。
【０１９３】
図２７では、紙面の左から右へ（ｔ１からｔ１２へ）向かって時間が経過するものとする。以下では、時間の流れに沿って割込み制御について説明する。
ｔ１以前：情報処理装置１００ｂは、ＯＳ２で動作しているとする。このとき、ＯＳ２はＶＥ＝１にしないのでＶＥ＝０であり、ベクタ割込みコントローラ１０７ｂからのベクタ割込みがマスクされている。また、Ｉ＝０であり、割込みの受け付けが許可されている。
【０１９４】
ｔ１：ＯＳ１管理のハードウェア１０８ｂから割込みが発生し、ベクタ割込みコントローラ１０７ｂへ割込みの発生を伝える。
ｔ２：図２７では省略しているが、ベクタ割込みコントローラ１０７ｂは、割込み信号１１１ｂを駆動し、切替管理部１０６ｂに割込みの発生を伝える。割込みの発生が伝えられると、切替管理部１０６ｂは、ｎＩＲＱをアサートして、ＣＰＵ１０１ｂに割込みの発生を伝える。ＣＰＵ１０１ｂは、ｎＩＲＱ＝０を受け取ると、ＩビットをＩ＝１に設定し、割込みをマスクするする。
【０１９５】
ｔ３：ＣＰＵ１０１ｂは、ＶＥ＝０であるので、ベクタ割込みコントローラ１０７ｂからベクタアドレス信号を受信せず、割込みハンドラへ分岐する。
ｔ４：システム状態管理部７０１ｂが図２９に示した動作を行い、ＯＳ２からＯＳ１へ遷移する。図２４のステップＳ１０３６（割込みマスク解除）で、割込みマスクを解除する前に、ＣＰＵ１０１ｂのＶＥビットはＶＥ＝１に設定される。
【０１９６】
ｔ５：図２４のステップＳ１０３６で、ｃｓｒのＩビットをＩ＝０に設定すると、ｎＩＲＱ＝０であるのでＣＰＵ１０１ｂは、再度割り込みを受け付ける。その後、再度ＩビットをＩ＝１に設定し、割込みをマスクする。
【０１９７】
ｔ６：ＣＰＵ１０１ｂは、ＶＥ＝１であるので、割込みを処理するため、ベクタ割込みコントローラ１０７ｂへデバイスドライバのアドレスを要求する。
ｔ７：ベクタ割込みコントローラ１０７ｂは、ＯＳ１管理のハードウェア１０８ｂのデバイスドライバのアドレスをＣＰＵ１０１ｂへ通知する。
【０１９８】
ｔ８：ベクタ割込みコントローラ１０７ｂは、ＣＰＵ１０１ｂへデバイスドライバのアドレスを受け取ったか問い合わせる。
ｔ９：ＣＰＵ１０１ｂは、ベクタ割込みコントローラ１０７ｂへ、ＡＣＫを送信し、デバイスドライバのアドレスを受け取ったことを通知する。
【０１９９】
ｔ１０：ＣＰＵ１０１ｂは、デバイスドライバの処理を終了するとベクタ割込みコントローラ１０７ｂに対して、割込み要因クリアの指示をする。ベクタ割込みコントローラ１０７ｂは切替管理部１０６ｂへの割込み信号を取り下げ、切替管理部１０６ｂは、ｎＩＲＱ＝１にする。
【０２００】
ｔ１２：デバイスドライバは、処理終了後、ＣＰＵ１０１ｂのｃｓｒのＩビットをＩ＝０に設定する。
＜変形例２＞
上記第２の実施形態である情報処理装置１００ａの変形例として、情報処理装置１００ｄについて説明する。
【０２０１】
図２８は、情報処理装置１００ｄの構成を機能的に示す機能ブロック図である。
同図に示す様に、情報処理装置１００ｄは、ＣＰＵ１０１ｄ、メモリ１０２ｄ、例外テーブル切替部１０３ｄ、ＯＳ１用例外テーブル格納部１０４ｄ、ＯＳ２用例外テーブル格納部１０５ｄ、切替管理部１０６ｄ、割込みコントローラ１０７ｄ、ＯＳ１管理のハードウェア１０８ｄ、ＯＳ２管理のハードウェア１０９ｄ、バス１１０ｄ、デバッガ無効化回路１１２ｄ、デバッガインターフェース１１３ｄ及びパワーオンリセット回路１１４ｄから構成される。
【０２０２】
情報処理装置１００ａとの構成上の違いは、情報処理装置１００ｄは、パワーオンリセット回路１１４ｄを備える点である。また、メモリ１０２ｄは、メモリ１０２ａと一部構成が異なる。  
【０２０３】
パワーオンリセット回路１１４ｄは、情報処理装置１００ｄに電源が供給された場合、バグ、ノイズの発生等によりシステムの不具合が発生した場合に、情報処理装置１００ｄ全体にリセットを掛ける回路である。
【０２０４】
なお、図２８では、パワーオンリセット回路１１４ｄからの信号線は、ＣＰＵ１０１ｄとメモリ１０２ｄとにのみ接続されているが、実際には、その他の構成要素にも同様に、パワーオンリセット回路１１４ｄから信号線が入っているが、ここでは、それらの信号線を省略している。
【０２０５】
パワーオンリセット回路１１４ｄからのリセット信号により、ＣＰＵ１０１ｄにリセットが掛かると、ＣＰＵ１０１ｄは内部をクリアし、ＯＳ１がブートする。また、メモリ１０２にリセットが掛かるときの処理については以下で述べる。
【０２０６】
図３０は、メモリ１０２ｄの構成を機能的に示す機能ブロック図である。
同図に示す様に、メモリ１０２ｄは、バスインターフェース５０１ｄ、メモリ保護機構５０２ｄ、メモリクリア回路５１１ｄ及びメモリ領域から成る。メモリ保護機構５０２ｄは、バスインターフェース５０１ｄとＯＳ２用例外ハンドラ領域５０５ｄとの間に設けられたスイッチ５０９ｄ、及び、バスインターフェース５０１ｄとＯＳ２用メモリ領域５０６ｄとの間に設けられたスイッチ５１０ｄを備える。また、メモリ領域は、ＯＳ１用例外ハンドラ領域５０３ｄ、ＯＳ１用メモリ領域５０４ｄ、ＯＳ２用例外ハンドラ領域５０５ｄ及びＯＳ２用メモリ領域５０６ｄに分割されている。メモリ１０２ａとの構成上の違いは、メモリクリア回路５１１ｄを備える点である。
【０２０７】
メモリクリア回路５１１ｄは、パワーオンリセット回路１１４ｄから出力されるリセットを受け取ると、ＯＳ２用例外ハンドラ領域５０５ｄ及びＯＳ２用メモリ領域５０６ａに特定の値を書き込む。ここで、特定の値とは、ゼロやランダムな値でもよい。また、メモリクリア回路５１１ｄは、ＯＳ２用例外ハンドラ領域５０５ｄおよびＯＳ２用メモリ領域５０６ｄのメモリ全てに値を書き込むまで、メモリ保護機構５０２ｄからのアクセスを遮断する。
【０２０８】
これは、パワーオンリセット回路１１４ｄによりＣＰＵ１０１ｄがリセットされ、ＯＳ１がブートするのに要する時間と、メモリクリア回路５１１ｄがＯＳ２用例外ハンドラ領域５０５ｄ及びＯＳ２用メモリ領域５０６ｄに特定の値を書き込むのに要する時間とでは前者の方が短く、ＯＳ２用例外ハンドラ領域５０５ｄ及びＯＳ２用メモリ領域５０６ｄの内容が、ＯＳ１により解析、操作される可能性があるためである。そこで、ＯＳ２用例外ハンドラ領域５０５ｄ及びＯＳ２用メモリ領域５０６ｄに特定の値を書き込むまでの間、メモリクリア回路５１１ｄは、メモリ保護機構５０２ｄからのアクセスを遮断することが必要となる。
【０２０９】
≪まとめ≫
本発明を上記の実施形態に基づき説明してきたが、本発明は、上記の実施形態に限定されないのは勿論であり、以下の様な場合も本発明に含まれる。
【０２１０】
（１）上記の実施形態では、情報処理装置は、ＯＳ１及びＯＳ２の２個のオペレーティングシステムを保持しているが、本発明において、情報処理装置が保持するオペレーティングシステムは、２個に限定されないのは勿論であり、２個以上の複数個のオペレーティングシステムを保持する場合も本発明に含まれる。
【０２１１】
（２）第１の実施例、第２の実施例、変形例１及び変形例２を、それぞれ組み合わせる構成も本発明に含まれる。
（３）本発明は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
【０２１２】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号をコンピュータ読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、ＣＤ‐ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ‐ＲＯＭ、ＤＶＤ‐ＲＡＭ、ＢＤ（Ｂｌｕ‐ｒａｙ  Ｄｉｓｃ）、半導体メモリなど、に記録したものとしてもよい。また、これらの記録媒体に記録されている前記コンピュータプログラム又は前記デジタル信号であるとしてもよい。
【０２１３】
また、本発明は、前記コンピュータプログラム又は前記デジタル信号を、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク等を経由して伝送するものとしてもよい。
【０２１４】
また、本発明は、マイクロプロセッサとメモリとを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
【０２１５】
また、前記プログラム又は前記デジタル信号を前記記録媒体に記録して移送することにより、又は前記プログラム又は前記デジタル信号を前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
【産業上の利用可能性】
【０２１６】
本発明は、複数のオペレーティングシステムを保持する情報処理装置をユーザに提供する産業において利用することができる。
【符号の説明】
【０２１７】
１００    情報処理装置
１００ａ  情報処理装置
１００ｂ  情報処理装置
１００ｄ  情報処理装置
１０１    ＣＰＵ
１０１ａ  ＣＰＵ
１０１ｂ  ＣＰＵ
１０１ｄ  ＣＰＵ
１０２    メモリ
１０２ａ  メモリ
１０２ｂ  メモリ
１０２ｄ  メモリ
１０３    例外テーブル切替部
１０３ａ  例外テーブル切替部
１０３ｂ  例外テーブル切替部
１０３ｄ  例外テーブル切替部
１０４    ＯＳ１用例外テーブル格納部
１０４ａ  ＯＳ１用例外テーブル格納部
１０４ｂ  ＯＳ１用例外テーブル格納部
１０４ｄ  ＯＳ１用例外テーブル格納部
１０５    ＯＳ２用例外テーブル格納部
１０５ａ  ＯＳ２用例外テーブル格納部
１０５ｂ  ＯＳ２用例外テーブル格納部
１０５ｄ  ＯＳ２用例外テーブル格納部
１０６    切替管理部
１０６ａ  切替管理部
１０６ｂ  切替管理部
１０６ｄ  切替管理部
１０７    割込みコントローラ
１０７ａ  割込みコントローラ
１０７ｂ  ベクタ割込みコントローラ
１０７ｄ  ベクタ割込みコントローラ
１０８    ＯＳ１管理のハードウェア
１０８ａ  ＯＳ１管理のハードウェア
１０８ｂ  ＯＳ１管理のハードウェア
１０８ｄ  ＯＳ１管理のハードウェア
１０９    ＯＳ２管理のハードウェア
１０９ａ  ＯＳ２管理のハードウェア
１０９ｂ  ＯＳ２管理のハードウェア
１０９ｄ  ＯＳ２管理のハードウェア
１１０    バス
１１０ａ  バス
１１０ｂ  バス
１１０ｄ  バス
１１２ａ  デバッガ無効化回路
１１２ｂ  デバッガ無効化回路
１１２ｄ  デバッガ無効化回路
１１３ａ  デバッガインターフェース
１１３ｂ  デバッガインターフェース
１１３ｄ  デバッガインターフェース
１１４ｄ  パワーオンリセット回路
【図１】
2010267286.tif 000003
【図２】
2010267286.tif 000004
【図３】
2010267286.tif 000005
【図４】
2010267286.tif 000006
【図５】
2010267286.tif 000007
【図６】
2010267286.tif 000008
【図７】
2010267286.tif 000009
【図８】
2010267286.tif 000010
【図９】
2010267286.tif 000011
【図１０】
2010267286.tif 000012
【図１１】
2010267286.tif 000013
【図１２】
2010267286.tif 000014
【図１３】
2010267286.tif 000015
【図１４】
2010267286.tif 000016
【図１５】
2010267286.tif 000017
【図１６】
2010267286.tif 000018
【図１７】
2010267286.tif 000019
【図１８】
2010267286.tif 000020
【図１９】
2010267286.tif 000021
【図２０】
2010267286.tif 000022
【図２１】
2010267286.tif 000023
【図２２】
2010267286.tif 000024
【図２３】
2010267286.tif 000025
【図２４】
2010267286.tif 000026
【図２５】
2010267286.tif 000027
【図２６】
2010267286.tif 000028
【図２７】
2010267286.tif 000029
【図２８】
2010267286.tif 000030
【図２９】
2010267286.tif 000031
【図３０】
2010267286.tif 000032