(57)【要約】【課題】ソフトウェアの誤動作による設定の不備を防止し、全ての違反メモリアクセスを検出できるようにすることを目的とする。【解決手段】アドレスマップ保管部２１０は複数のプログラムそれぞれに割り当てられるアクセス可能領域を示すアドレスマップを記憶する。実行順序管理部２２０は複数のプログラムの所定の実行順序を示す実行順序情報を記憶する。タイマ２４１は実行プログラムを切り替える切り替え開始割込みを切り替え周期毎にＣＰＵ１１０に通知する。実行順序管理部２２０は切り替え後の実行プログラムを実行順序情報に基づいて特定する。違反検出部２３０はアドレスマップに基づいて実行プログラムのアクセス可能領域を特定し、信号線からメモリ１２０へのアクセス信号を入力してアクセス領域を特定する。違反検出部２３０はアクセス領域とアクセス可能領域とを比較して違反アクセスを検出する。【選択図】図２
2012003540.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とメモリとに接続される違反メモリアクセス検出装置において、
複数のプログラムそれぞれに割り当てられる記憶領域として前記メモリ内の所定の記憶領域を示す記憶領域情報を記憶する記憶領域情報記憶部と、
前記複数のプログラムの所定の実行順序を示す実行順序情報を記憶する実行順序情報記憶部と、
前記ＣＰＵに実行させる実行プログラムを実行中のプログラムから他のプログラムに切り替える所定の切り替えタイミングを検出する装置内タイマと、
前記切り替えタイミングの検出を前記ＣＰＵに通知することにより前記ＣＰＵに実行プログラムを切り替えさせる実行プログラム切り替え部と、
前記実行プログラム切り替え部により切り替えられる切り替え後の実行プログラムを新実行プログラムとして前記実行順序情報記憶部に記憶される実行順序情報に基づいて特定する実行プログラム特定部と、
前記実行プログラム特定部による特定結果と前記記憶領域情報記憶部に記憶される記憶領域情報とに基づいて、前記新実行プログラムに割り当てられる記憶領域を割当領域として特定する割当領域特定部と、
前記メモリ内の記憶領域のうち前記ＣＰＵがアクセスする記憶領域をアクセス領域として示すアクセス信号を入力し、入力したアクセス信号に基づいて前記アクセス領域を特定するアクセス領域特定部と、
前記アクセス領域特定部により特定されたアクセス領域と前記割当領域特定部により特定された割当領域とを比較し、前記アクセス領域が前記割当領域以外の記憶領域である場合に前記アクセス領域へのアクセスを違反アクセスとして検出する違反アクセス検出部と
を備えたことを特徴とする違反メモリアクセス検出装置。
【請求項２】
前記装置内タイマは、前記切り替えタイミングを検出した後、前記新実行プログラムの実行を開始する所定の実行開始タイミングを検出し、
前記実行プログラム切り替え部は、前記実行開始タイミングの検出を前記ＣＰＵに通知することにより前記ＣＰＵに前記新実行プログラムの実行を開始させる
ことを特徴とする請求項１記載の違反メモリアクセス検出装置。
【請求項３】
前記違反メモリアクセス検出装置は、さらに、
特定のプログラムカウンタが記憶される装置内バッファと、
前記切り替えタイミングが検出されたときに、前記ＣＰＵにより前記メモリ内の所定の記憶領域に退避されるプログラムカウンタであって前記新実行プログラムの前回実行時のプログラムカウンタを前記装置内バッファに記憶し、前記実行開始タイミングが検出されたときに、前記装置内バッファに記憶した前記プログラムカウンタを前記ＣＰＵに通知するプログラムカウンタ通知部とを備える
ことを特徴とする請求項２記載の違反メモリアクセス検出装置。
【請求項４】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とメモリとに接続される違反メモリアクセス検出装置の違反メモリアクセス検出方法において、
記憶領域情報記憶部が、複数のプログラムそれぞれに割り当てられる記憶領域として前記メモリ内の所定の記憶領域を示す記憶領域情報を記憶し、
実行順序情報記憶部が、前記複数のプログラムの所定の実行順序を示す実行順序情報を記憶し、
装置内タイマが、前記ＣＰＵに実行させる実行プログラムを実行中のプログラムから他のプログラムに切り替える所定の切り替えタイミングを検出し、
実行プログラム切り替え部が、前記切り替えタイミングの検出を前記ＣＰＵに通知することにより前記ＣＰＵに実行プログラムを切り替えさせ、
実行プログラム特定部が、前記実行プログラム切り替え部により切り替えられる切り替え後の実行プログラムを新実行プログラムとして前記実行順序情報記憶部に記憶される実行順序情報に基づいて特定し、
割当領域特定部が、前記実行プログラム特定部による特定結果と前記記憶領域情報記憶部に記憶される記憶領域情報とに基づいて、前記新実行プログラムに割り当てられる記憶領域を割当領域として特定し、
アクセス領域特定部が、前記メモリ内の記憶領域のうち前記ＣＰＵがアクセスする記憶領域をアクセス領域として示すアクセス信号を入力し、入力したアクセス信号に基づいて前記アクセス領域を特定し、
違反アクセス検出部が、前記アクセス領域特定部により特定されたアクセス領域と前記割当領域特定部により特定された割当領域とを比較し、前記アクセス領域が前記割当領域以外の記憶領域である場合に前記アクセス領域へのアクセスを違反アクセスとして検出する
ことを特徴とする違反メモリアクセス検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、違反メモリアクセスを検出する違反メモリアクセス検出装置および違反メモリアクセス検出方法に関するものである。
【背景技術】
【０００２】
従来、違反メモリアクセスを検出する際に、アプリケーションの切り替えはソフトウェアにより制御されていた（例えば、特許文献１）。
【０００３】
特許文献１に開示された技術では、ソフトウェアによりアプリケーションの切り替えを実現している。
しかし、この方法では、アプリケーションの切り替え時にハードウェアの故障やプログラムのバグが発生した場合、ソフトウェアが意図しないメモリ領域にアクセスする可能性がある。このとき、違反メモリアクセスを検出するための設定が正しくなされず、意図しないメモリ領域にアクセスされても違反メモリアクセスとして検出することができない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−３２５１５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、例えば、ソフトウェアの誤動作による設定の不備を防止し、全ての違反メモリアクセスを検出できるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の違反メモリアクセス検出装置は、
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とメモリとに接続され、
複数のプログラムそれぞれに割り当てられる記憶領域として前記メモリ内の所定の記憶領域を示す記憶領域情報を記憶する記憶領域情報記憶部と、
前記複数のプログラムの所定の実行順序を示す実行順序情報を記憶する実行順序情報記憶部と、
前記ＣＰＵに実行させる実行プログラムを実行中のプログラムから他のプログラムに切り替える所定の切り替えタイミングを検出する装置内タイマと、
前記切り替えタイミングの検出を前記ＣＰＵに通知することにより前記ＣＰＵに実行プログラムを切り替えさせる実行プログラム切り替え部と、
前記実行プログラム切り替え部により切り替えられる切り替え後の実行プログラムを新実行プログラムとして前記実行順序情報記憶部に記憶される実行順序情報に基づいて特定する実行プログラム特定部と、
前記実行プログラム特定部による特定結果と前記記憶領域情報記憶部に記憶される記憶領域情報とに基づいて、前記新実行プログラムに割り当てられる記憶領域を割当領域として特定する割当領域特定部と、
前記メモリ内の記憶領域のうち前記ＣＰＵがアクセスする記憶領域をアクセス領域として示すアクセス信号を入力し、入力したアクセス信号に基づいて前記アクセス領域を特定するアクセス領域特定部と、
前記アクセス領域特定部により特定されたアクセス領域と前記割当領域特定部により特定された割当領域とを比較し、前記アクセス領域が前記割当領域以外の記憶領域である場合に前記アクセス領域へのアクセスを違反アクセスとして検出する違反アクセス検出部とを備える。
【発明の効果】
【０００７】
本発明によれば、例えば、プログラム（アプリケーション）の切り替えを違反メモリアクセス検出装置で制御することにより、ソフトウェアの誤動作による設定の不備を防止し、全ての違反メモリアクセスを検出することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１における違反メモリアクセス検出装置２００の概要図。
【図２】実施の形態１における違反メモリアクセス検出装置２００の機能構成図。
【図３】実施の形態１における違反メモリアクセス検出方法を示すフローチャート。
【図４】実施の形態１におけるアプリケーション切り替え処理（Ｓ２００）のフローチャート。
【図５】実施の形態１におけるアプリケーション切り替え処理（Ｓ２００）の概要図。
【発明を実施するための形態】
【０００９】
実施の形態１．
図１は、実施の形態１における違反メモリアクセス検出装置２００の概要図である。
実施の形態１における違反メモリアクセス検出装置２００の概要について、図１に基づいて説明する。
【００１０】
違反メモリアクセス検出装置２００は、コンピュータ（計算機）のＣＰＵ１１０やメモリ１２０に接続する違反アクセス検出用のハードウェアである。
例えば、違反メモリアクセス検出装置２００はＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）のような電子回路で構成され、基盤１００（例えば、マザーボード）に取り付けられる。
【００１１】
基盤１００には、ＣＰＵ１１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ１２０、周辺装置を接続するインタフェース（周辺装置１３０）などのハードウェアが取り付けられる。
【００１２】
ＣＰＵ１１０はメモリ１２０やプログラムを管理するオペレーティングシステム（ＯＳ）を実行し、複数のアプリケーションプログラム（アプリＡ、アプリＢ）はＣＰＵ１１０およびオペレーティングシステムによって実行される。
【００１３】
ＣＰＵ１１０とメモリ１２０とは信号線で接続してＣＰＵ１１０からメモリ１２０へアドレス信号（ＡＤＤＲＥＳＳ）、アウトプットイネイブル信号（ＯＥ）、ライトイネイブル信号（ＷＥ）などの信号を通信する。また、メモリ１２０からＣＰＵ１１０へデータ信号（ＤＡＴＡ）などの信号を通信する。
アドレス信号はメモリ１２０の特定の記憶領域を指定する信号であり、データ信号はメモリ１２０から読み出されたデータを示す信号である。アプトプットイネイブル信号はデータの読み出しを命令する信号であり、ライトイネイブル信号はデータの書き込みを命令する信号である。
【００１４】
違反メモリアクセス検出装置２００は、ＣＰＵ１１０とメモリ１２０とを接続する信号線に接続してＣＰＵ１１０からメモリ１２０への各種信号を入力し、入力した各種信号に基づいてＣＰＵ１１０からメモリ１２０への違反アクセスを検出する。
違反アクセスを検出した違反メモリアクセス検出装置２００は、ＣＰＵ１１０や周辺装置１３０に対して違反アクセスの割込みを発生させる。
【００１５】
さらに、違反メモリアクセス検出装置２００は、複数のアプリケーションをＣＰＵ１１０に所定の順序で実行させるため、複数のアプリケーションを切り替える切り替え制御を行う。
【００１６】
以下、オペレーティングシステムを「システム」、アプリケーションプログラムを「アプリケーション」、アプリケーションプログラムＡを「アプリＡ」、アプリケーションプログラムＢを「アプリＢ」という。
また、周辺装置を接続するインタフェースを「周辺装置１３０」という。
【００１７】
図２は、実施の形態１における違反メモリアクセス検出装置２００の機能構成図である。
実施の形態１における違反メモリアクセス検出装置２００の機能構成について、図２に基づいて説明する。
【００１８】
違反メモリアクセス検出装置２００は、アドレスマップ保管部２１０、実行順序管理部２２０、違反検出部２３０、タイマ処理部２４０およびＰＣバッファ管理部２５０を備える。
さらに、違反メモリアクセス検出装置２００は、タイマ２４１、ＰＣバッファ２５１、メモリ（図示省略）を備える。
【００１９】
アドレスマップ保管部２１０（記憶領域情報記憶部の一例）は、複数のプログラムそれぞれに割り当てられる記憶領域として前記メモリ内の所定の記憶領域を示す記憶領域情報（アドレスマップ）を記憶する。
【００２０】
実行順序管理部２２０（実行順序情報記憶部、実行プログラム特定部の一例）は、複数のプログラムの所定の実行順序を示す実行順序情報を記憶する。
実行順序管理部２２０は、タイマ処理部２４０により切り替えられる切り替え後の実行プログラムを新実行プログラムとして実行順序情報に基づいて特定する。
【００２１】
タイマ２４１（装置内タイマ）は、ＣＰＵ１１０に実行させる実行プログラムを実行中のプログラムから他のプログラムに切り替える所定の切り替えタイミングを検出する。
タイマ２４１は、切り替えタイミングを検出した後、新実行プログラムの実行を開始する所定の実行開始タイミングを検出する。
【００２２】
タイマ処理部２４０（実行プログラム切り替え部）は、切り替えタイミングの検出をＣＰＵ１１０に通知（切り替え開始割込み）することによりＣＰＵ１１０に実行プログラムを切り替えさせる。
タイマ処理部２４０は、実行開始タイミングの検出をＣＰＵ１１０に通知（切り替え完了割込み）することによりＣＰＵ１１０に新実行プログラムの実行を開始させる。
【００２３】
違反検出部２３０（割当領域特定部、アクセス領域特定部、違反アクセス検出部の一例）は、実行順序管理部２２０による特定結果とアドレスマップ保管部２１０に記憶される記憶領域情報とに基づいて、新実行プログラムに割り当てられる記憶領域を割当領域（アクセス可能領域）として特定する。
違反検出部２３０は、メモリ１２０内の記憶領域のうちＣＰＵ１１０がアクセスする記憶領域をアクセス領域として示すアクセス信号（ＯＥ、ＷＥ）を入力し、入力したアクセス信号に基づいてアクセス領域を特定する。
違反検出部２３０は、アクセス領域と割当領域とを比較し、アクセス領域が割当領域以外の記憶領域である場合にアクセス領域へのアクセスを違反アクセスとして検出する。
【００２４】
ＰＣバッファ２５１（装置内バッファの一例）は、特定のプログラムカウンタが記憶される。
【００２５】
ＰＣバッファ管理部２５０（プログラムカウンタ通知部の一例）は、切り替えタイミングが検出されたときに、ＣＰＵ１１０によりメモリ１２０内の所定の記憶領域に退避されるプログラムカウンタであって新実行プログラムの前回実行時のプログラムカウンタをＰＣバッファ２５１に記憶し、実行開始タイミングが検出されたときに、ＰＣバッファ２５１に記憶したプログラムカウンタをＣＰＵ１１０に通知する。
【００２６】
図３は、実施の形態１における違反メモリアクセス検出方法を示すフローチャートである。
実施の形態１における違反メモリアクセス検出方法の処理の流れについて、図３に基づいて説明する。
【００２７】
Ｓ１１１において、アドレスマップ保管部２１０は、ＣＰＵ１１０のシステムからアドレスマップを受け取り、受け取ったアドレスマップを保持する。
例えば、アドレスマップは、アプリケーションを識別するアプリケーションＩＤとアプリケーションがアクセス許可されているメモリ１２０内の記憶領域（アクセス可能領域）を示すアドレスとを対応付けた対応表である。
アドレスマップは、システムに割り当てられたメモリ１２０内の所定の記憶領域（以下、「システム領域」という）に予め記憶されているものとする。
【００２８】
Ｓ１１２において、実行順序管理部２２０は、ＣＰＵ１１０のシステムからアプリケーションの所定の実行順序を示す実行順序情報を受け取り、受け取った実行順序情報を保持する。
実行順序情報は、システム領域に予め記憶されているものとする。
【００２９】
Ｓ１１３において、タイマ処理部２４０は、ＣＰＵ１１０から切り替え周期と切り替え時間とを受け取り、受け取った切り替え周期と切り替え時間とを保持する。
切り替え周期とは、アプリケーションを切り替える周期を示す所定の情報である。切り替え周期はアプリケーション毎に異なっても複数のアプリケーションで同じであっても構わない。
切り替え時間とは、アプリケーションの切り替え処理に要する時間を示す所定の情報である。アプリケーションの切り替えは切り替え時間内に完了できるものとする。
切り替え周期や切り替え時間は、システム領域に予め記憶されているものとする。
Ｓ１１１〜Ｓ１１３の後、Ｓ１１４に進む。
【００３０】
Ｓ１１４において、違反検出部２３０は、アドレスマップ保管部２１０からアドレスマップを受け取る。
Ｓ１１４の後、Ｓ１１５に進む。
【００３１】
Ｓ１１５において、タイマ処理部２４０は、タイマ２４１に切り替え周期を設定する。
タイマ２４１は、内部にカウンタを保持し、カウンタが切り替え周期に達したときに実行順序管理部２２０とＣＰＵ１１０とに切り替え開始割込みを通知する。
Ｓ１１５の後、Ｓ１２１に進む。
【００３２】
Ｓ１２１において、切り替え開始割込みが発生した場合にはアプリケーション切り替え処理（Ｓ２００）に進む。
Ｓ１２１において、アプリケーションの実行中にアウトプットイネイブル信号（ＯＥ）またはライトイネイブル信号（ＷＥ）が発生した場合（メモリアクセス）には違反アクセス判定処理（Ｓ１３１〜Ｓ１３４）に進む。
【００３３】
Ｓ１３１において、違反検出部２３０は、ＣＰＵ１１０とメモリ１２０とを接続する信号線からアウトプットイネイブル信号またはライトイネイブル信号と共にアドレス信号を入力する。
違反検出部２３０は、入力したアドレス信号に基づいて、ＣＰＵ１１０がアクセスするメモリ１２０内の領域を特定する。以下、特定した領域を「アクセス領域」という。
Ｓ１３１の後、Ｓ１３２に進む。
【００３４】
Ｓ１３２において、違反検出部２３０は、実行順序管理部２２０から実行アプリＩＤを受け取る。このとき、実行アプリＩＤは、実行中のアプリケーションのＩＤを示している。
次に、違反検出部２３０は、アドレスマップと実行アプリＩＤとに基づいて実行中のアプリケーションのアクセス可能領域を特定する。
そして、違反検出部２３０は、アクセス領域とアクセス可能領域とを比較する。
Ｓ１３２の後、Ｓ１３３に進む。
【００３５】
Ｓ１３３において、違反検出部２３０は、アクセス領域とアクセス可能領域との比較結果に基づいて、アクセス領域へのアクセスが違反アクセスであるか否かを判定する。アクセス領域にアクセス可能領域外の記憶領域が含まれれば違反アクセスである。
違反アクセスである場合（ＹＥＳ）にＳ１３４に進み、違反アクセスでない場合（ＮＯ）、Ｓ１２１に戻る。
【００３６】
Ｓ１３４において、違反検出部２３０は、違反アクセス割込みをＣＰＵ１１０や周辺装置１３０に通知する。
ＣＰＵ１１０や周辺装置１３０は、違反アクセス割込みを受けて所定の動作をする。
Ｓ１３４により違反メモリアクセス検出方法の処理は終了する。
【００３７】
図４は、実施の形態１におけるアプリケーション切り替え処理（Ｓ２００）のフローチャートである。
違反メモリアクセス検出方法（図３参照）において切り替え開始割込みが発生した場合（Ｓ１２１）に実行するアプリケーション切り替え処理（Ｓ２００）について、図４に基づいて説明する。
【００３８】
切り替え開始割込みは実行順序管理部２２０とＣＰＵ１１０とに通知される。
【００３９】
まず、違反メモリアクセス検出装置２００の処理（Ｓ２１１〜Ｓ２３２）について説明する。
【００４０】
Ｓ２１１において、タイマ処理部２４０は、タイマ２４１に切り替え時間を設定する。
タイマ２４１は、内部にカウンタを保持し、カウンタが切り替え時間に達したときに実行順序管理部２２０とＣＰＵ１１０とに切り替え完了割込みを通知する。
Ｓ２１１の後、Ｓ２２１に進む。
【００４１】
Ｓ２２１において、実行順序管理部２２０は、実行アプリＩＤをシステムを識別するＩＤに更新する。
Ｓ２２１の後、Ｓ２２２に進む。
【００４２】
Ｓ２２２において、ＰＣバッファ管理部２５０は、ＰＣバッファ２５１にＮＵＬＬを設定してプログラムカウンタ（ＰＣ）をリセットする。
プログラムカウンタとは、次に実行する命令が記憶されている領域のアドレスを示すデータである。
Ｓ２２２の後、Ｓ２２３に進む。
【００４３】
Ｓ２２３において、ＰＣバッファ管理部２５０は、ＣＰＵ１１０のシステムから次に実行するアプリケーションのプログラムカウンタを受け取り、受け取ったプログラムカウンタをＰＣバッファ２５１に設定する。
Ｓ２２３の後、Ｓ２２４に進む。
【００４４】
Ｓ２２４において、タイマ２４１が切り替え完了割込みを検出し、切り替え完了割込みを実行順序管理部２２０とＣＰＵ１１０とに通知する。
Ｓ２２４の後、Ｓ２３１に進む。
【００４５】
Ｓ２３１において、実行順序管理部２２０は、アドレスマップに基づいて、ＣＰＵ１１０が次に実行するアプリケーション（例えば、アプリＢ）のＩＤを特定する。
実行順序管理部２２０は、特定したアプリケーションのＩＤを実行アプリＩＤとして設定して実行アプリＩＤを更新する。
Ｓ２３１の後、Ｓ２３３に進む。
【００４６】
Ｓ２３２において、タイマ処理部２４０は、タイマ２４１に切り替え周期を設定する。
タイマ２４１は、内部にカウンタを保持し、カウンタが切り替え周期に達したときに実行順序管理部２２０とＣＰＵ１１０とに切り替え開始割込みを通知する。
Ｓ２３２によりアプリケーション切り替え処理（Ｓ２００）は終了する。
【００４７】
次に、ＣＰＵ１１０の処理（Ｓ２０１〜Ｓ２０５）について説明する。
【００４８】
Ｓ２０１において、ＣＰＵ１１０は切り替え開始割込みを受けてシステムを実行し、システムはＣＰＵ１１０の各レジスタに設定されている値を現在のアプリケーション（例えば、アプリＡ）のコンテキストとしてシステム領域に保存する。コンテキストにはプログラムカウンタが含まれる。コンテキストはアプリケーションの実行状態を表すデータである。
Ｓ２０１の後、Ｓ２０２に進む。
【００４９】
Ｓ２０２において、システムは、システム領域に記憶されている実行順序情報に基づいて、次に実行するアプリケーション（例えば、アプリＢ）を特定する。以下、特定したアプリケーションを「次の実行アプリ」という。
Ｓ２０２の後、Ｓ２０３に進む。
【００５０】
Ｓ２０３において、システムは、前回の実行時に保存した次の実行アプリのコンテキストをシステム領域から読み出し、読み出したコンテキスト（プログラムカウンタを除く）をＣＰＵ１１０の各レジスタに設定する。
システムは、コンテキストに含まれるプログラムカウンタをＣＰＵ１１０のレジスタに設定せず、ＰＣバッファ管理部２５０に通知する。
Ｓ２０３の後、タイマ２４１が切り替え完了割込みを発生し（Ｓ２２４）、Ｓ２０４に進む。
【００５１】
Ｓ２０４において、ＣＰＵ１１０は、切り替え完了割込みを受けてシステムを実行する。
システムはＰＣバッファ２５１からプログラムカウンタを読み出し、読み出したプログラムカウンタをＣＰＵ１１０のプログラムカウンタ用のレジスタに設定する。
これにより、ＣＰＵ１１０の各レジスタには、次の実行アプリ（例えば、アプリＢ）を前回切り替えたとき（停止したとき）のコンテキストが全て設定される（Ｓ２０３参照）。
Ｓ２０４の後、Ｓ２０５に進む。
【００５２】
Ｓ２０５において、システムは、ＣＰＵ１１０の各レジスタに設定されたコンテキストに基づいて、次の実行アプリ（例えば、アプリＢ）を前回の切り替え時の状態から再開させる。
Ｓ２０５により、アプリケーション切り替え処理（Ｓ２００）は終了する。
【００５３】
図５は、実施の形態１におけるアプリケーション切り替え処理（Ｓ２００）の概要図である。
実施の形態１におけるアプリケーション切り替え処理（Ｓ２００）（図４参照）の概要について、図５に基づいて説明する。
【００５４】
アプリＡが実行されている場合、ＣＰＵ１１０のＰＣレジスタ（プログラムカウンタ用のレジスタ）、実行順序管理部２２０の実行アプリＩＤおよびＰＣバッファ２５１にはアプリＡの値が設定されている。
【００５５】
ここで、切り替え開始割込みが発生したものとする（図３のＳ１２１）。
すると、ＣＰＵ１１０ではシステムが動作し、システムはメモリ１２０のシステム領域にアプリＡのレジスタ値（コンテキスト）を記憶する（Ｓ２０１）。
違反メモリアクセス検出装置２００では、実行順序管理部２２０が実行アプリＩＤをシステムのＩＤに更新し（Ｓ２２１）、ＰＣバッファ管理部２５０がＰＣバッファ２５１をリセット（ＮＵＬＬ）する（Ｓ２２２）。
【００５６】
システムは、次に実行するアプリＢの前回のレジスタ値をメモリ１２０のシステム領域から読み出してＣＰＵ１１０のレジスタ（ＰＣレジスタを除く）に設定する（Ｓ２０３）。アプリＢのプログラムカウンタはＰＣバッファ２５１に設定される（Ｓ２２３）。
【００５７】
次に、切り替え完了割込みが発生する（Ｓ２２４）。
すると、ＣＰＵ１１０ではシステムが動作し、システムはＰＣバッファ２５１に設定されているアプリＢのプログラムカウンタをＣＰＵ１１０のＰＣレジスタに設定し（Ｓ２０４）、アプリＢを再開させる（Ｓ２０５）。
また、実行順序管理部２２０は実行アプリＩＤをアプリＢに更新する（Ｓ２３１）。
【００５８】
実施の形態１において、例えば、以下のような違反メモリアクセス検出装置２００について説明した。
【００５９】
違反メモリアクセス検出装置２００は、複数のアプリケーションが動作するシステムであるアプリケーションが他のアプリケーションのメモリ領域をアクセスする違反メモリアクセスを検出する。
違反メモリアクセス検出装置２００は、違反メモリアクセスを検出するためのシーケンス（図３）を実行する。
違反メモリアクセス検出装置２００（ハードウェア）はアプリケーションの切リ替えを実現し、ソフトウェアによる切り替えでは検出できない違反メモリアクセスを検出する。
【００６０】
違反メモリアクセス検出装置２００は、ＣＰＵ１１０とメモリ１２０との間に位置する。
違反メモリアクセス検出装置２００は、ＣＰＵ１１０とメモリ１２０とを接続する信号と、ＣＰＵ１１０で動作しているアプリケーションとを比較することで、現在行われているメモリアクセスが違反かどうかを判断する。
違反の場合には、違反メモリアクセス検出装置２００はＣＰＵ１１０や周辺装置１３０に通知する。
【００６１】
違反メモリアクセス検出装置２００が違反メモリアクセスを判断するためには、ＣＰＵ１１０上でどのアプリケーションもしくはシステムが動作しているかを知る必要がある。これを知るために、違反メモリアクセス検出装置２００は、あらかじめシステムからアプリケーションを動作させる順序（実行順序情報）を受け取り保持している。そして、アプリケーションの切り替えが発生した場合、このアプリケーションの順序を参照して、現在動作しているアプリケーションを判断し、違反メモリアクセスの判断に用いる。
【００６２】
アプリケーションの切り替えは、違反メモリアクセス検出装置２００の内部にあるタイマ２４１が管理する。違反メモリアクセス検出装置２００は、あらかじめアプリケーションを切り替える周期（切り替え周期）と、システムがアプリケーションの切り替えるために必要となる時間（切り替え時間）を受け取る。そして、これらの情報からアプリケーションの切り替えのタイミングを生成し、ＣＰＵ１１０と違反メモリアクセス検出装置２００の内部のモジュール（例えば、実行順序管理部２２０）に通知する。
【００６３】
違反メモリアクセス検出装置２００は、ハードウェアによるタイマ２４１でアプリケーションの切り替えを実施しているため、ＣＰＵ１１０と同時に違反メモリアクセスを判断するための設定情報（例えば、ＰＣレジスタや実行アプリＩＤ）を切り替えることができる。
違反メモリアクセス検出装置２００は、違反メモリアクセスを判断するための設定情報をＣＰＵ１１０で動作するソフトウェアを介さずに更新するため、アプリケーションやシステムがハードウェア（ＣＰＵ１１０やメモリ１２０）の故障により暴走しても、違反メモリアクセスを検出することができる。
もし、従来技術のようにＣＰＵ１１０で動作するソフトウェアにより設定情報を更新していた場合、更新するソフトウェア自体が暴走すると、違反メモリアクセスの検出を行う設定情報が正しく設定されず、違反メモリアクセスを検出できない。
【符号の説明】
【００６４】
１００  基盤、１１０  ＣＰＵ、１２０  メモリ、１３０  周辺装置、２００  違反メモリアクセス検出装置、２１０  アドレスマップ保管部、２２０  実行順序管理部、２３０  違反検出部、２４０  タイマ処理部、２４１  タイマ、２５０  ＰＣバッファ管理部、２５１  ＰＣバッファ。
【図１】
2012003540.tif 000003
【図２】
2012003540.tif 000004
【図３】
2012003540.tif 000005
【図４】
2012003540.tif 000006
【図５】
2012003540.tif 000007