(57)【要約】【課題】ＯＳのメモリ保護機能を有効に活用するとともに、ユーザによる操作性を向上させることができるようにする。【解決手段】カーネル空間１３１で実行され、ＯＳ１０１のカーネルにフックされるソフトウェアとしてエクセプションハンドラ１３３を設ける。ＯＳ１０１のカーネルが、ユーザランド空間１３２で実行される通常アプリケーションによる不正な処理の発生を検知した場合、カーネルからエクセプションハンドラ１３３に、不正な処理の発生を通知して、その後、通常アプリケーションのプロセス１５１を強制終了する。エクセプションハンドラ１３３は、プロセス１５１が終了された後、ユーザに、システムエラーを通知し、再起動を促すための例外アプリケーションの実行を制御し、ユーザランド空間１３２で例外アプリケーションのプロセス１５２が実行される。【選択図】図３
2008165551.tif 000002
【特許請求の範囲】
【請求項１】
ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かを判定する判定手段と、
前記判定手段により不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させる強制終了手段と、
前記判定手段により前記不正更新処理が実行されたと判定された場合、前記強制終了手段により前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御する再起動制御手段と
を備える情報処理装置。
【請求項２】
前記判定手段は、前記第２のアプリケーションプログラムにより、前記不正更新処理が実行されたか否かをさらに判定し、前記第２のアプリケーションプログラムにより、前記不正更新処理が実行されたと判定された場合、
前記再起動制御手段は、前記ユーザの操作の有無に係らず自分を再起動させる処理の実行を制御する
請求項１に記載の情報処理装置。
【請求項３】
画像を表示する表示画面をさらに備え、
前記第２のアプリケーションプログラムにより、前記不正更新処理の発生を通知するメッセージ、および前記再起動に関する指令の操作を受け付けるGUI（Graphical User Interface）が前記表示画面に表示される
請求項１に記載の情報処理装置。
【請求項４】
メモリ保護機能を有するオペレーティングシステムが実装され、
前記判定手段、および前記強制終了手段の処理は、それぞれ前記オペレーティングシステムのメモリ保護機能として実行される
請求項１に記載の情報処理装置。
【請求項５】
前記再起動制御手段の処理は、前記オペレーティングシステムにフックされたプログラムにより実行される
請求項４に記載の情報処理装置。
【請求項６】
ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かを判定し、
前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させ、
前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御する
ステップを含む情報処理方法。
【請求項７】
ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かの判定を制御し、
前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させるよう制御し、
前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御する
ステップを含むコンピュータが読み取り可能なプログラム。
【請求項８】
請求項７に記載のプログラムが記録されている記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、プログラム、並びに記録媒体に関し、特に、ＯＳのメモリ保護機能を有効に活用するとともに、ユーザによる操作性を向上させることができるようにする情報処理装置および方法、プログラム、並びに記録媒体に関する。
【背景技術】
【０００２】
コンピュータのＯＳ（operating system）においては、メモリやディスクなどといったハードウェアデバイスはもとより、アプリケーションプログラムが利用しているレジスタセットやメインメモリイメージ、ファイルなどの各種資源を管理し、アプリケーションプログラムが各種資源を利用できるようにする機能が提供されている。
【０００３】
また、近年のＯＳにおいては、特に、メインメモリへのデータの書き込み処理などが正常に行われたか否かを監視し、メインメモリの誤った領域にデータが書き込まれることなどによるコンピュータの動作不良を抑制するようなメモリ保護機能が発達してきている。
【０００４】
例えば、あるアプリケーションプログラムにより、メインメモリの誤った領域にデータが書き込まれるなどした場合、ＯＳの機能により、そのアプリケーションプログラムのプロセスがキル（強制終了）されることになる。
【０００５】
また、ＯＳが有するメモリ保護機能を利用して、マルチジョブを処理するシングルプロセッサシステムにおいて、専用命令なしで効率良く安全にユーザプロセスレベルで排他制御を行うことも提案されている（例えば、特許文献１参照）。
【０００６】
【特許文献１】特開２００２−１５７１３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、携帯電話機やデジタルカメラなどのＣＥ（Consumer Electronics）機器においては、ユーザによる機器本体の起動、終了などの指令が、アプリケーションプログラムを介して受け付けられるものが多い。
【０００８】
従って、ＣＥ機器において、ＯＳの機能により、そのアプリケーションプログラムのプロセスがキルされた場合、ユーザは、機器の異常に対処するためにその機器の電源を切るなどの操作を強いられることがあった。
【０００９】
本発明はこのような状況に鑑みてなされたものであり、ＯＳのメモリ保護機能を有効に活用するとともに、ユーザによる操作性を向上させることができるようにするものである。
【課題を解決するための手段】
【００１０】
本発明の一側面の情報処理装置は、ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かを判定する判定手段と、前記判定手段により不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させる強制終了手段と、前記判定手段により前記不正更新処理が実行されたと判定された場合、前記強制終了手段により前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御する再起動制御手段とを備える情報処理装置である。
【００１１】
前記判定手段は、前記第２のアプリケーションプログラムにより、前記不正更新処理が実行されたか否かをさらに判定し、前記第２のアプリケーションプログラムにより、前記不正更新処理が実行されたと判定された場合、前記再起動制御手段は、前記ユーザの操作の有無に係らず自分を再起動させる処理の実行を制御するようにすることができる。
【００１２】
画像を表示する表示画面をさらに備え、前記第２のアプリケーションプログラムにより、前記不正更新処理の発生を通知するメッセージ、および前記再起動に関する指令の操作を受け付けるGUI（Graphical User Interface）が前記表示画面に表示されるようにすることができる。
【００１３】
メモリ保護機能を有するオペレーティングシステムが実装され、前記判定手段、および前記強制終了手段の処理は、それぞれ前記オペレーティングシステムのメモリ保護機能として実行されるようにすることができる。
【００１４】
前記再起動制御手段の処理は、前記オペレーティングシステムにフックされたプログラムにより実行されるようにすることができる。
【００１５】
本発明の一側面の情報処理方法は、ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かを判定し、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させ、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御するステップを含む情報処理方法である。
【００１６】
本発明の一側面のプログラムは、ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かの判定を制御し、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させるよう制御し、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御するステップを含むコンピュータが読み取り可能なプログラムである。
【００１７】
本発明の一側面においては、ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かが判定され、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムが強制終了させられ、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行が制御される。
【発明の効果】
【００１８】
本発明によれば、ＯＳのメモリ保護機能を有効に活用するとともに、ユーザによる操作性を向上させることができる。
【発明を実施するための最良の形態】
【００１９】
以下に本発明の実施の形態を説明するが、本発明の構成要件と、明細書または図面に記載の実施の形態との対応関係を例示すると、次のようになる。この記載は、本発明をサポートする実施の形態が、明細書または図面に記載されていることを確認するためのものである。従って、明細書または図面中には記載されているが、本発明の構成要件に対応する実施の形態として、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その構成要件に対応するものではないことを意味するものではない。逆に、実施の形態が構成要件に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その構成要件以外の構成要件には対応しないものであることを意味するものでもない。
【００２０】
本発明の一側面の情報処理装置は、ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かを判定する判定手段（例えば、図４のステップＳ１０１の処理を実行する図２のＯＳ１０１のカーネル）と、前記判定手段により不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させる強制終了手段（例えば、図４のステップＳ１０３の処理を実行する図２のＯＳ１０１のカーネル）と、前記判定手段により前記不正更新処理が実行されたと判定された場合、前記強制終了手段により前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御する再起動制御手段（例えば、図３のエクセプションハンドラ１３３）とを備える。
【００２１】
本発明の一側面の情報処理方法は、ユーザによる操作を受け付け、前記操作に対応する処理の実行を制御する第１のアプリケーションプログラムによる、前記情報処理装置のメモリに記憶されている情報が不正に更新される不正更新処理が実行されたか否かを判定し（例えば、図４のステップＳ１０１の処理）、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムを強制終了させ（例えば、例えば、図４のステップＳ１０３の処理）、前記不正更新処理が実行されたと判定された場合、前記第１のアプリケーションプログラムが終了された後、前記ユーザに、前記不正更新処理の発生を通知するとともに、自分の再起動に関する指令の操作を受け付ける第２のアプリケーションプログラムの実行を制御する（例えば、図５のステップＳ１２１乃至S１２５の処理）ステップを含む。
【００２２】
以下、図面を参照して、本発明の実施の形態について説明する。
【００２３】
図１は、本発明を適用したＣＥ（Consumer Electronics）機器の一実施の形態に係る構成例を示すブロック図である。同図に示されるＣＥ機器１０は、例えば、デジタルカメラとして構成される。
【００２４】
この実施の形態のＣＥ機器１０は、大きく分けると、カメラ部４１と、カメラDSP（Digital Signal Processor）４２と、媒体インタフェース（以下、媒体I/Fという。）４４と、制御部４５と、操作部４６と、LCD（Liquid Crystal Display）コントローラ４７と、LCD２０と、外部インタフェース（以下、外部I/Fという。）４８と、通信インタフェース（以下、通信I/Fという。）４９とを備えるとともに、記録媒体６０が着脱可能な構成とされている。
【００２５】
記録媒体６０は、半導体メモリを用いたいわゆるメモリーカード、記録可能なDVD（Digital Versatile Disc）や記録可能なCD（Compact Disc）等の光記録媒体、磁気ディスクなどとして構成される。
【００２６】
カメラ部４１には、例えば、レンズ、フォーカス機構、シャッター機構、絞り（アイリス）機構などを備えた光学ブロック７１、CCD（Charge Coupled Device）７２、光学ブロック７１の駆動を制御するドライバ７３が設けられている。なお、CCD７２に代えて、CMOS（Complementary Metal-Oxide Semiconductor）センサなどの光電変換デバイスを用いるようにしてもよい。
【００２７】
例えば、操作部４６を、ユーザが操作することにより、カメラ部４１により画像が撮影され、その画像データが制御部４５、および媒体I/F４４を介して記録媒体６０に記録される。操作部４６は、例えば、タッチパネルやコントロールキーなどからなり、各種の操作ボタンなどを含む構成とされる。
【００２８】
また、記録媒体６０に記録された画像データは、操作部４６を通じて受け付けたユーザからの操作入力に応じて、媒体I/F４４を通じて記録媒体６０から読み出され、これがカメラDSP４２に供給される。
【００２９】
カメラDSP４２は、記録媒体６０から読み出され、媒体I/F４４を通じて供給された符号化されている画像データを復号し、復号後の画像データを、システムバス８４を通じて、LCDコントローラ４７に供給する。LCDコントローラ４７は、これに供給された画像データからLCD２０に供給する画像信号を形成し、これをLCD２０に供給する。これにより、記録媒体６０に記録されている画像データに応じた画像が、LCD２０の表示画面に表示される。
【００３０】
なお、LCD２０には、制御部４５により生成されたGUI（Graphical User Interface）の画像なども適宜表示される。
【００３１】
また、制御部４５は、CPU（Central Processing Unit）８１、RAM（Random Access Memory）８２、ROM（Read Only Memory）８３が、システムバス８４を通じて接続されて構成されている。制御部４５は、例えば、汎用の組み込み型のマイクロコンピュータまたは専用のシステムLSI（Large Scale Integrated circuit）などとして構成され、ＣＥ機器１０の各部を制御することができるものである。
【００３２】
RAM８２は、処理の途中結果を一時記憶するなど主に作業領域として用いられるものである。また、ROM８３は、CPU８１において実行する種々のプログラムや、処理に必要になるデータなどを記憶したものである。
【００３３】
すなわち、制御部４５において、ROM８３からRAM８２にロードされたプログラムがCPU８１により実行されることで、カメラ部４１およびDSP４２に制御信号を出力してＣＥ機器１０による画像の撮影処理、撮影した画像の表示処理などの各種の処理が、操作部４６を介して入力されるユーザの指令に基づいて実行されるようになされている。
【００３４】
また、ＣＥ機器１０は、外部I/F４８を通じて、例えば外部のパーソナルコンピュータと接続して、パーソナルコンピュータから画像データの供給を受けて、これを記録媒体６０に記録したり、また、記録媒体６０に記録されている画像データを外部のパーソナルコンピュータ等に供給したりすることもできるものである。
【００３５】
さらに、ＣＥ機器１０の通信I/F４９は、例えば、ネットワークインターフェースカード（NIC）などからなり、ネットワークに接続して、ネットワークを介して各種のデータを、送受信することが可能となるように構成されている。
【００３６】
図２は、CPU８１により実行されるソフトウェアの機能的構成例を示すブロック図である。同図に示されるように、CPU８１により実行されるソフトウェアは、ＯＳ（operating system）１０１、アプリケーションプログラム１０２、ドライバ１０３により構成されている。
【００３７】
同図において、ＯＳ１０１は、RAM８２、記録媒体６０などのハードウェアデバイス、アプリケーションプログラム１０２が利用しているレジスタセットや、RAM８２に記憶されているデータにより構成されるメインメモリイメージ、ファイルなどの各種資源を管理し、アプリケーションプログラム１０２が各種資源を利用できるようにする機能を有している。また、ＯＳ１０１は、ＣＥ機器１０に実装されているソフトウェアが正常に動作できない状態となるシステムエラーを検知するようになされている。
【００３８】
ＯＳ１０１は、例えば、RAM８２へのデータの書き込み処理などが正常に行われたか否かを監視し、RAM８２へのデータの書き込み処理などが不正に行われた場合、システムエラーとして検知し、また、例えば、RAM８２の誤った領域にデータが書き込まれる不正な書き込み処理などによるＣＥ機器１０の動作不良を抑制するようなメモリ保護機能を有する構成とされる。ＯＳ１０１は、例えば、Linux（登録商標）などの基本ソフトウェアにより構成される。
【００３９】
アプリケーションプログラム１０２は、ＯＳ１０１上で実行されるプログラムなどのソフトウェアであって、例えば、カメラ部４１による画像の撮影、ＬＣＤ２０への画像の表示などの処理の実行を制御するプログラムなどとされる。
【００４０】
ドライバ１０３は、例えば、ドライバ７３、媒体I/F４４などのＣＥ機器１０の各部位のハードウェアの動作を制御するデバイスドライバなどに対応するソフトウェアとされる。ドライバ１０３は、ＯＳ１０１の一部として構成されるようにすることも可能である。
【００４１】
図３は、図２のソフトウェアが実行されるとき、ＯＳ１０１により管理されるRAM８２の記憶領域（または、仮想記憶領域）の構成を説明する図である。
【００４２】
同図に示されるように、ＯＳ１０１は、RAM８２の記憶領域（または、仮想記憶領域）を、カーネル空間１３１と、ユーザランド空間１３２に分けて管理する。
【００４３】
カーネル空間１３１では、主にＯＳ１０１の基幹部分であるカーネルと呼ばれるソフトウェアに対応するプロセスの実行に必要となるデータが保持されるようになされている。ユーザランド空間１３２では、主にアプリケーションプログラム１０２を構成するソフトウェアの実行に必要となるデータが保持されるようになされている。
【００４４】
例えば、アプリケーションプログラム１０２を構成するプログラムが実行されている場合、ユーザランド空間１３２において、そのプログラムに対応するプロセス１５１の記憶領域が、カーネル空間１３１で実行されているＯＳ１０１のカーネルにより割り当てられる。
【００４５】
すなわち、ＯＳ１０１を構成するソフトウェア（プログラムなど）は、カーネル空間１３１で実行され、アプリケーションプログラム１０２を構成するソフトウェア（プログラムなど）は、ユーザランド空間１３２で実行される。
【００４６】
ＣＥ機器１０は、例えば、ユーザによる操作部４６の操作、または制御部４５に内蔵される図示せぬタイマなどにより計時された時間などに基づいて、カメラ部４１、カメラDSP４２、LCD２０などに対する電力の供給が遮断されるようになされている。例えば、操作部４６に含まれるパワーON／OFFボタンが押下された場合、操作部４６に対する操作が所定の時間以上おこなわれなかった場合など、ＣＥ機器１０は、消費電力を抑制するべく、カメラ部４１、カメラDSP４２、LCD２０などに対する電力の供給を遮断する。
【００４７】
しかし、上述のように、カメラ部４１、カメラDSP４２、LCD２０などに対する電力の供給が遮断された状態であっても、RAM８２には、電力が供給されており、RAM８２に保持されたデータが、再度利用可能となるようになされている。これにより、例えば、ユーザが、操作部４６に含まれるパワーON／OFFボタンを再度押下した場合、ROM８３からRAM８２へのプログラムのロードが既に完了した状態、すなわち、ＯＳ１０１を構成するソフトウェアが、カーネル空間１３１で実行され、アプリケーションプログラム１０２を構成するソフトウェアが、ユーザランド空間１３２で実行された状態で、カメラ部４１、カメラDSP４２、LCD２０などに対する電力の供給が再開されるようになされている。従って、ＣＥ機器１０は、パワーON／OFFボタンが押下された後、直ぐに画像の撮影等が可能であり、ユーザにとって操作性が高くなるように構成されている。
【００４８】
このようなＣＥ機器１０の構成は、例えば、従来よりノート型のパーソナルコンピュータなどにおいて多く実装されている機能であって、コンピュータを終了させる直前の状態を一時的に保存しておき、再度立ち上げたときに、即座に作業を再開できる機能である、いわゆるサスペンド／レジュームと同様の機能を実現する構成とされる。
【００４９】
ただし、サスペンド／レジュームを繰り返すと、RAMなどのメモリに保持されているデータが誤って更新されたり、破壊されたりすることで、機器の動作不良を招くことがある。このような場合、従来のパーソナルコンピュータでは、例えば、自身をシャットダウンまたはリブートするなど、再起動させて、RAMなどのメモリに、再度プログラムをロードすることで、処理を継続することができるようになされている。
【００５０】
しかしながら、デジタルカメラなどのＣＥ機器においては、例えば、内蔵されるバッテリーの取り外しが行われた場合、ファームウェアの更新などが行われた場合などの場合を除いて、通常、シャットダウンまたはリブートが行われることはない。
【００５１】
デジタルカメラなどのＣＥ機器では、アプリケーションプログラム１０２を構成するプログラムの処理が、例えば、画像の撮影、画像の表示などの処理に限られているため、ＯＳ１０１上で、通常、複数のアプリケーションプログラム１０２のプログラムが同時に実行されることはなく、例えば、複数のプログラムが同時にRAMなどのメモリに保持されるデータを利用することにより、データが誤って更新されるなどの可能性は少ないものと考えられるからである。また、RAMのデータを保持するためにRAMに対して供給される電力は微弱なものであり、デジタルカメラなどのＣＥ機器では、起動や終了時に、都度、シャットダウンまたはリブートを行うよりも、サスペンド／レジュームを繰り返す方が、よりユーザの操作性を向上させることができるからである。
【００５２】
しかしながら、ＣＥ機器においても、サスペンド／レジュームを繰り返すと、RAMなどのメモリに保持されているデータが誤って更新されたり、破壊されたりすることで、機器の動作不良を招く場合がある。
【００５３】
例えば、プロセス１５１に対応するプログラムにおいて、メモリサイズの確保や開放などの処理の記述に誤りがあり（バグなどがあり）、確保されたメモリサイズを越えるデータが入力されるなどした場合、RAM８２の誤った領域にデータが書き込まれて、ＣＥ機器１０が正常に動作しなくなることがある。このため、カーネル空間１３１で実行されているＯＳ１０１のカーネルが、RAM８２へのデータの書き込み処理が正常に行われたか否かを監視し、RAM８２へのデータの書き込み処理などが正常に行われなかった（不正に行われた）場合、プロセス１５１への記憶領域の割り当てを解除するなどして、プロセス１５１に対応するプログラムを強制終了させるようになされている。
【００５４】
上述のような、プログラムのバグなどを原因とするものに限らず、このようなアプリケーションプログラム１０２のプログラムによる不正なメモリの更新処理は、ＣＥ機器１０のベンダーが、当然想定しておくべきシステムエラーと考えられ、ＣＥ機器１０のベンダーは、このようなシステムエラーが発生したとしても、ＣＥ機器１０の使用ができなくなるような事態には至らないようにＣＥ機器１０を設計する必要がある。このため、近年のＣＥ機器においては、ＯＳ１０１のように、メモリ保護機能を有するオペレーティングシステムが実装されることが一般的になっている。
【００５５】
一方で、ＣＥ機器においては、画像の撮影や、画像の表示などの指令だけでなく、機器本体の起動、終了などの指令も、アプリケーションプログラムを介して受け付けられるようになされている場合がある。例えば、LCDに表示されるGUIの画像に基づいて、ユーザが操作部を操作することにより、ＣＥ機器の起動や終了を指令することも可能である。デジタルカメラなどの小型のＣＥ機器においては、ソフトウェアを記憶するROMなどの記憶容量は限られたものであり、また、操作部の構成も単純なものとされることが望ましいので、ユーザの操作を受け付けるGUIの制御などの機能は、１つのアプリケーションプログラムに含められて実装されることが多い。
【００５６】
従って、従来のＣＥ機器において、ＯＳ１０１のメモリ保護機能により、アプリケーションプログラム１０２が強制終了された場合、ユーザにとっては、ＣＥ機器が操作不能になったものと感じられる。このような場合、ユーザは、ＣＥ機器のＯＳ１０１を再起動させる必要があり、例えば、ＣＥ機器の、図示せぬバッテリーを取り外して、さらに取り付けなおすなどの操作を強いられる。
【００５７】
あるいはまた、従来のＣＥ機器において、ＯＳ１０１の機能により、アプリケーションプログラム１０２が強制終了された場合、自動的に、ＣＥ機器のＯＳ１０１を再実行させるように、ＯＳ１０１のカーネルの一部を変更するなどして対処することも可能であるが、ＯＳ１０１をあらためてRAMにロードして再実行することでＣＥ機器を再起動する場合、再起動に伴う各種の処理に時間がかかり、所定の時間は、操作部を介した操作の入力が受け付けられない。このような場合、ユーザにとっては、やはりＣＥ機器が突如、操作不能になったように感じられ、ＣＥ機器の操作性が極めて低いものと感じられる。
【００５８】
そこで、本発明においては、ＯＳ１０１の機能により、通常実行されているアプリケーションプログラムが強制終了された場合、ユーザに、ＣＥ機器１０のシステムエラーを通知し、再起動を促すための新たなアプリケーションプログラムが実行されるようにする。
【００５９】
具体的には、カーネル空間１３１で実行され、ＯＳ１０１のカーネルにフックされるソフトウェアとしてエクセプションハンドラ１３３を設ける。そして、ＯＳ１０１のカーネルが、RAM８２へのデータの書き込み処理が不正に行われたことを検知した場合、ＯＳ１０１のカーネルからエクセプションハンドラ１３３に、RAM８２へのデータの書き込み処理が不正に行われたことを通知する処理が発生するようにして、その後、ＯＳ１０１のカーネルがプロセス１５１に対応するプログラムを強制終了するようにする。
【００６０】
ここで、エクセプションハンドラ１３３は、例えば、ＯＳ１０１に付加されるプログラムとしてROM８３などに予め記憶されている。すなわち、エクセプションハンドラ１３３は、実際には、RAM８２にロードされてカーネル空間１３１で実行されるプログラムの一部である。
【００６１】
エクセプションハンドラ１３３は、ＯＳ１０１のカーネルからRAM８２へのデータの書き込み処理が不正に行われたことを通知された場合、プロセス１５１のプログラムが終了された後、終了されたプログラムとは別のプログラムであって、ユーザに、ＣＥ機器１０のシステムエラーを通知し、再起動を促すためのアプリケーションプログラムの実行を制御する。
【００６２】
なお、ＣＥ機器１０において、通常実行されているアプリケーションプログラムを、以下適宜、通常アプリケーションと称し、ユーザに、ＣＥ機器１０のシステムエラーを通知し、再起動を促すためのアプリケーションプログラムを、以下適宜、例外アプリケーションと称することとする。通常アプリケーションおよび例外アプリケーションは、ともに、アプリケーションプログラム１０２を構成するプログラムとして、ROM８３などに予め記憶されているものとする。なお、例外アプリケーションは、エクセプションハンドラ１３３の制御によってのみ実行されるものとし、ＣＥ機器１０に電力が供給されて起動される場合などは、自動的に通常アプリケーションが実行されるものとする。
【００６３】
エクセプションハンドラ１３３により、例外アプリケーションの実行が制御された場合、ＯＳ１０１のカーネルは、ユーザランド空間１３２において、例外アプリケーションに対応するプロセス１５２の記憶領域を割り当てる。そして、ＣＥ機器１０のＣＰＵ８１により例外アプリケーションが実行され、例えば、LCD２０に、所定のメッセージやGUIが表示されることで、ユーザに、ＣＥ機器１０のシステムエラーが通知され、再起動が促されることになる。
【００６４】
次に、図４のフローチャートを参照して、ＯＳ１０１のカーネルによる異常終了対応処理の例について説明する。この処理は、ＣＥ機器１０が起動され、ＯＳ１０１、アプリケーションプログラム１０２などのソフトウェアがRAM８２にロードされているとき、ＯＳ１０１のカーネルにより実行される。ここでは、ＣＥ機器１０には、アプリケーションプログラム１０２を構成するプログラムとして、通常アプリケーションと、例外アプリケーションとが実装されているものとする。
【００６５】
ステップＳ１０１において、ＯＳ１０１のカーネルは、ユーザランド空間１３２で実行されている通常アプリケーションによる不正な処理（すなわち、システムエラー）があったか否かを判定し、不正な処理があったと判定されるまで待機する。
【００６６】
例えば、通常アプリケーションに、メモリサイズの確保や開放などの処理の記述に誤りがあり、確保されたメモリサイズを越えるデータが入力されるなどした場合、RAM８２の誤った領域にデータが書き込まれて、ステップＳ１０１の処理で不正な処理があったと判定され、処理は、ステップＳ１０２に進む。
【００６７】
ステップＳ１０２において、ＯＳ１０１のカーネルは、通常アプリケーションによる不正な処理があったことを、エクセプションハンドラ１３３に通知する。このとき、例えば、ＯＳ１０１のカーネルの処理において、割り込みが発生して、エクセプションハンドラ１３３に対応するプログラム（コード）が呼び出されてエクセプションハンドラ１３３の処理が実行されるとともに、ＯＳ１０１のカーネルで検知された不正な処理を特定する情報などを含んだパラメータなどが、エクセプションハンドラ１３３に引き渡されることにより、通常アプリケーションによる不正な処理があったことが、エクセプションハンドラ１３３に通知される。
【００６８】
ステップＳ１０３において、ＯＳ１０１のカーネルは、ユーザランド空間１３２で実行されている通常アプリケーションに対応するプロセスを強制的に終了させる（プロセスをキルする）。
【００６９】
ステップＳ１０４において、ＯＳ１０１のカーネルは、例外アプリケーション、またはエクセプションハンドラ１３３からの、リブートまたはシャットダウンの要求があったか否かを判定し、まだ、リブートまたはシャットダウンの要求がないと判定された場合、処理は、ステップＳ１０１に戻り、それ以降の処理が繰り返し実行される。
【００７０】
ステップＳ１０４において、例外アプリケーション、またはエクセプションハンドラ１３３からの、リブートまたはシャットダウンの要求があったと判定された場合、処理は、ステップＳ１０５に進む。
【００７１】
ステップＳ１０５において、ＯＳ１０１のカーネルは、リブートまたはシャットダウンを行う。これにより、ＣＥ機器１０が次回起動されたときには、RAM８２に、ＯＳ１０１、アプリケーションプログラム１０２などのソフトウェアがあらためてロードされることになる。
【００７２】
なお、ステップＳ１０５の処理で、リブートが行われる場合、ＣＥ機器１０が、自動的に再起動されてRAM８２に、ＯＳ１０１、アプリケーションプログラム１０２などのソフトウェアがあらためてロードされることになるが、ステップＳ１０５の処理で、シャットダウンが行われる場合、ステップＳ１０５では、RAM８２を含めてＣＥ機器１０全体への電力の供給が遮断されることになり、その後、例えば、操作部４６に含まれるパワーON／OFFボタンが押下されたとき、ＣＥ機器１０が、再起動されてRAM８２に、ＯＳ１０１、アプリケーションプログラム１０２などのソフトウェアがあらためてロードされることになる。
【００７３】
次に、図５のフローチャートを参照して、エクセプションハンドラの処理の例について説明する。
【００７４】
ステップＳ１２１において、エクセプションハンドラ１３３は、ＯＳ１０１のカーネルから通常アプリケーションによる不正な処理があったことの通知があったか否かを判定し、通常アプリケーションによる不正な処理があったことの通知があったと判定されるまで待機する。ここでは、図４のステップＳ１０２の処理による通知があったか否かが判定されることになる。
【００７５】
ステップＳ１２１において、ＯＳ１０１のカーネルから通常アプリケーションによる不正な処理があったことの通知があったと判定された場合、処理は、ステップＳ１２２に進み、エクセプションハンドラ１３３は、ログを出力する。このとき、例えば、不正な処理に係るプログラム、時刻などを特定する情報などがログとして出力される。
【００７６】
ステップＳ１２３において、エクセプションハンドラ１３３は、図４のステップＳ１０３の処理でキルされた通常アプリケーションに対応するプロセス（例えば、図３のプロセス１５１）が完全に終了するまで待機する。
【００７７】
ステップＳ１２３において、通常アプリケーションに対応するプロセスが完全に終了したと判定された場合、処理は、ステップＳ１２４に進み、エクセプションハンドラ１３３は、フラグが「OFF」であるか否かを判定する。ここで、フラグは、エクセプションハンドラ１３３に、例外アプリケーションを起動（実行）させるか否かを判定するためのフラグであり、「ON」または「OFF」の状態があり得るものであって、初期値としては「OFF」とされる。
【００７８】
いまの場合、フラグは初期値の「OFF」であるため、ステップＳ１２４では、フラグは「OFF」と判定されて、処理はステップＳ１２５に進む。
【００７９】
ステップＳ１２５において、エクセプションハンドラ１３３は、例外アプリケーションの実行を制御する。これにより、ユーザランド空間１３２で、例外アプリケーションに対応するプロセス（例えば、図３のプロセス１５２）が実行されることになる。
【００８０】
例外アプリケーションが実行された場合、例えば、図６に示されるような画面がLCD２０に表示される。
【００８１】
図６は、例外アプリケーションにより表示される画面の例を示しており、この例では、画面２０１に、「システムエラーが発生しました。終了して下さい。」とのメッセージが表示されている。これにより、ユーザに、ＣＥ機器１０において、システムエラーが発生したことを認識させることができる。
【００８２】
また、画面２０１は、GUIとしての機能も有しており、ボタン２０２が表示されている。例えば、ユーザが、操作部４６を操作して、画面２０１のボタン２０２にカーソルを合わせるなどして押下することにより、ＣＥ機器１０のシャットダウンまたはリブートが指令されるようになされている。
【００８３】
すなわち、例外アプリケーションは、ユーザに、ＣＥ機器１０のシステムエラーを通知するメッセージを表示し、ボタン２０２を押下させることで再起動を促すための画面２０１を表示させる処理を実行するアプリケーションプログラムである。
【００８４】
図５に戻って、ステップＳ１２５の処理の後、エクセプションハンドラ１３３は、ステップＳ１２６において、フラグを更新する。いまの場合、フラグが初期値の「OFF」から「ON」に更新される。
【００８５】
次に、図７のフローチャートを参照して、例外アプリケーションの処理の例について説明する。
【００８６】
ステップＳ１４１において、例外アプリケーションは、例えば、図６のボタン２０２のように、再起動に関する処理の実行を指令するボタンが押下されたか否かを判定し、ボタンが押下されたと判定されるまで待機する。ステップＳ１４１において、再起動に関する処理の実行を指令するボタンが押下されたと判定された場合、処理は、ステップＳ１４２に進む。
【００８７】
ステップＳ１４２において、例外アプリケーションは、ＯＳ１０１のカーネルにリブートまたはシャットダウンの実行を要求する。これにより、図４のステップＳ１０５の処理でリブートまたはシャットダウンが行われることになる。なお、このリブートまたはシャットダウンの後、ＣＥ機器１０が再起動されるときには、通常アプリケーションが自動的に実行されるようになされている。
【００８８】
このようにすることで、アプリケーションプログラム１０２を構成するプログラムによる不正な処理が実行され、ＯＳ１０１の機能によりそのプログラムが強制終了された場合であっても、ユーザに、ＣＥ機器１０においてシステムエラーが発生したことを認識させることができる。したがって、ＯＳ１０１のメモリ保護機能を有効に活用するとともに、ユーザによる操作性を向上させることができるようにするものである。
【００８９】
ところで、例外アプリケーションは、上述したように、画面２０１を表示し、ＯＳ１０１のカーネルにリブートの実行を要求するだけの単純なプログラムであるが、例外アプリケーションにもやはりバグがあり、確保されたメモリサイズを越えるデータが入力されるなどの処理が実行される可能性もある。このような場合、例外アプリケーションによる不正な処理がＯＳ１０１のカーネルにより検知されて、例外アプリケーションが強制終了されることになる。
【００９０】
しかし、このような場合、通常アプリケーションが強制終了された場合と同様に、例外アプリケーションを新たに実行しても、やはりまた、例外アプリケーションによる不正な処理が繰り返される恐れがある。そこで、本発明においては、例外アプリケーションによる不正な処理がＯＳ１０１のカーネルにより検知されて、例外アプリケーションが強制終了された場合、ＣＥ機器１０がリブートまたはシャットダウンされて再起動されるようになされている。
【００９１】
すなわち、例外アプリケーションが起動中に不正な処理が実行された場合、図４のステップＳ１０１の処理で、不正な処理があったと判定され、処理は、ステップＳ１０２、S１０３に進むことになる。なお、いまの場合、ステップＳ１０３では、ユーザランド空間１３２で実行されている例外アプリケーションに対応するプロセス１５２がキルされることになる。
【００９２】
また、ステップＳ１０２の処理で、エクセプションハンドラ１３３に、ＯＳ１０１のカーネルから、例外アプリケーションによる不正な処理があったことの通知が行われ、これに伴い、図５のステップＳ１２２乃至S１２４の処理が実行されることになるが、いまの場合、フラグは、「ON」なので、ステップＳ１２４の処理の後、処理は、ステップＳ１２７に進むことになる。
【００９３】
ステップＳ１２７では、エクセプションハンドラ１３３からＯＳ１０１のカーネルにリブートまたはシャットダウンの実行が要求される。そして、図４のステップＳ１０４とＳ１０５の処理が実行されることになる。
【００９４】
いまの場合、図４のステップＳ１０４では、リブートまたはシャットダウンが要求されたと判定され、ステップＳ１０５において、ＯＳ１０１のカーネルが、ＣＥ機器１０のリブートまたはシャットダウンを行う。これにより、ＣＥ機器１０がリブートまたはシャットダウン後に再起動されて、RAM８２に、ＯＳ１０１、アプリケーションプログラム１０２などのソフトウェアがあらためてロードされることになる。なお、この再起動に伴って、やはり通常アプリケーションが自動的に実行される。
【００９５】
以上においては、ＯＳ１０１により検知されるシステムエラーの例として、プログラムにより確保されたメモリサイズを越えるデータが入力されるなどして、RAM８２の誤った領域にデータが書き込まれる不正な処理の発生を説明したが、例えば、アプリケーションプログラム１０２のプログラムによりRAM８２において使用可能な記憶領域を使用し尽してしまう、いわゆるアウトオブメモリの発生、その他の不正な処理であってソフトウェアが正常に動作できない状態になる不正な処理の発生が、ＯＳ１０１によりシステムエラーとして検知されるようにしてもよい。
【００９６】
また、以上においては、ＣＥ機器１０に本発明を適用する例について説明したが、例えば、図８に示されるようなパーソナルコンピュータに本発明を適用することも可能である。図８は、パーソナルコンピュータ７００の構成例を示すブロック図である。
【００９７】
図８において、CPU（Central Processing Unit）７０１は、ROM（Read Only Memory）７０２に記憶されているプログラム、または記憶部７０８からRAM（Random Access Memory）７０３にロードされたプログラムに従って各種の処理を実行する。RAM７０３にはまた、CPU７０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【００９８】
CPU７０１、ROM７０２、およびRAM７０３は、バス７０４を介して相互に接続されている。このバス７０４にはまた、入出力インタフェース７０５も接続されている。
【００９９】
入出力インタフェース７０５には、キーボード、マウスなどよりなる入力部７０６、CRT(Cathode Ray Tube)、ＬＣＤ(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部７０７、ハードディスクなどより構成される記憶部７０８、モデム、LANカードなどのネットワークインタフェースカードなどより構成される通信部７０９が接続されている。通信部７０９は、インターネットを含むネットワークを介しての通信処理を行う。
【０１００】
入出力インタフェース７０５にはまた、必要に応じてドライブ７１０が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア７１１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部７０８にインストールされる。
【０１０１】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、図１のＣＥ機器１０、図８のパーソナルコンピュータ７００などに、インターネットなどのネットワークや、記録媒体６０、リムーバブルメディア７１１などからなる記録媒体からインストールされる。
【０１０２】
なお、この記録媒体は、図８に示される、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フロッピディスク（登録商標）を含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（MD（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア７１１により構成されるものだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM８３、ROM７０２、記憶部７０８に含まれるハードディスクなどで構成されるものも含む。
【０１０３】
本明細書において上述した一連の処理を実行するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【図面の簡単な説明】
【０１０４】
【図１】本発明を適用したＣＥ機器の一実施形態に係る構成例を示すブロック図である。
【図２】図１のCPUにより実行されるソフトウェアの機能的構成例を示すブロック図である。
【図３】図２のソフトウェアが実行されるとき、ＯＳにより管理される記憶領域の構成を説明する図である。
【図４】異常終了対応処理の例を説明するフローチャートである。
【図５】エクセプションハンドラの処理の例を説明するフローチャートである。
【図６】例外アプリケーションにより表示される画面の例を示す図である。
【図７】例外アプリケーションの処理の例を説明するフローチャートである。
【図８】パーソナルコンピュータの構成例を示すブロック図である。
【符号の説明】
【０１０５】
１０  ＣＥ機器，  ２０  LCD，  ４１  カメラ部，  ４５  制御部，  ４６  操作部，  ６０  記録媒体，  ８１  ＣＰＵ，  ８２  RAM，  ８３  ROM，  １０１  ＯＳ，  １０２  アプリケーションプログラム，  １３３  エクセプションハンドラ，  ７０１  CPU，  ７０２  ROM，  ７０３  ＲAM，  ７１１  リムーバブルメディア
【図１】
2008165551.tif 000003
【図２】
2008165551.tif 000004
【図３】
2008165551.tif 000005
【図４】
2008165551.tif 000006
【図５】
2008165551.tif 000007
【図６】
2008165551.tif 000008
【図７】
2008165551.tif 000009
【図８】
2008165551.tif 000010