以下、本発明の実施の形態について、図面を参照しながら説明する。図1は、本発明に係る情報処理装置として適用可能な携帯電話機1の外観の構成を表している。なお、図1(A)は、携帯電話機1を約180度に見開いたときの正面から見た外観の構成を表しており、図1(B)は、携帯電話機1を見開いたときの側面から見た外観の構成を表している。
図1(A)および(B)に示されるように、携帯電話機1は、中央のヒンジ部11を境に第1の筐体12と第2の筐体13とがヒンジ結合されており、ヒンジ部11を介して矢印X方向に折り畳み可能に形成される。携帯電話機1の内部の所定の位置には、送受信用のアンテナ(後述する図3のアンテナ31)が設けられており、内蔵されたアンテナを介して基地局(図示せず)との間で電波を送受信する。
第1の筐体12には、その表面に「0」乃至「9」の数字キー、発呼キー、リダイヤルキー、終話・電源キー、クリアキー、および電子メールキーなどの操作キー14が設けられており、操作キー14を用いて各種指示を入力することができる。
第1の筐体12には、操作キー14として上部に十字キーと確定キーが設けられており、ユーザが十字キーを上下左右方向に操作することにより当てられたカーソルを上下左右方向に移動させることができる。具体的には、第2の筐体13に設けられたメインディスプレイ17に表示されている電話帳リストや電子メールのスクロール動作、簡易ホームページのページ捲り動作および画像の送り動作などの種々の動作を実行する。
また、確定キーを押下することにより、種々の機能を確定することができる。例えば第1の筐体12は、ユーザによる十字キーの操作に応じてメインディスプレイ17に表示された電話帳リストの複数の電話番号の中から所望の電話番号が選択され、確定キーが第1の筐体12の内部方向に押圧されると、選択された電話番号を確定して電話番号に対して発呼処理を行う。
さらに、第1の筐体12には、十字キーと確定キーの左隣に電子メールキーが設けられており、電子メールキーが第1の筐体12の内部方向に押圧されると、メールの送受信機能を呼び出すことができる。十字キーと確定キーの右隣には、ブラウザキーが設けられており、ブラウザキーが第1の筐体12の内部方向に押圧されると、Webページのデータを閲覧することが可能となる。
また、第1の筐体12には、操作キー14の下部にマイクロフォン15が設けられており、マイクロフォン15によって通話時のユーザの音声を集音する。さらに、第1の筐体12には、携帯電話機1の操作を行うサイドキー16が設けられている。
なお、第1の筐体12は、背面側に図示しないバッテリパックが挿着されており、終話・電源キーがオン状態になると、バッテリパックから各回路部に対して電力が供給されて動作可能な状態に起動する。
一方、第2の筐体13には、その正面にメインディスプレイ17が設けられており、電波の受信状態、電池残量、電話帳として登録されている相手先名や電話番号及び送信履歴等の他、電子メールの内容、簡易ホームページ、CCD(Charge Coupled Device)カメラ(後述する図2のCCDカメラ20)で撮像した画像、外部のコンテンツサーバ(図示せず)より受信したコンテンツ、メモリカード(後述する図3のメモリカード46)に記憶されているコンテンツを表示することができる。また、メインディスプレイ17の上部の所定の位置にはレシーバ(受話器)18が設けられており、これにより、ユーザは音声通話することが可能である。なお、携帯電話機1の所定の位置には、レシーバ18以外の音声出力部としてのスピーカ(図3のスピーカ50)も設けられている。
また、第1の筐体12と第2の筐体13の内部の所定の位置には、携帯電話機1の状態を検知するための磁気センサ19a、19b、19c、および19dが設けられる。なお、メインディスプレイ17は、例えば有機ELにより構成されるディスプレイでもよいし、液晶ディスプレイ(Liquid Crystal Display)でもよい。
図2は、本発明に係る情報処理装置に適用可能な携帯電話機1の他の外観の構成を表している。図2の携帯電話機1の状態は、図1の携帯電話機1の状態から矢印X方向に回動させた状態である。なお、図2(A)は、携帯電話機1を閉じたときの正面から見た外観の構成を表しており、図2(B)は、携帯電話機1を閉じたときの側面から見た外観の構成を表している。
第2の筐体13の上部には、CCDカメラ20が設けられており、これにより、所望の撮影対象を撮像することができる。CCDカメラ20の下部には、サブディスプレイ21が設けられており、現在のアンテナの感度のレベルを示すアンテナピクト、携帯電話機1の現在の電池残量を示す電池ピクト、現在の時刻などが表示される。
図3は、本発明に係る情報処理装置に適用可能な携帯電話機1の内部の構成を表している。図示せぬ基地局から送信されてきた無線信号は、アンテナ31で受信された後、アンテナ共用器(DUP)32を介して受信回路(RX)33に入力される。受信回路33は、受信された無線信号を周波数シンセサイザ(SYN)34から出力された局部発振信号とミキシングして中間周波数信号に周波数変換(ダウンコンバート)する。そして、受信回路33は、このダウンコンバートされた中間周波数信号を直交復調して受信ベースバンド信号を出力する。なお、周波数シンセサイザ34から発生される局部発振信号の周波数は、制御部41から出力される制御信号SYCによって指示される。
受信回路33からの受信ベースバンド信号は、CDMA信号処理部36に入力される。CDMA信号処理部36は、図示せぬRAKE受信機を備える。このRAKE受信機では、受信ベースバンド信号に含まれる複数のパスがそれぞれの拡散符号(すなわち、拡散された受信信号の拡散符号と同一の拡散符号)で逆拡散処理される。そして、この逆拡散処理された各パスの信号は、位相が調停された後、コヒーレントRake合成される。Rake合成後のデータ系列は、デインタリーブおよびチャネル復号(誤り訂正復号)が行われた後、2値のデータ判定が行われる。これにより、所定の伝送フォーマットの受信パケットデータが得られる。この受信パケットデータは、圧縮伸張処理部37に入力される。
圧縮伸張処理部37は、DSP(Digital Signal Processor)などにより構成され、CDMA信号処理部36から出力された受信パケットデータを図示せぬ多重分離部によりメディアごとに分離し、分離されたメディアごとのデータに対してそれぞれ復号処理を行う。例えば通話モードにおいては、受信パケットデータに含まれる通話音声などに対応するオーディオデータをスピーチコーデックにより復号する。また、例えばテレビ電話モードなどのように、受信パケットデータに動画像データが含まれていれば、この動画像データをビデオコーデックにより復号する。さらに、受信パケットデータがダウンロードコンテンツであれば、このダウンロードコンテンツを伸張した後、伸張されたダウンロードコンテンツを制御部41に出力する。
復号処理により得られたディジタルオーディオ信号はPCMコーデック38に供給される。PCMコーデック38は、圧縮伸張処理部37から出力されたディジタルオーディオ信号をPCM復号し、PCM復号後のアナログオーディオデータ信号を受話増幅器39に出力する。このアナログオーディオ信号は、受話増幅器39にて増幅された後、レシーバ18により出力される。
圧縮伸張処理部37によりビデオコーデックにて復号されたディジタル動画像信号は、制御部41に入力される。制御部41は、圧縮伸張処理部37から出力されたディジタル動画像信号に基づく動画像を、図示せぬビデオRAM(例えばVRAMなど)を介してメインディスプレイ17に表示させる。なお、制御部41は、受信された動画像データだけでなく、CCDカメラ20により撮像された動画像データに関しても、図示せぬビデオRAMを介してメインディスプレイ17に表示させることも可能である。
また、圧縮伸張処理部37は、受信パケットデータが電子メールである場合、この電子メールを制御部41に供給する。制御部41は、圧縮伸張処理部37から供給された電子メールを記憶部42に記憶させる。そして、制御部41は、ユーザによる入力部としての操作キー14の操作に応じて、記憶部42に記憶されているこの電子メールを読み出し、読み出された電子メールをメインディスプレイ17に表示させる。
一方、通話モードにおいて、マイクロフォン15に入力された話者(ユーザ)の音声信号(アナログオーディオ信号)は、送話増幅器40により適正レベルまで増幅された後、PCMコーデック38によりPCM符号化される。このPCM符号化後のディジタルオーディオ信号は、圧縮伸張処理部37に入力される。また、CCDカメラ20から出力される動画像信号は、制御部41によりディジタル化されて圧縮伸張処理部37に入力される。さらに、制御部41にて作成されたテキストデータである電子メールも、圧縮伸張処理部37に入力される。
圧縮伸張処理部37は、PCMコーデック38から出力されたディジタルオーディオ信号を所定の送信データレートに応じたフォーマットで圧縮符号化する。これにより、オーディオデータが生成される。また、圧縮伸張処理部37は、制御部41から出力されたディジタル動画像信号を圧縮符号化して動画像データを生成する。そして、圧縮伸張処理部37は、これらのオーディオデータや動画像データを図示せぬ多重分離部で所定の伝送フォーマットに従って多重化した後にパケット化し、パケット化後の送信パケットデータをCDMA信号処理部36に出力する。なお、圧縮伸張処理部37は、制御部41から電子メールが出力された場合にも、この電子メールを送信パケットデータに多重化する。
CDMA信号処理部36は、圧縮伸張処理部37から出力された送信パケットデータに対し、送信チャネルに割り当てられた拡散符号を用いてスペクトラム拡散処理を施し、スペクトラム拡散処理後の出力信号を送信回路(TX)35に出力する。送信回路35は、スペクトラム拡散処理後の信号をQPSK(Quadrature Phase Shift Keying)方式などのディジタル変調方式を使用して変調する。送信回路35は、ディジタル変調後の送信信号を、周波数シンセサイザ34から発生される局部発振信号と合成して無線信号に周波数変換(アップコンバート)する。そして、送信回路35は、制御部41により指示される送信電力レベルとなるように、このアップコンバートにより生成された無線信号を高周波増幅する。この高周波増幅された無線信号は、アンテナ共用器32を介してアンテナ31に供給され、このアンテナ31から図示せぬ基地局に向けて送信される。
また、携帯電話機1は、外部メモリインタフェース45を備えている。この外部メモリインタフェース45は、メモリカード46を着脱することが可能なスロットを備えている。メモリカード46は、NAND型フラッシュメモリカードやNOR型フラッシュメモリカードなどに代表されるフラッシュメモリカードの一種であり、10ピン端子を介して画像や音声、音楽等の各種データの書き込み及び読み出しが可能となっている。さらに、携帯電話機1には、現在の正確な現在の時刻を測定する時計回路(タイマ)47が設けられている。
制御部41は、CPU(Central Processing Unit)、ROM(Read Only Memory)、およびRAM(Random Access Memory)などからなり、CPUは、ROMに記憶されているプログラムまたは記憶部42からRAMにロードされた、オペレーティングシステム(OS)を含む各種のアプリケーションプログラムに従って各種の処理を実行するとともに、種々の制御信号を生成し、各部に供給することにより携帯電話機1を統括的に制御する。RAMは、CPUが各種の処理を実行する上において必要なデータなどを適宜記憶する。
記憶部42は、例えば、電気的に書換えや消去が可能な不揮発性メモリであるフラッシュメモリ素子やHDD(Hard Disc Drive)などからなり、制御部41のUI処理CPUにより実行される種々のアプリケーションプログラムや種々のデータ群を格納している。電源回路44は、バッテリ43の出力を基に所定の動作電源電圧Vccを生成して各回路部に供給する。
携帯電話機1の制御部41のCPUが複数のタスクを並行して処理するマルチタスク処理を実行する場合、例えば図4が示すように、並列して処理される複数のタスクが優先度の高い順に配列される。制御部41のCPUは、基本的に複数のタスクを優先度の高い順に処理する。最高優先度のタスクは、並列して処理される他の複数のタスクの動作状態を管理するためのタスク動作状態監視用タスクである。図4の場合、最高優先度のタスクであるタスク動作状態監視用タスク以外のタスクとして、優先度が高い順に、被監視対象タスクA、被監視対象タスクB、被監視対象タスクC、被監視対象タスクD、被監視対象タスクE、被監視対象タスクF、および被監視対象タスクGがある。例えばタスクの中には、キーの入力を受け付けるタスクや、表示画面の更新のタスクなどが含まれる。また、タスクの中には、例えば通話処理に関するタスクと、通話中に通話時間を加算するタスクも含まれる。通話処理に関するタスクは、通話時間を加算するタスクよりも優先度が高い。
しかしながら、携帯電話機用のリアルタイムOSのようにタスクを優先度順に制御するOSにおいては、たとえ国際公開WO2008/114525号公報に提案される技術を用いたとしても、高優先度のタスクが動作し続けると低優先度のタスクが動作できなくなってしまい、結局、システムが破綻してしまう。
そこで、本実施形態は、システムの輻輳状態が一定時間以上継続した場合に、携帯電話機1は、並列して処理される他の複数のタスクの動作状態を監視するタスクが他の複数のタスクの動作状態を確認するイベント(キープアライブイベント)を他のすべてのタスクに送信することにより、並列して処理される複数のタスクの中で低優先度のタスクの動作を阻害する高優先度のタスクを明確に特定し、携帯電話機1のシステムをリセットする。これにより、本実施形態に係る情報処理装置としての携帯電話機1は、複数のタスクを並行して処理するマルチタスク処理を実行する場合に、システム上で輻輳状態となるタスクを好適に特定しつつ、システムの異常状態を好適に回避することができる。以下、この方法を用いた携帯電話機1におけるタスク動作状態監視処理について説明する。
なお、携帯電話機1におけるタスク動作状態管理処理を説明する前提条件について説明する。本実施形態に係る情報処理装置としての携帯電話機1は、図5が示すように、優先度で管理されるタスク群の最高優先度にタスク動作状態監視用タスクH(High)を設け、最低優先度にタスク動作状態監視用タスクL(Low)を設ける。タスク動作状態監視用タスクHは、タスク動作状態監視用タスクLとともに他の被監視対象タスクA乃至被監視対象タスクGの動作状態を監視する。また、タスク動作状態監視用タスクHは、他の被監視対象タスクA乃至被監視対象タスクGに対するイベントの配信を制御する。他の被監視対象タスクA乃至被監視対象タスクGはすべて、タスク動作状態監視用タスクHによってイベントの配信が制御されるタスクである。なお、図5の場合においては、被監視対象タスクとして被監視対象タスクA乃至被監視対象タスクGの7つのタスクを明示的に記載したが、7未満のタスクを被監視対象とするようにしてもよいし、8つ以上のタスクを被監視対象とするようにしてもよい。
図6のフローチャートを参照して、図3の携帯電話機1におけるタスク動作状態監視処理について説明する。図6のタスク動作状態監視処理は、携帯電話機1の電源が投入された後に開始される。なお、図7は、携帯電話機1が図6のタスク動作状態監視処理を実行する場合におけるタイミングチャートを示している。
ステップS1において、制御部41のCPUは、最高優先度のタスク動作状態監視用タスクHを実行し、最低優先度のタスク動作状態監視用タスクLに対して、CPUが割り当てられるか否かを検出するための検出イベントを送信する。図7の場合、制御部41のCPUは、時刻t0に、最低優先度のタスク動作状態監視用タスクLに対して、CPUが割り当てられるか否かを検出するための検出イベントを送信する。具体的には、タスク動作状態監視用タスクHは、タスク動作状態監視用タスクLのイベントキューに検出イベントを格納(挿入)する。なお、タスク動作状態監視用タスクLがイベントキューに格納された検出イベントを駆動する場合、タスク動作状態監視用タスクLは、検出イベントに付随するイベント駆動関数を実行し、制御部41のRAM上に、検出イベントを駆動したことによりCPUが割り当てられたことを示すフラグをONに設定する。検出イベントを駆動したことによりCPUが割り当てられたことを示すフラグは、制御部41のRAM上に格納される、タスク動作状態監視用タスクLに関する制御情報の1つである。従って、タスク動作状態監視用タスクHは、タスク動作状態監視用タスクLに関する制御情報を監視し、CPUが割り当てられたことを示すフラグがONに設定されているかを確認することで、タスク動作状態監視用タスクLにCPUが割り当てられたか否かを確認することが可能となる。
ステップS2において、制御部41のCPUは、タスク動作状態監視用タスクHを実行し、タスク動作状態監視用タスクLにCPUが割り当てられたか否かを確認するまでの待機時間T1の第1のタイマを時計回路47に設定する。図7の場合、制御部41のCPUは、時刻t1にタスク動作状態監視用タスクLにCPUが割り当てられたか否かを確認するまでの待機時間T1の第1のタイマを時計回路47に設定する。待機時間T1は例えば45(s)程度である。時計回路47は、待機時間T1の第1のタイマのカウント動作を開始する。ステップS3において、時計回路47は、待機時間T1の第1のタイマが満了するまでカウント動作を行う。ステップS3において時計回路47が待機時間T1の第1のタイマが満了するまでカウントした場合、処理はステップS4に進む。図7の場合、時刻t2に、待機時間T1の第1のタイマが満了する。
ステップS4において、制御部41のCPUは、タスク動作状態監視用タスクHを実行し、タスク動作状態監視用タスクLに関する制御情報を監視し、CPUが割り当てられたことを示すフラグがONに設定されているかを確認することで、タスク動作状態監視用タスクLにCPUが割り当てられたか否かを判定する。ステップS4において制御部41のCPUがタスク動作状態監視用タスクLにCPUが割り当てられたと判定した場合、処理はステップS1に戻り、その後、ステップS1以降の処理が繰り返し実行される。
ステップS4において制御部41のCPUがタスク動作状態監視用タスクLにCPUが割り当てられていないと判定した場合、制御部41のCPUは、携帯電話機1内のシステムが輻輳状態になりつつあると認識する。ステップS5において、制御部41のCPUは、タスク動作状態監視用タスクHを実行し、並列して処理される他のすべての被監視対象タスクの動作を確認するための動作確認用イベント(キープアライブイベント)を、すべての被監視対象タスクに対して優先度に従い送信する。図7の場合、制御部41のCPUは、時刻t3に、キープアライブイベントを、すべての被監視対象タスクに対して優先度に従い送信する。具体的には、タスク動作状態監視用タスクHは、すべての被監視対象タスクのイベントキューの先頭にキープアライブイベントを優先度順に格納(挿入)する。図5の場合、タスク動作状態監視用タスクHは、優先度に従い、被監視対象タスクA→被監視対象タスクB→被監視対象タスクC→被監視対象タスクD→被監視対象タスクE→被監視対象タスクF→被監視対象タスクGの順にキープアライブイベントを各タスクのイベントキューの先頭に格納する。このような処理を「キープアライブ格納処理(キープアライブ動作)」と定義する。
なお、被監視対象タスクがイベントキューの先頭に格納されたキープアライブイベントを駆動する場合、被監視対象タスクは、キープアライブイベントに付随するイベント駆動関数を実行し、制御部41のRAM上に、キープアライブイベントを駆動したことを示すフラグをONに設定する。キープアライブイベントを駆動したことを示すフラグは、制御部41のRAM上に格納される、被監視対象タスクに関する制御情報の1つである。従って、タスク動作状態監視用タスクHは、各被監視対象タスクに関する制御情報を監視し、キープアライブイベントを駆動したことを示すフラグがONに設定されているかを確認することで、各被監視対象タスクの動作状態を確認することが可能となる。
また、タスク動作状態監視用タスクHは、各被監視対象タスクに対して同時あるいはほぼ同時にイベントを格納するようにしてもよい。
ステップS6において、制御部41のCPUは、タスク動作状態監視用タスクHを実行し、各被監視対象タスクの動作状態を確認するまでの待機時間T2の第2のタイマを時計回路47に設定する。図7の場合、制御部41のCPUは、時刻t4に、各被監視対象タスクの動作状態を確認するまでの待機時間T2の第2のタイマを時計回路47に設定する。時計回路47は、待機時間T2の第2のタイマのカウント動作を開始する。ステップS7において、時計回路47は、待機時間T2の第2のタイマが満了するまでカウント動作を行う。ステップS7において時計回路47が待機時間T2の第2のタイマが満了するまでカウントした場合、処理はステップS8に進む。図7の場合、時刻t5に、待機時間T2の第2のタイマが満了する。
ステップS8において、制御部41のCPUは、タスク動作状態監視用タスクHを実行し、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信したか否かを判定する。ここで、被監視対象タスクからのキープアライブイベントに対する応答とは、被監視対象タスクはイベント駆動関数を実行してキープアライブイベントを駆動したことを示すフラグをONに設定することを意味する。ステップS8において制御部41のCPUは、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信したと判定した場合、制御部41のCPUは、すべての被監視対象タスクが正常に動作していると認識する。その後、処理はステップS1に戻り、ステップS1以降の処理が繰り返し実行される。
一方、ステップS8において制御部41のCPUは、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信していないと判定した場合(すなわち、タスク動作状態監視用タスクHがキープアライブイベントを送信する被監視対象タスクのうち、キープアライイベントに対する応答を受信していない被監視対象タスクがあると判定した場合)、制御部41のCPUはステップS9で、すべての被監視対象タスクに対するキープアライブイベントの再送信処理を優先度に従い開始する。図7の場合、制御部41のCPUは、時刻t6に、キープアライブイベントを、すべての被監視対象タスクに対する再送信処理を優先度に従って開始する。
ここで、すべての被監視対象タスクに対するキープアライブイベントの再送信処理について詳述する。図8は、キープアライブイベントの再送信方法の詳細を表している。図8(A)は、被監視対象タスクのイベントキューの先頭に格納されるイベントがキープアライブイベント以外のイベントであり、かつ、被監視対象タスクが駆動する最中のイベントがない被監視対象タスクに対してキープアライブイベントを再送信する例を示す。図8(A)が示すように、被監視対象タスクのイベントキューにはキープアライブイベント以外のイベントが格納されており、被監視対象タスクは、イベントキューに格納されるイベントの駆動待ち状態である。すなわち、図8(A)が示す被監視対象タスクは、正常動作中である。そこで、図8(A)が示す被監視対象タスクの場合、タスク動作状態監視用タスクHは、次回のタスクスイッチ時にキープアライブイベントを被監視対象タスクに駆動させるために、キープアライブイベントを被監視対象タスクに再送信し、被監視対象タスクのイベントキューの先頭にキープアライブイベントを格納する。
図8(B)は、被監視対象タスクのイベントキューの先頭に格納されるイベントがキープアライブイベントであり、かつ、被監視対象タスクが駆動する最中のイベントがない被監視対象タスクに対してキープアライブイベントを再送信する例を示す。図8(B)が示すように、被監視対象タスクのイベントキューの先頭にはキープアライブイベントが格納されており、被監視対象タスクは、イベントキューに格納されるキープアライブイベントの駆動待ち状態である。すなわち、図8(B)が示す被監視対象タスクは、正常動作中である。このとき、被監視対象タスクは、次回のタスクスイッチ時にキープアライブイベントを駆動することから、タスク動作状態監視用タスクHは、さらに追加して被監視対象タスクにキープアライブイベントを再送信する必要はない。そこで、図8(B)が示す被監視対象タスクの場合、タスク動作状態監視用タスクHは、キープアライブイベントを被監視対象タスクに再送信しない。
図8(C)は、被監視対象タスクのイベントキューの先頭に格納されるイベントがキープアライブイベント以外のイベントであり、かつ、被監視対象タスクが駆動する最中のイベントがあり、駆動中のイベントがキープアライブイベント以外のイベントである被監視対象タスクに対してキープアライブイベントを再送信する例を示す。図8(C)が示すように、被監視対象タスクのイベントキューの先頭にはキープアライブイベント以外のイベントが格納されており、被監視対象タスクは、キープアライブイベント以外のイベントが駆動中の状態である。すなわち、図8(C)が示す被監視対象タスクは、正常動作中である。そこで、図8(C)が示す被監視対象タスクの場合、タスク動作状態監視用タスクHは、次回のタスクスイッチ時にキープアライブイベントを被監視対象タスクに駆動させるために、キープアライブイベントを被監視対象タスクに再送信し、被監視対象タスクのイベントキューの先頭にキープアライブイベントを格納する。
図8(D)は、被監視対象タスクのイベントキューの先頭に格納されるイベントがキープアライブイベント以外のイベントであり、かつ、被監視対象タスクが駆動する最中のイベントがあり、駆動中のイベントがキープアライブイベントである被監視対象タスクに対してキープアライブイベントを再送信する例を示す。図8(D)が示すように、被監視対象タスクのイベントキューの先頭にはキープアライブイベント以外のイベントが格納されており、被監視対象タスクは、キープアライブイベントが駆動中の状態である。すなわち、図8(D)が示す被監視対象タスクは、正常動作中である。このとき、被監視対象タスクは、キープアライブイベントの駆動中であることから、タスク動作状態監視用タスクHは、さらに追加して被監視対象タスクにキープアライブイベントを再送信する必要はない。そこで、図8(D)が示す被監視対象タスクの場合、タスク動作状態監視用タスクHは、キープアライブイベントを被監視対象タスクに再送信しない。
なお、ステップS8の処理において、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信していない場合に、タスク動作状態監視用タスクHは、すべての被監視対象タスクに対するキープアライブイベントの再送信処理を開始するようにしたが、このような場合に限られず、タスク動作状態監視用タスクLにCPUが割り当てられていない場合に、すべての被監視対象タスクに対するキープアライブイベントの再送信処理を開始するようにしてもよい。
ステップS10において、制御部41のCPUは、タスク動作状態監視用タスクHを実行し、キープアライブイベントの再送信中に輻輳状態の被監視対象タスクを検出したか否かを判定する。図8(E)は、被監視対象タスクのイベントキューの先頭に格納されるイベントがキープアライブイベントであり、かつ、被監視対象タスクが駆動する最中のイベントがあり、駆動中のイベントがキープアライブイベント以外のイベントである被監視対象タスクに対してキープアライブイベントを再送信する例を示す。図8(E)が示すように、被監視対象タスクのイベントキューの先頭にはキープアライブイベントが格納されており、被監視対象タスクは、キープアライブイベント以外のイベントが駆動中の状態である。すなわち、図8(E)が示す被監視対象タスクは、ステップS5において被監視対象タスクが受信するキープアライブイベントを駆動することができず、キープアライブイベント以外のイベントの駆動によって輻輳状態に陥っており、異常動作の状態ある。タスク動作状態監視用タスクHは、図8(E)が示す被監視対象タスクにキープアライブイベントを再送信する場合に、輻輳状態の被監視対象タスクを検出したと判定する。これにより、本実施形態に係る情報処理装置としての携帯電話機1は、携帯電話機1内のシステムで輻輳状態のタスクを特定することができる。
ステップS10において制御部41のCPUが、キープアライブイベントの再送信中に輻輳状態の被監視対象タスクを検出したと判定した場合、制御部41のCPUはステップS11で、タスク動作状態監視用タスクHを実行し、携帯電話機1のシステムをリセットする。すなわち、制御部41のCPUは、携帯電話機1の電源を一旦落とし、携帯電話機1のシステムを再起動する。これにより、携帯電話機1のシステムの異常動作を回避することができる。
ステップS10において制御部41のCPUが、キープアライブイベントの再送信中に輻輳状態の被監視対象タスクを検出していないと判定した場合、制御部41のCPUはステップS12で、タスク動作状態監視用タスクHを実行し、すべての被監視対象タスク(図5の場合、被監視対象タスクA乃至G)に対するキープアライブイベントの再送信処理が終了したか否かを判定する。ステップS12において制御部41のCPUがすべての被監視対象タスクに対するキープアライブイベントの再送信処理が終了していないと判定した場合、処理はステップS10に戻り、ステップS10以降の処理が繰り返し実行される。これにより、携帯電話機1は、輻輳状態の被監視対象タスクが特定されるまでキープアライブイベントの再送信処理を行うことができる。
一方、ステップS12において制御部41のCPUがすべての被監視対象タスクに対するキープアライブイベントの再送信処理が終了したと判定した場合、制御部41のCPUはステップS13で、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信したか否かを判定する。ステップS13において制御部41のCPUは、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信したと判定した場合、制御部41のCPUはステップS14で、輻輳状態になりつつあった被監視対象タスクが正常な状態に復帰し、すべての被監視対象タスクが正常に動作していると認識し、携帯電話機1のシステムの輻輳状態が解消したと認識する。その後、処理はステップS1に戻り、ステップS1以降の処理が繰り返し実行される。一方、ステップS13において御部41のCPUは、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信していないと判定した場合、制御部41のCPUは、輻輳状態になりつつあった被監視対象タスクがまだ正常な状態に復帰していないと認識し、タスク動作状態監視用タスクHがキープアライブイベントを送信するすべての被監視対象タスクから、キープアライブイベントに対する応答を受信するまで待機する。
本実施形態に係る情報処理装置としての携帯電話機1は、優先度が設けられる複数のタスクが並行して処理されるマルチタスク処理において、複数のタスクに含まれるそれぞれの被監視対象タスクに対して、キープアライブ動作によってキープアライブイベントを送信し、被監視対象タスクに対してキープアライブイベントが送信されてから所定の時間が経過した場合、すべての被監視対象タスクからキープアライブイベントに対する応答があるか否かを判定し、少なくともいずれか1つ以上の被監視対象タスクから前記キープアライブイベントに対する応答がないと判定された場合、それぞれの被監視対象タスクに対して、キープアライブ動作によってキープアライブイベントを再送信し、被監視対象タスクに対するキープアライブイベントの再送信中に輻輳状態の被監視対象タスクを検出し、輻輳状態の被監視対象タスクが検出された場合、情報処理装置としての携帯電話機1のシステムをリセットして再起動することができる。これにより、並列して処理される複数のタスクの中で低優先度のタスクの動作を阻害する高優先度のタスクを明確に特定し、携帯電話機1のシステムをリセットすることができる。これにより、本実施形態に係る情報処理装置としての携帯電話機1は、システムの異常動作を回避することができ、並列処理される被監視対象タスクが無限ループに陥ったとしても、被監視対象タスクの外部から被監視対象タスクの異常を検出することができる。また、携帯電話機1のシステムおよび輻輳状態となったタスクのデバック効率を向上させることができる。
なお、図6のタスク動作状態監視処理の場合、タスク動作状態監視用タスクHは、キープアライブイベントの再送信中に輻輳状態の被監視対象タスクを1つでも検出すると、直ちに携帯電話機1のシステムをリセットするようにしたが、このような場合に限られず、キープアライブイベントの再送信中に輻輳状態の被監視対象タスクをすべて検出してから携帯電話機1のシステタスク動作状態監視用タスクHは、キープアライブイベントの再送信中に輻輳状態の被監視対象タスクを検出すると、携帯電話機1のシステムをリセットする前に、輻輳状態の被監視対象タスクに関する情報を記憶部40に記憶させるようにしてもよい。この場合におけるタスク動作状態監視処理は、図9のフローチャートに示される。
図9のフローチャートを参照して、図3の携帯電話機1における他のタスク動作状態監視処理について説明する。なお、図9の処理は基本的に図6の処理と同様であり、重複する部分については省略する。
ステップS111において、制御部41のCPUは、タスク動作状態監視用タスクHを実行し、検出された輻輳状態の被監視対象タスクに関する情報を記憶部42に記憶させる。これにより、輻輳状態の被監視対象タスクに関するログを残すことができ、携帯電話機1内のシステムやタスクのデバックを効率的に行うことができる。
なお、本発明の実施形態において説明した一連の処理は、ソフトウェアにより実行させることもできるが、ハードウェアにより実行させることもできる。
また、本発明の実施形態では、フローチャートのステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。