(57)【要約】【課題】変数格納エリアとして用いられるスタックの検査回数を削減しつつ、ＣＰＵの利用効率を向上させ、変数格納エリアとして用いられるスタックを好適に検査することができるようにする。【解決手段】本発明に係る情報処理装置に適用可能な携帯電話機においては、主制御部は、携帯電話機において間欠動作の実行を制御し、その制御に従い、携帯電話機において間欠動作から復帰した際に、スタック検査用のタイマを第１の状態に設定し、設定されたスタック検査用のタイマがタイムアウトする度に、スタックの検査を実行する。【選択図】  図４
2008299665.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置において間欠動作の実行を制御する間欠動作実行制御手段と、
前記間欠動作実行制御手段による制御に従い、前記情報処理装置において間欠動作から復帰した際に、スタック検査用のタイマを第１の状態に設定するタイマ設定手段と、
前記タイマ設定手段により設定された前記スタック検査用のタイマがタイムアウトする度に、スタックの検査を実行するスタック検査実行手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記スタック検査実行手段により実行されたスタックの検査の結果、スタックにおける変数格納エリアが破壊されていると判定された場合、システムを元の状態に戻すシステム制御手段をさらに備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記間欠動作実行制御手段により情報処理装置において間欠動作を実行する場合、前記タイマ設定手段は、スタック検査用のタイマを第２の状態に設定することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記間欠動作実行制御手段による制御に従い、前記情報処理装置において間欠動作から復帰した際に、スタック検査が可能なスレッドが動作しているか否かを判定する第１の判定手段をさらに備え、
前記第１の判定手段によりスタック検査が可能なスレッドが動作していると判定された場合、前記タイマ設定手段は、スタック検査用のタイマを前記第２の状態から前記第１の状態に切り替えて設定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第１の判定手段によりスタック検査が可能なスレッドが動作していないと判定された場合、前記タイマ設定手段は、スタック検査用のタイマの前記第２の状態の設定を継続することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記第１の判定手段によりスタック検査が可能なスレッドが動作していると判定された場合、前記タイマ設定手段によりスタック検査用のタイマが前記第２の状態から前記第１の状態に切り替えて設定された後、スタック検査が可能なスレッドが終了したか否かを判定する第２の判定手段をさらに備え、
前記第２の判定手段により、前記タイマ設定手段によりスタック検査用のタイマが前記第２の状態から前記第１の状態に切り替えて設定された後、スタック検査が可能なスレッドが終了したと判定された場合、前記タイマ設定手段は、スタック検査用のタイマを前記第１の状態から前記第２の状態に切り替えて設定することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記第１の判定手段によりスタック検査が可能なスレッドが新たに動作していると判定された場合、前記タイマ設定手段は、スタック検査用のタイマを再び前記第２の状態から前記第１の状態に切り替えて設定することを特徴とする請求項４に記載の情報処理装置。
【請求項８】
前記タイマ設定手段によりスタック検査用のタイマを前記第１の状態または前記第２の状態に設定する際に、スタック検査用のタイマが前記第１の状態または前記第２の状態に設定されたことを示すフラグを設定するフラグ設定手段をさらに備え、
前記タイマ設定手段によりスタック検査用のタイマが前記第１の状態に設定されている場合に、前記フラグ設定手段により設定されている前記フラグがすべて、スタック検査用のタイマが前記第２の状態に設定されたことを示すフラグに設定されたとき、前記タイマ設定手段は、スタック検査用のタイマを前記体２の状態に設定することを特徴とする請求項１に記載の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置に係り、特に、変数格納エリアとして用いられるスタックを検査することができるようにした情報処理装置に関する。
【背景技術】
【０００２】
近年、携帯電話機にはＣＰＵが搭載されており、このＣＰＵ（Central Processing Unit）は、ＲＯＭ（Read Only Memory）や記憶部に予め記憶されている種々のアプリケーションプログラムをＲＡＭ（Random Access Memory）に読み出して実行することにより、種々の処理を行う。
【０００３】
一般に、ＣＰＵが実行するスレッド（プログラムの実行単位）は、スタックと呼ばれるメモリを一時的に変数格納エリアとして使用する。また、この変数格納エリアは、サブルーチンを呼び出すごとに、プログラムの戻り番地を格納するものとしても使用される。この変数格納エリアに何らかのデータが入るなどにより変数格納エリアが破壊されると、スレッドは暴走してしまう可能性がある。
【０００４】
運用状態にある携帯電話機などの情報処理装置においては、この変数格納エリアが破壊されたことをすばやく検出する必要がある。例えば変数格納エリアが破壊されたことを検出する方法として、変数格納エリアとして用いられるスタックの上限値に含まれる属種データが壊れているか否かを比較することで、変数格納エリアが破壊されたことを検出するスタック検査方法が知られている。変数格納エリアの破壊が検出されると、スタックにリセットをかけることになる（例えば特許文献１参照）。
【特許文献１】特開平８−７７００４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、このスタック検査方法を用いると、検出時にＣＰＵリソースを多く消費してしまい、変数格納エリアの破壊を検出することができようにスタックの検査を頻繁に行うようにすると、情報処理効率が悪くなってしまうという課題があった。
【０００６】
本発明は、このような状況に鑑みてなされたものであり、変数格納エリアとして用いられるスタックの検査回数を削減しつつ、ＣＰＵの利用効率を向上させ、変数格納エリアとして用いられるスタックを好適に検査し、コンテンツ破壊などの致命的な状態になることを回避することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、上述した課題を解決するために、情報処理装置において間欠動作の実行を制御する間欠動作実行制御手段と、間欠動作実行制御手段による制御に従い、情報処理装置において間欠動作から復帰した際に、スタック検査用のタイマを第１の状態に設定するタイマ設定手段と、タイマ設定手段により設定されたスタック検査用のタイマがタイムアウトする度に、スタックの検査を実行するスタック検査実行手段とを備えることを特徴とする。
【０００８】
本発明の情報処理装置においては、情報処理装置において間欠動作の実行が制御され、その制御に従い、情報処理装置において間欠動作から復帰した際に、スタック検査用のタイマが第１の状態に設定され、設定されたスタック検査用のタイマがタイムアウトする度に、スタックの検査が実行される。
【発明の効果】
【０００９】
本発明によれば、変数格納エリアとして用いられるスタックの検査回数を削減しつつ、変数格納エリアとして用いられるスタックを好適に検査し、コンテンツ破壊などの致命的な状態になることを回避することができる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について、図面を参照しながら説明する。図１は、本発明に係る情報処理装置として適用可能な携帯電話機１の外観の構成を表している。なお、図１（Ａ）は、携帯電話機１を約１８０度に見開いたときの正面から見た外観の構成を表しており、図１（Ｂ）は、携帯電話機１を見開いたときの側面から見た外観の構成を表している。
【００１１】
図１（Ａ）および（Ｂ）に示されるように、携帯電話機１は、中央のヒンジ部１１を境に第１の筐体１２と第２の筐体１３とがヒンジ結合されており、ヒンジ部１１を介して矢印Ｘ方向に折り畳み可能に形成される。携帯電話機１の内部の所定の位置には、送受信用のアンテナ（後述する図３のアンテナ４４）が設けられており、内蔵されたアンテナを介して基地局（図示せず）との間で電波を送受信する。
【００１２】
第１の筐体１２には、その表面に「０」乃至「９」の数字キー、発呼キー、リダイヤルキー、終話・電源キー、クリアキー、および電子メールキーなどの操作キー１４が設けられており、操作キー１４を用いて各種指示を入力することができる。
【００１３】
第１の筐体１２には、操作キー１４として上部に十字キーと確定キーが設けられており、ユーザが十字キーを上下左右方向に操作することにより当てられたカーソルを上下左右方向に移動させることができる。具体的には、第２の筐体１３に設けられた液晶ディスプレイ１７に表示されている電話帳リストや電子メールのスクロール動作、簡易ホームページのページ捲り動作および画像の送り動作などの種々の動作を実行する。
【００１４】
また、確定キーを押下することにより、種々の機能を確定することができる。例えば第１の筐体１２は、ユーザによる十字キーの操作に応じて液晶ディスプレイ１７に表示された電話帳リストの複数の電話番号の中から所望の電話番号が選択され、確定キーが第１の筐体１２の内部方向に押圧されると、選択された電話番号を確定して電話番号に対して発呼処理を行う。
【００１５】
さらに、第１の筐体１２には、十字キーと確定キーの左隣に電子メールキーが設けられており、電子メールキーが第１の筐体１２の内部方向に押圧されると、メールの送受信機能を呼び出すことができる。十字キーと確定キーの右隣には、ブラウザキーが設けられており、ブラウザキーが第１の筐体１２の内部方向に押圧されると、Ｗｅｂページのデータを閲覧することが可能となる。また、第１の筐体１２には、操作キー１４の下部にマイクロフォン１５が設けられており、マイクロフォン１５によって通話時のユーザの音声を集音する。また、第１の筐体１２には、携帯電話機１の操作を行うサイドキー１６が設けられている。
【００１６】
一方、第２の筐体１３には、その正面に液晶ディスプレイ１７（メインディスプレイ）が設けられており、電波の受信状態、電池残量、電話帳として登録されている相手先名や電話番号及び送信履歴等の他、電子メールの内容、簡易ホームページ、ＣＣＤ（Charge Coupled Device）カメラ（後述する図２のＣＣＤカメラ２０）で撮像した画像、外部のコンテンツサーバ（図示せず）より受信したコンテンツ、メモリカード（後述する図３のメモリカード４６）に記憶されているコンテンツを表示することができる。また、液晶ディスプレイ１７の上部の所定の位置にはスピーカ１８が設けられており、これにより、ユーザは音声通話することが可能である。
【００１７】
図２は、本発明に係る情報処理装置として適用可能な携帯電話機１の他の外観の構成を表している。図２の携帯電話機１の状態は、図１の携帯電話機１の状態から矢印Ｘ方向に回動させた状態である。なお、図２（Ａ）は、携帯電話機１を閉じたときの正面から見た外観の構成を表しており、図２（Ｂ）は、携帯電話機１を閉じたときの側面から見た外観の構成を表している。
【００１８】
第２の筐体１３の上部には、ＣＣＤカメラ２０が設けられており、これにより、所望の撮影対象を撮像することができる。ＣＣＤカメラ２０の下部には、サブディスプレイ２１が設けられており、現在のアンテナの感度のレベルを示すアンテナピクト、携帯電話機１の現在の電池残量を示す電池ピクト、現在の時刻などが表示される。
【００１９】
図３は、本発明に係る情報処理装置として適用可能な携帯電話機１の内部の構成を表している。図３に示されるように、携帯電話機１は、第１の筐体１２及び第２の筐体１３の各部を統括的に制御する主制御部３１に対して、電源回路部３２、操作入力制御部３３、画像エンコーダ３４、カメラインタフェース部３５、ＬＣＤ（Liquid Crystal Display）制御部３６、多重分離部３８、変復調回路部３９、音声コーデック４０、および記憶部４７がメインバス４１を介して互いに接続されるとともに、画像エンコーダ３４、画像デコーダ３７、多重分離部３８、変復調回路部３９、音声コーデック４０、および記録再生部４５が同期バス４２を介して互いに接続されて構成される。
【００２０】
主制御部３１は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、およびＲＡＭ（Random Access Memory）などからなり、ＣＰＵは、ＲＯＭに記憶されているプログラムまたは記憶部４７からＲＡＭにロードされた各種のアプリケーションプログラムに従って各種の処理を実行するとともに、種々の制御信号を生成し、各部に供給することにより携帯電話機１を統括的に制御する。ＲＡＭは、ＣＰＵが各種の処理を実行する上において必要なデータなどを適宜記憶する。なお、主制御部３１には、現在の日付と時刻を正確に計測するタイマが内蔵されている。
【００２１】
携帯電話機１は、主制御部３１の制御に基づいて、音声通話モード時にマイクロフォン１５で集音した音声信号を音声コーデック４０によってディジタル音声信号に変換、圧縮し、これを変復調回路部３９でスペクトラム拡散処理し、送受信回路部４３でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナ４４を介して送信する。
【００２２】
また、携帯電話機１は、音声通話モード時にアンテナ４４で受信した受信信号を増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部３９でスペクトラム逆拡散処理し、音声コーデック４０によって伸張し、アナログ音声信号に変換した後、変換されたアナログ音声信号をスピーカ１８を介して出力する。
【００２３】
さらに、携帯電話機１は、データ通信モード時に電子メールを送信する場合、操作キー１４の操作によって入力された電子メールのテキストデータを操作入力制御部３３を介して主制御部３１に送出する。主制御部３１は、テキストデータを変復調回路部３９でスペクトラム拡散処理し、送受信回路部４３でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナ４４を介して基地局（図示せず）へ送信する。
【００２４】
これに対して携帯電話機１は、データ通信モード時に電子メールを受信する場合、アンテナ４４を介して基地局（図示せず）から受信した受信信号を変復調回路部３９でスペクトラム逆拡散処理して元のテキストデータを復元した後、ＬＣＤ制御部３６を介して液晶ディスプレイ１７に電子メールとして表示する。
【００２５】
携帯電話機１は、データ通信モード時に画像信号を送信する場合、ＣＣＤカメラ２０で撮像された画像信号をカメラインタフェース部３５を介して画像エンコーダ３４に供給する。
【００２６】
画像エンコーダ３４は、ＣＣＤカメラ２０から供給された画像信号を、例えばＭＰＥＧ（Moving Picture Experts Group）４などの所定の符号化方式によって圧縮符号化することにより符号化画像信号に変換し、変換された符号化画像信号を多重分離部３８に送出する。このとき同時に携帯電話機１は、ＣＣＤカメラ２０で撮像中にマイクロフォン１５で集音した音声を音声コーデック４０を介してディジタルの音声信号として多重分離部３８に送出する。
【００２７】
多重分離部３８は、画像エンコーダ３４から供給された符号化画像信号と音声コーデック４０から供給された音声信号とを所定の方式で多重化し、その結果得られる多重化信号を変復調回路部３９でスペクトラム拡散処理し、送受信回路部４３でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナ４４を介して送信する。これに対して、携帯電話機１では、データ通信モード時に、Ｗｅｂページのデータを受信することができる。
【００２８】
また、携帯電話機１は、データ通信モード時に例えばＷｅｂページなどにリンクされた動画像ファイルのデータを受信する場合、アンテナ４４を介して基地局（図示せず）から受信した受信信号を変復調回路部３９でスペクトラム逆拡散処理し、その結果得られる多重化信号を多重分離部３８に送出する。
【００２９】
多重分離部３８は、多重化信号を分離することにより符号化画像信号と音声信号とに分け、同期バス４２を介して符号化画像信号を画像デコーダ３７に供給すると共に音声信号を音声コーデック４０に供給する。画像デコーダ３７は、符号化画像信号をＭＰＥＧ４などの所定の符号化方式に対応した復号化方式でデコードすることにより再生動画像信号を生成し、生成された再生動画像信号をＬＣＤ制御部３６を介して液晶ディスプレイ１７に供給する。これにより、例えば、Ｗｅｂページなどにリンクされた動画像ファイルに含まれる動画像データが表示される。このとき同時に音声コーデック４０は、音声信号をアナログ音声信号に変換した後、これをスピーカ１８に供給し、これにより、例えば、Ｗｅｂページなどにリンクされた動画像ファイルに含まる音声信号が再生される。
【００３０】
記憶部４７は、例えば、電気的に書換えや消去が可能な不揮発性メモリであるフラッシュメモリ素子やＨＤＤ（Hard Disc Drive）などからなり、主制御部３１のＣＰＵにより実行される種々のアプリケーションプログラムや種々のデータ群を格納している。
【００３１】
ところで、運用状態にある携帯電話機などの情報処理装置においてＣＰＵによって種々のアプリケーションを実行する際において、ＣＰＵが実行するスレッド（プログラムの実行単位）は、スタックと呼ばれるメモリを一時的に変数格納エリアとして使用する（図示しない）。また、この変数格納エリアは、サブルーチンを呼び出すごとに、プログラムの戻り番地を格納するものとしても使用される。そして、ＣＰＵがアプリケーションを実行している際には、この変数格納エリアが破壊されたことをすばやく検出する必要がある。例えば変数格納エリアが破壊されたことを検出する方法として、変数格納エリアとして用いられるスタックの上限値に含まれる属種データが壊れているか否かを比較することで、変数格納エリアが破壊されたことを検出するスタック検査方法が知られている。変数格納エリアの破壊が検出されると、スタックにリセットをかけることになる。
【００３２】
しかしながら、このスタック検査方法を用いると、検出時にＣＰＵリソースを多く消費してしまい、変数格納エリアの破壊を検出することができようにスタックの検査を頻繁に行うようにすると、情報処理効率が悪くなってしまう。
【００３３】
複雑な処理においては処理時間が一般に長くなることから、例えばプログラムミスによるメモリ破壊やスタック消費が設計値を超えてしまうスタックオーバーフローなどのような状況に代表される変数格納エリアの破壊は、特に、複雑な処理を行うプログラムで発生しやすい。ここで、携帯電話機１においては、間欠動作時には網同期に必要な最低限の処理だけを行っており、複雑なＧＵＩ（Graphical User Interface）系の処理は動作していない。
【００３４】
そこで、複雑な処理は動作しない間欠動作時にはスタック検査を行わずに、複雑な処理が動作する可能性の高い間欠動作からの復帰時に、網同期処理以外の処理が動作しているか否かを判断した上で、網同期処理以外の処理が動作していると判断された場合、スタック検査用タイマをＯＮにしてこのスタック検査用タイマのタイムアウトしたとき、変数格納エリアとして用いられるスタックを検査するようにする。これにより、変数格納エリアとして用いられるスタックの検査回数を削減しつつ、ＣＰＵの利用効率を向上させ、変数格納エリアとして用いられるスタックを好適に検査することが可能となる。以下、この方法を用いたスタック検査処理について説明する。
【００３５】
図４のフローチャートを参照して、図３の携帯電話機１におけるスタック検査処理について説明する。このスタック検査処理は、ユーザにより操作キー１４のうち例えば終話・電源キーが操作（例えば1秒以上の長押し）されることにより、携帯電話機１の電源がＯＮにされ、その場合に開始される。
【００３６】
ステップＳ１において、主制御部３１のＣＰＵは、複数のスレッドにイベントを配信制御している場合に、複数存在するスレッドのうち、その動作を監視することが可能な監視対象スレッドがイベントを受信し、監視対象スレッドの動作が開始したか否かを判定し、監視対象スレッドの動作が開始したと判定するまで待機する。
【００３７】
ステップＳ１において監視対象スレッドの動作が開始したと判定された場合、ユーザにより操作キー１４のうち例えば終話・電源キーが操作されることにより、携帯電話機１の電源がＯＮにされると、主制御部３１のＣＰＵはステップＳ２で、内蔵されたタイマを用いて、スタック検査用タイマをＯＮに設定する。ステップＳ３において、主制御部３１のＣＰＵは、特定のプログラム（例えばスリープに関するプログラム）を実行する（又は実行している間に）ことで携帯電話機１において間欠動作すべき状態（又は間欠動作に移行するタイミング）であるか否かを判定する。例えば携帯電話機１において液晶ディスプレイ１７のバックライト（又は表示）が消えたときなどに、特定のプログラム（例えばスリープに関するプログラム）を起動させることで携帯電話機１において間欠動作すべき状態であると判定される。
【００３８】
ステップＳ３において特定のプログラム（例えばスリープに関するプログラム）を実行することで携帯電話機１において間欠動作すべき状態であると判定された場合、主制御部３１のＣＰＵはステップＳ４で、現在ＯＮに設定されて計時されているスタック検査用タイマを一時的にＯＦＦに設定する。ステップＳ５において、主制御部３１のＣＰＵは携帯電話機１において間欠動作を開始し、主制御部３１のＣＰＵはスリープの状態となる。ステップＳ６において、携帯電話機１は所定の場合に間欠動作から復帰する。なお、「間欠動作」とは、主制御部３１のＣＰＵは原則動作しない状態であり（ステップＳ４）、携帯電話機１に音声着信があるか否かの判断することや、網側との同期を行うことや、メール受信があるか否かの判断をすることなど、最低限必要な処理をするために決められた時間にＣＰＵを動作させる（ステップＳ６）ことを指す。
【００３９】
ステップＳ７において、携帯電話機１が間欠動作から復帰すると、主制御部３１のＣＰＵはスリープの状態から通常の状態（ＣＰＵ動作状態）に移行し、複数のスレッドにイベントを配信制御している場合に、複数存在するスレッドのうち、その動作を監視することが可能な監視対象スレッドがイベントを受信して動作しているか否かを判定する。換言すれば、スタック検査が可能なスレッドが動作しているか否かが判定される。勿論、複数のスレッドにイベントを配信制御していない場合であっても、スタック検査が可能なスレッドが動作しているか否かが判定される。
【００４０】
ステップＳ７において複数存在するスレッドのうち、その動作を監視することが可能な監視対象スレッドがイベントを受信せず、動作していないと判定された場合、主制御部３１のＣＰＵはステップＳ８で、スタック検査用のタイマの一時的なＯＦＦの設定を継続する。ステップＳ９において、主制御部３１のＣＰＵは、さらに、特定のプログラム（例えばスリープに関するプログラム）を実行する（又は実行している間に）ことで携帯電話機１において間欠動作すべき状態（又は間欠動作に移行するタイミング）であるか否かを判定する。この間欠動作すべき状態であるか否かに関する判定処理については、ステップＳ３の処理と同様であり、その説明は繰り返しになるので省略する。
【００４１】
ステップＳ９において間欠動作すべき状態（又は間欠動作に移行するタイミング）ではないと判定された場合、処理はステップＳ７に戻り、ステップＳ７以降の処理が繰り返して実行される。すなわち、間欠動作すべき状態でなく、かつ、監視対象スレッドが動作していない場合においても、スタック検査用タイマの一時的なＯＦＦの設定が継続される。
【００４２】
一方、ステップＳ９において間欠動作すべき状態（又は間欠動作に移行するタイミング）であると判定された場合、処理はステップＳ５に戻り、ステップＳ５以降の処理が繰り返し実行される。すなわち、間欠動作すべき状態であり、かつ、監視対象スレッドが動作していない場合、スタック検査用タイマの一時的なＯＦＦの設定が継続されるとともに、間欠動作が繰り返し行われる。
【００４３】
これにより、複数存在するスレッドのうち、その動作を監視することが可能な監視対象スレッドがイベントを受信せず、動作していないと判定された場合（すなわち、スタック検査が可能なスレッドが動作していないと判定された場合）、そもそも、スタック検査を行う意味がないことから、スタック検査を実行しないようにすることができる。従って、無駄なスタック検査を省くことができる。
【００４４】
一方、ステップＳ７において複数存在するスレッドのうち、その動作を監視することが可能な監視対象スレッドがイベントを受信して動作していると判定された場合、主制御部３１のＣＰＵはステップＳ１０で、スタック検査用のタイマ（例えば２、３秒間や５秒間など）をＯＦＦからＯＮに切り替えて設定する。その後、スタック検査用のタイマの計時処理が開始される。ステップＳ１１において、主制御部３１のＣＰＵは、スタック検査用のタイマの計時処理が進むことにより、スタック検査用のタイマ（例えば２、３秒間や５秒間など）がタイムアウトしたか否かを判定する。
【００４５】
ステップＳ１１においてスタック検査用のタイマ（例えば２、３秒間や５秒間など）がまだタイムアウトしていないと判定された場合、主制御部３１のＣＰＵはステップＳ１０で、スタック検査用のタイマのＯＮの設定（タイマカウント）を継続する。その後、処理はステップＳ１７に進む。すなわち、ステップＳ２において再度間欠動作すべき状態であるか否かが判定され、携帯電話機１において間欠動作すべき状態ではないと判定された場合、処理はステップＳ９に進み、ステップＳ９以降の処理が繰り返し実行される。これにより、スタック検査用タイマがタイムアウトするまで計時処理が行われる。
【００４６】
ステップＳ１１においてスタック検査用のタイマ（例えば２、３秒間や５秒間など）がタイムアウトしたと判定された場合、主制御部３１のＣＰＵはステップＳ１３で、スタック検査を実行する。上述したように、例えば変数格納エリアとして用いられるスタックの上限値に含まれる属種データが壊れているか否かを比較することで、変数格納エリアが破壊されたことが検出される。勿論、これ以外に方法を用いてスタック検査を行うようにしてもよい。
【００４７】
ステップＳ１４において、主制御部３１のＣＰＵは、スタック検査の実行の結果、変数格納エリアに用いられるスタックに異常が発生したことで変数格納エリアが破壊されているか否かを判定する。ステップＳ１４において変数格納エリアに用いられるスタックに異常が発生したことで変数格納エリアが破壊されていると判定された場合、主制御部３１のＣＰＵはステップＳ１６で、ＣＰＵが動作させているシステム全体をリスタートさせる（再起動状態となる）。その後、処理はステップＳ１に進み、ステップＳ１以降の処理が繰り返し実行される。
【００４８】
一方、ステップＳ１４において変数格納エリアに用いられるスタックに異常が発生せず、変数格納エリアが破壊されていないと判定された場合、主制御部３１のＣＰＵはステップＳ１５で、スタック検査用タイマをリセットする（すなわち、スタック検査用タイマをＯＮに継続する）。その後、再度、スタック検査タイマの計時処理が開始される。
【００４９】
次に、ステップＳ１７において、主制御部３１のＣＰＵは、複数のスレッドにイベントを配信制御している場合に、複数存在するスレッドのうち、動作を開始している監視対象スレッドの動作が終了したか否かを判定する。換言すれば、スタック検査が可能なスレッドの動作が終了したか否かが判定される。ステップＳ１７において動作を開始している監視対象スレッドの動作が終了したと判定された場合、主制御部３１はステップＳ１８で、現在ＯＮに設定されて計時されているスタック検査用タイマを一時的にＯＦＦに設定する。
【００５０】
一方、ステップＳ１７において動作を開始している監視対象スレッドの動作が終了していないと判定された場合、ステップＳ１８の処理はスキップされる。これにより、現在ＯＮに設定されて計時されているスタック検査用タイマを一時的にＯＦＦに設定されずに、スタック検査用タイマのＯＮの設定は継続される。ステップＳ１９において、主制御部３１のＣＰＵは、複数のスレッドにイベントを配信制御している場合に、複数存在するスレッドのうち、その動作を監視することが可能な監視対象スレッドがイベントを受信し、監視対象スレッドの動作が新たに開始したか否かを判定する。
【００５１】
ステップＳ１９において監視対象スレッドの動作が新たに開始したと判定された場合、主制御部３１のＣＰＵはステップＳ２０で、内蔵されたタイマを用いて、スタック検査用タイマをＯＦＦからＯＮに切り替えて設定する。これにより、その後、スタック検査用のタイマの計時処理が開始される。一方、ステップＳ１９において監視対象スレッドの動作が新たに開始していないと判定された場合、ステップＳ２０の処理はスキップされる。その後、処理はステップＳ３に戻り、ステップＳ３以降の処理が繰り返し実行される。
【００５２】
これにより、携帯電話機１において間欠動作すべき状態であると判定されるまで、新たに監視対象スレッドの動作が開始される度にスタック検査用タイマがＯＮに設定され、スタック検査用タイマによる所定の時間（例えば２、３秒間や５秒間など）ごとに（スタック検査用タイマがタイムアウトするごとに）、スタック検査処理が繰り返し実行される。
【００５３】
一方、ステップＳ１４において変数格納エリアに用いられるスタックに異常が発生したことで変数格納エリアが破壊されていると判定された場合、主制御部３１のＣＰＵはステップＳ１６で、ＣＰＵが動作させているシステム全体をリスタートさせる（再起動状態となる）。その後、処理はステップＳ１に進み、ステップＳ１以降の処理が繰り返し実行される。
【００５４】
本発明の実施形態においては、携帯電話機１において間欠動作の実行を制御し、この制御に従い、携帯電話機１において間欠動作から復帰した際に、スタック検査用のタイマをＯＮ（以降本明細書ではタイマＯＮ状態を「第１の状態」と定義し、タイマＯＦＦ状態を「第２の状態」と定義する）に設定し、設定されたスタック検査用のタイマがタイムアウトする度に、スタックの検査を実行することができる。
【００５５】
そして、スタック検査の実行の結果、変数格納エリアに用いられるスタックに異常が発生したことで変数格納エリアが破壊されているか否かを判定し、変数格納エリアに用いられるスタックに異常が発生したことで変数格納エリアが破壊されていると判定された場合、ＣＰＵが動作させているシステム全体をリスタートさせる。一方、変数格納エリアに用いられるスタックに異常が発生せず、変数格納エリアが破壊されていないと判定された場合、スタック検査用タイマをリセットする。
【００５６】
これにより、変数格納エリアとして用いられるスタックの検査回数を削減しつつ、ＣＰＵの利用効率を向上させ、変数格納エリアとして用いられるスタックを必要最低限に検査することができるとともに、もし問題があったとしても、早期に問題を検出し、コンテンツ破壊などの致命的な状態に遷移することを防ぐことができる。
【００５７】
ところで、一旦、スタック検査用タイマがＯＮに設定された後、スタック検査用タイマの計時処理が進んでタイムアウトしないうちに、新たな監視対象スレッドが動作したと判定された場合、スタック検査用タイマがタイムアウトしないという状況も考えられる。例えば監視対象スレッドＡが動作している場合に、次に監視対象スレッドＢ、Ｃ、Ｄと順次動作し始めたとき、その都度、スタック検査用タイマがＯＮに設定されてしまうと、なかなかタイムアウトせずにスタックの検査が行われないことになってしまう。そこで、スタック検査用タイマをＯＮに設定したとき、スタック検査用タイマＯＮのフラグをＯＮに設定し、その後、仮に新たな監視対象スレッド順次動作し始めたとしても、スタック検査用タイマＯＮのフラグに基づいて、すでにいずれかのスタック検査用タイマＯＮのフラグがＯＮに設定されていると判定されたときには、スタック検査用タイマを改めてＯＮに設定せず、当初スタック検査用タイマのＯＮに設定したタイマを継続して動作するようにする。これにより、例えば監視対象スレッドＡが動作している場合に、次に監視対象スレッドＢ、Ｃ、Ｄと順次動作し始めたときであっても、最初に設定されたスタック検査用タイマがタイムアウトするときにスタック検査を行うことが可能となる。以下、この方法を用いたスタック検査処理について説明する。
【００５８】
図５のフローチャートを参照して、図３の携帯電話機１における他のスタック検査処理について説明する。なお、図５のステップＳ３１、ステップＳ３３乃至Ｓ３５、ステップＳ３７乃至Ｓ４２、ステップＳ４４乃至Ｓ５０、ステップＳ５３乃至Ｓ５４、およびステップＳ５６の処理は、図４のステップＳ１乃至Ｓ２０の処理と同様であり、その説明は繰り返しになるので省略する。
【００５９】
ステップＳ３２において、主制御部３１のＣＰＵは、いずれかの監視対象スレッドの動作が開始された後、ＲＡＭにて、動作が開始された監視対象スレッド（例えば監視対象スレッドＡなど）に対応するスタック検査用タイマＯＮフラグをＯＮに設定する（フラグを立てる）。すなわち、例えばＲＡＭの図示せぬレジスタなどにスタック検査用タイマＯＮに設定された状態が記憶される。なお、ＲＡＭ内には、監視対象スレッドに対応するスタック検査用タイマＯＮフラグがそれぞれ存在し、監視対象スレッドの動作が開始される度にその監視対象スレッドに対応するスタック検査用タイマＯＮフラグがＯＮに設定される。その後、処理はステップＳ３３に進み、ステップＳ３３においてスタック検査用タイマがＯＮに設定され、計時処理が開始される。
【００６０】
ステップＳ３６において、主制御部３１のＣＰＵは、間欠動作すべき状態になり、スタック検査用タイマが一時的にＯＦＦに設定されると、ＲＡＭにて、それぞれの監視対象スレッド（例えば監視対象スレッドＡやＢ、Ｃなど）に対応するスタック検査用タイマＯＮフラグをすべてＯＦＦに設定する（フラグを立てる）。
【００６１】
ステップＳ４３において、主制御部３１のＣＰＵは、スタック検査タイマがＯＮに設定された後、ＲＡＭにて、動作している監視対象スレッド（例えば監視対象スレッドＡなど）に対応するスタック検査用タイマＯＮフラグをＯＦＦから切り替えてＯＮに設定する（フラグを立てる）。すなわち、例えばＲＡＭの図示せぬレジスタなどにスタック検査用タイマＯＮに設定された状態が記憶される。その後、処理はステップＳ４４に進む。
【００６２】
ステップＳ５０において動作を開始している監視対象スレッドの動作が１つでも終了したと判定された場合、主制御部３１はステップＳ５１で、ＲＡＭにて、動作が終了した監視対象スレッド（例えば監視対象スレッドＡなど）に対応するスタック検査用タイマＯＮフラグをＯＦＦに設定する（フラグを立てる）。なお、動作している監視対象スレッドが複数同時または順次に終了した場合、動作している複数の監視対象スレッド（例えば監視対象スレッドＡなど）に対応するスタック検査用タイマＯＮフラグがそれぞれＯＦＦから切り替えてＯＮに設定される（フラグが立てられる）。一方、ステップＳ５０において動作を開始している監視対象スレッドの動作が１つも終了していないと判定された場合、ステップＳ５１乃至Ｓ５３の処理はスキップされる。
【００６３】
ステップＳ５２において、主制御部３１のＣＰＵは、ＲＡＭにて存在するスタック検査用タイマＯＮフラグのうち、監視対象スレッドに対応するスタック検査用タイマＯＮフラグがすべてＯＦＦに設定されているか否かを判定する。ステップＳ５２においてＲＡＭにて存在するスタック検査用タイマＯＮフラグのうち、監視対象スレッドに対応するスタック検査用タイマＯＮフラグがすべてＯＦＦに設定されていると判定された場合、処理はステップＳ５３に進み、ステップＳ５３においてスタック検査用タイマが一時的にＯＦＦに設定される。
【００６４】
一方、ステップＳ５２においてＲＡＭにて存在するスタック検査用タイマＯＮフラグのうち、監視対象スレッドに対応するスタック検査用タイマＯＮフラグはすべてＯＦＦに設定されておらず、いずれかの監視対象スレッドに対応するスタック検査用タイマＯＮフラグがＯＮに設定されていると判定された場合、ステップＳ５３の処理はスキップされる。すなわち、いずれかの監視対象スレッドに対応するスタック検査用タイマＯＮフラグがＯＮに設定されている場合、スタック検査用タイマが一時的にＯＦＦに設定されず、スタック検査用タイマのＯＮの設定が継続される。
【００６５】
ステップＳ５４において監視対象スレッドの動作が新たに開始したと判定された場合、主制御部３１のＣＰＵはステップＳ５５で、動作が開始した監視対象スレッドに対応するスタック検査用タイマＯＮフラグをＯＮに設定する。その後、ステップＳ５６の処理において、内蔵されたタイマを用いてスタック検査用タイマがＯＦＦからＯＮに切り替えて設定される。これにより、スタック検査用タイマの計時処理が開始される。一方、ステップＳ５４において監視対象スレッドの動作が新たに開始していないと判定された場合、ステップＳ５５乃至Ｓ５６の処理はスキップされる。これにより、例えば監視対象スレッドＡが動作している場合に、次に監視対象スレッドＢ、Ｃ、Ｄと順次動作し始めたときであっても、最初に設定されたスタック検査用タイマがタイムアウトするときにスタック検査を行うことができる。従って、変数格納エリアとして用いられるスタックの検査回数を削減しつつ、ＣＰＵの利用効率を向上させ、変数格納エリアとして用いられるスタックを必要最低限に検査することができるとともに、変数格納エリアとして用いられるスタックを一定時間ごとに確実に検査することができ、もし問題があったとしても、早期に問題を検出してコンテンツ破壊などの致命的な状態に遷移することを防ぐことができる。
【００６６】
なお、本発明は、携帯電話機１以外にも、ＰＤＡ（Personal Digital Assistant）、パーソナルコンピュータ、携帯型ゲーム機、携帯型音楽再生機、携帯型動画再生機、その他の情報処理装置にも適用することができる。
【００６７】
また、本発明の実施形態において説明した一連の処理は、ソフトウェアにより実行させることもできるが、ハードウェアにより実行させることもできる。
【００６８】
さらに、本発明の実施形態では、フローチャートのステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【図面の簡単な説明】
【００６９】
【図１】本発明に係る情報処理装置に適用可能な携帯電話機の外観の構成を示す外観図。
【図２】本発明に係る情報処理装置に適用可能な携帯電話機の他の外観の構成を示す外観図。
【図３】本発明に係る情報処理装置に適用可能な携帯電話機の内部の構成を示すブロック図。
【図４】図３の携帯電話機におけるスタック検査処理を説明するためのフローチャート。
【図５】図３の携帯電話機における他のスタック検査処理を説明するためのフローチャート。
【符号の説明】
【００７０】
１…携帯電話機、１１…ヒンジ、１２…第１の筐体、１３…第２の筐体、１４…操作キー、１５…マイクロフォン、１６…サイドキー、１７…液晶ディスプレイ、１８…スピーカ、１９a乃至１９d…磁気センサ、２０…ＣＣＤカメラ、２１…サブディスプレイ、３１…主制御部、３２…電源回路部、３３…操作入力制御部、３４…画像エンコーダ、３５…カメラI/F部、３６…ＬＣＤ制御部、３７…画像デコーダ、３８…多重分離部、３９…変復調回路部、４０…音声コーデック、４１…メインバス、４２…同期バス、４３…送受信回路部、４４…アンテナ、４５…記録再生部、４６…メモリカード、４７…記憶部。
【図１】
2008299665.tif 000003
【図２】
2008299665.tif 000004
【図３】
2008299665.tif 000005
【図４】
2008299665.tif 000006
【図５】
2008299665.tif 000007