JPWO2008114525A1 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JPWO2008114525A1
JPWO2008114525A1 JP2009505092A JP2009505092A JPWO2008114525A1 JP WO2008114525 A1 JPWO2008114525 A1 JP WO2008114525A1 JP 2009505092 A JP2009505092 A JP 2009505092A JP 2009505092 A JP2009505092 A JP 2009505092A JP WO2008114525 A1 JPWO2008114525 A1 JP WO2008114525A1
Authority
JP
Japan
Prior art keywords
thread
monitoring
group
threads
priority
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2009505092A
Other languages
English (en)
Other versions
JP5152175B2 (ja
Inventor
保彦 阿部
保彦 阿部
正彦 南雲
正彦 南雲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009505092A priority Critical patent/JP5152175B2/ja
Publication of JPWO2008114525A1 publication Critical patent/JPWO2008114525A1/ja
Application granted granted Critical
Publication of JP5152175B2 publication Critical patent/JP5152175B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0742Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in a mobile device, e.g. mobile phones, handheld devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本発明に係る情報処理装置に適用可能な携帯電話機においては、主制御部のCPUは監視スレッド1乃至3を実行し、優先度が設けられた複数のスレッドからなるグループを、グループ内のスレッドの動作を監視するための複数の監視スレッドに対するキープアライブ動作によって監視し、複数の前記監視スレッドからの応答に基づいて、キープアライブ動作に対する応答がない前記監視スレッドが存在するか否かを判定し、キープアライブ動作に対する応答がない前記監視スレッドが存在すると判定された場合、キープアライブ動作に対する応答がない前記監視スレッドが監視するグループよりも優先度が高いグループへのイベントの配信を停止する。

Description

本発明は情報処理装置に係り、特に、複数のスレッドの処理を並行して行うマルチスレッド処理を実行することができるようにした情報処理装置に関する。
近年、情報処理装置としての携帯電話機には、単なる通話による通信機能だけでなく、アドレス帳機能、基地局やインターネットなどのネットワークを介したメール機能や、Webページなどを閲覧することが可能なブラウザ機能などの種々の機能が搭載されるようになってきている。
これに伴い、例えばパーソナルコンピュータだけでなく携帯電話機においても、OS(Operating System)にTSS(Time Sharing System)制御機能を搭載し、制御メモリ空間やI/O空間の資源などを共有しつつ、同一のプロセス内において複数のスレッドの処理を並行して行うマルチスレッド方式が提案されている(例えば特許文献1参照)。
特許文献1に提案されている技術によれば、OSのTSSスケジューラの実装に依存せずに、CPUを最大限に使用し、呼処理イベントの処理を実行することができる。
特開2006−185303号公報
しかしながら、ラウンドロビン機能やTSS制御機能が搭載されていないOS環境下では、発生したイベントを処理する場合、一般に、イベントドリブンに生成されたそれぞれのスレッドの優先度に従って処理するが、いくつかのスレッドによりCPUの資源が占有されてしまうと、その他のスレッドの処理が実行されない状況が発生してしまう。
すなわち、優先度の高いスレッド間における処理が連続して行われると、優先度の高い複数のスレッドによりCPUの資源が占有されてしまい、優先度の低いスレッドにCPUの資源が回らず、その結果、優先度の低いスレッドの処理が実行されない状況が発生してしまう。このため、優先度の低いスレッドの処理がたまってしまい、システムが破綻してしまうという課題があった。
このような課題は、特許文献1に提案されている技術によっては解決することはできない。
発明の開示
本発明は、このような状況に鑑みてなされたものであり、ラウンドロビン機能やTSS制御機能を用いずにOS上に構築されたアプリケーションプログラム群を効率よく制御することができる情報処理装置を提供することを目的とする。
本発明の情報処理装置は、上述した課題を解決するために、優先度が設けられた複数のスレッドからなるグループを、グループ内のスレッドの動作を監視するための複数の監視スレッドに対するキープアライブ動作によって監視する監視手段と、複数の監視スレッドからの応答に基づいて、キープアライブ動作に対する応答がない監視スレッドが存在するか否かを判定する第1の判定手段と、第1の判定手段によりキープアライブ動作に対する応答がない監視スレッドが存在すると判定された場合、キープアライブ動作に対する応答がない監視スレッドが監視するグループよりも優先度が高いグループへのイベントの配信を停止する第1の停止手段とを備えることを特徴とする。
本発明の情報処理装置は、上述した課題を解決するために、優先度が設けられた複数のスレッドからなるグループを、グループ内のスレッドの動作を監視するための複数の監視スレッドに対するキープアライブ動作によって監視する監視手段と、複数の監視スレッドからの応答に基づいて、キープアライブ動作に対する応答がない監視スレッドが存在するか否かを判定する第1の判定手段と、第1の判定手段によりキープアライブ動作に対する応答がない監視スレッドが存在すると判定された場合、キープアライブ動作に対する応答がない監視スレッドが監視するグループまたはそのグループよりも優先度が高いグループに含まれる少なくとも1つ以上のスレッドの優先度を変更する優先度変更手段とを備えることを特徴とする。
本発明の情報処理装置においては、優先度が設けられた複数のスレッドからなるグループが、グループ内のスレッドの動作を監視するための複数の監視スレッドに対するキープアライブ動作によって監視され、複数の監視スレッドからの応答に基づいて、キープアライブ動作に対する応答がない監視スレッドが存在するか否かが判定され、キープアライブ動作に対する応答がない監視スレッドが存在すると判定された場合、キープアライブ動作に対する応答がない監視スレッドが監視するグループよりも優先度が高いグループへのイベントの配信が停止される。
本発明の情報処理装置においては、優先度が設けられた複数のスレッドからなるグループが、グループ内のスレッドの動作を監視するための複数の監視スレッドに対するキープアライブ動作によって監視され、複数の監視スレッドからの応答に基づいて、キープアライブ動作に対する応答がない監視スレッドが存在するか否かが判定され、キープアライブ動作に対する応答がない監視スレッドが存在すると判定された場合、キープアライブ動作に対する応答がない監視スレッドが監視するグループまたはそのグループよりも優先度が高いグループに含まれる少なくとも1つ以上のスレッドの優先度が変更される。
本発明によれば、ラウンドロビン機能やTSS制御機能が搭載されていないOS上に構築されたアプリケーションプログラム群を効率よく制御することができる。
は、本発明に係る情報処理装置に適用可能な携帯電話機の外観の構成を示す外観図である。 は、本発明に係る情報処理装置に適用可能な携帯電話機の他の外観の構成を示す外観図である。 は、本発明に係る情報処理装置に適用可能な携帯電話機の内部の構成を示すブロック図である。 は、優先度の低いスレッドの処理がたまることにより生じるシステムの破綻を説明するための説明図である。 は、スレッドのグループ分けの方法を説明するための説明図である。 は、図3の携帯電話機におけるイベント配信制御処理を説明するフローチャートである。 は、スレッドの優先度の変更の概念を説明する説明図である。 は、図3の携帯電話機におけるスレッド優先度変更処理を説明するフローチャートである。 は、スレッドの優先度の変更の概念を説明する説明図である。 は、図3の携帯電話機における他のスレッド優先度変更処理を説明するフローチャートである。 は、図3の携帯電話機における他のイベント配信制御処理を説明するフローチャートである。
以下、本発明の実施の形態について、図面を参照しながら説明する。図1は、本発明に係る情報処理装置として適用可能な携帯電話機1の外観の構成を表している。なお、図1(A)は、携帯電話機1を約180度に見開いたときの正面から見た外観の構成を表しており、図1(B)は、携帯電話機1を見開いたときの側面から見た外観の構成を表している。
図1(A)および(B)に示されるように、携帯電話機1は、中央のヒンジ部11を境に第1の筐体12と第2の筐体13とがヒンジ結合されており、ヒンジ部11を介して矢印X方向に折り畳み可能に形成される。携帯電話機1の内部の所定の位置には、送受信用のアンテナ(後述する図3のアンテナ44)が設けられており、内蔵されたアンテナを介して基地局(図示せず)との間で電波を送受信する。
第1の筐体12には、その表面に「0」乃至「9」の数字キー、発呼キー、リダイヤルキー、終話・電源キー、クリアキー、および電子メールキーなどの操作キー14が設けられており、操作キー14を用いて各種指示を入力することができる。
第1の筐体12には、操作キー14として上部に十字キーと確定キーが設けられており、ユーザが十字キーを上下左右方向に操作することにより当てられたカーソルを上下左右方向に移動させることができる。具体的には、第2の筐体13に設けられた液晶ディスプレイ17に表示されている電話帳リストや電子メールのスクロール動作、簡易ホームページのページ捲り動作および画像の送り動作などの種々の動作を実行する。
また、確定キーを押下することにより、種々の機能を確定することができる。例えば第1の筐体12は、ユーザによる十字キーの操作に応じて液晶ディスプレイ17に表示された電話帳リストの複数の電話番号の中から所望の電話番号が選択され、確定キーが第1の筐体12の内部方向に押圧されると、選択された電話番号を確定して電話番号に対して発呼処理を行う。
さらに、第1の筐体12には、十字キーと確定キーの左隣に電子メールキーが設けられており、電子メールキーが第1の筐体12の内部方向に押圧されると、メールの送受信機能を呼び出すことができる。十字キーと確定キーの右隣には、ブラウザキーが設けられており、ブラウザキーが第1の筐体12の内部方向に押圧されると、Webページのデータを閲覧することが可能となる。なお、十字キーと確定キーの左右隣に設けられた電子メールキーおよびブラウザキーは、液晶ディスプレイ17に表示される画面により例えば「Yes」や「No」などの種々の機能をもつことが可能であるため、それぞれ、soft1キーおよびsoft2キーと呼ばれる。
また、第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が設けられており、これにより、ユーザは音声通話することが可能である。
図2は、本発明に係る情報処理装置として適用可能な携帯電話機1の他の外観の構成を表している。図2の携帯電話機1の状態は、図1の携帯電話機1の状態から矢印X方向に回動させた状態である。なお、図2(A)は、携帯電話機1を閉じたときの正面から見た外観の構成を表しており、図2(B)は、携帯電話機1を閉じたときの側面から見た外観の構成を表している。
第2の筐体13の上部には、CCDカメラ20が設けられており、これにより、所望の撮影対象を撮像することができる。CCDカメラ20の下部には、サブディスプレイ21が設けられており、現在のアンテナの感度のレベルを示すアンテナピクト、携帯電話機1の現在の電池残量を示す電池ピクト、現在の時刻などが表示される。
サブディスプレイ21の下部には、さらに、静電タッチパッド23が設けられる。静電タッチパッド22は、見かけ上一枚のタッチパッドになっているが、図示せぬセンサが複数個所に設けられており、ユーザがセンサの付近をタッチすると、センサがそれを検知し、巻戻し機能、早送り機能、音量ダウン動作、音量アップ動作、再生動作、および一時停止動作などが実行される。
図3は、本発明に係る情報処理装置として適用可能な携帯電話機1の内部の構成を表している。図3に示されるように、携帯電話機1は、第1の筐体12及び第2の筐体13の各部を統括的に制御する主制御部31に対して、電源回路部32、操作入力制御部33、画像エンコーダ34、カメラインタフェース部35、LCD(Liquid Crystal Display)制御部36、多重分離部38、変復調回路部39、音声コーデック40、記憶部47、および音楽制御部48がメインバス41を介して互いに接続されるとともに、画像エンコーダ34、画像デコーダ37、多重分離部38、変復調回路部39、音声コーデック40、および記録再生部45が同期バス42を介して互いに接続されて構成される。
主制御部31は、CPU(Central Processing Unit)、ROM(Read Only Memory)、およびRAM(Random Access Memory)などからなり、CPUは、ROMに記憶されているプログラムまたは記憶部47からRAMにロードされた、オペレーティングシステム(OS)を含む各種のアプリケーションプログラムに従って各種の処理を実行するとともに、種々の制御信号を生成し、各部に供給することにより携帯電話機1を統括的に制御する。RAMは、CPUが各種の処理を実行する上において必要なデータなどを適宜記憶する。なお、主制御部31には、現在の日付と時刻を正確に計測するタイマが内蔵されている。
携帯電話機1は、主制御部31の制御に基づいて、音声通話モード時にマイクロフォン15で集音した音声信号を音声コーデック40によってディジタル音声信号に変換、圧縮し、これを変復調回路部39でスペクトラム拡散処理し、送受信回路部43でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナ44を介して送信する。
また、携帯電話機1は、音声通話モード時にアンテナ44で受信した受信信号を増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部39でスペクトラム逆拡散処理し、音声コーデック40によって伸張し、アナログ音声信号に変換した後、変換されたアナログ音声信号をスピーカ18を介して出力する。
携帯電話機1は、データ通信モード時に画像信号を送信する場合、CCDカメラ20で撮像された画像信号をカメラインタフェース部35を介して画像エンコーダ34に供給する。
画像エンコーダ34は、CCDカメラ20から供給された画像信号を、例えばMPEG(Moving Picture Experts Group)4などの所定の符号化方式によって圧縮符号化することにより符号化画像信号に変換し、変換された符号化画像信号を多重分離部38に送出する。このとき同時に携帯電話機1は、CCDカメラ20で撮像中にマイクロフォン15で集音した音声を音声コーデック40を介してディジタルの音声信号として多重分離部38に送出する。
多重分離部38は、画像エンコーダ34から供給された符号化画像信号と音声コーデック40から供給された音声信号とを所定の方式で多重化し、その結果得られる多重化信号を変復調回路部39でスペクトラム拡散処理し、送受信回路部43でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナ44を介して送信する。これに対して、携帯電話機1では、データ通信モード時に、Webページのデータを受信することができる。
また、携帯電話機1は、データ通信モード時に例えばWebページなどにリンクされた動画像ファイルのデータを受信する場合、アンテナ44を介して基地局(図示せず)から受信した受信信号を変復調回路部39でスペクトラム逆拡散処理し、その結果得られる多重化信号を多重分離部38に送出する。
多重分離部38は、多重化信号を分離することにより符号化画像信号と音声信号とに分け、同期バス42を介して符号化画像信号を画像デコーダ37に供給すると共に音声信号を音声コーデック40に供給する。画像デコーダ37は、符号化画像信号をMPEG4などの所定の符号化方式に対応した復号化方式でデコードすることにより再生動画像信号を生成し、生成された再生動画像信号をLCD制御部36を介して液晶ディスプレイ17に供給する。これにより、例えば、Webページなどにリンクされた動画像ファイルに含まれる動画像データが表示される。
このとき同時に音声コーデック40は、音声信号をアナログ音声信号に変換した後、これをスピーカ18に供給し、これにより、例えば、Webページなどにリンクされた動画像ファイルに含まる音声信号が再生される。
記憶部47は、例えば、電気的に書換えや消去が可能な不揮発性メモリであるフラッシュメモリ素子やHDD(Hard Disc Drive)などからなり、主制御部31のCPUにより実行される種々のアプリケーションプログラムや種々のデータ群を格納している。
音楽制御部48は、記憶部47に記憶されているオーディオデータの再生動作および一時停止動作や、巻戻し機能、早送り機能、音量ダウン動作、音量アップ動作などの実行を制御する。
ところで、ラウンドロビン機能やTSS制御機能が搭載されていないOS環境下では、発生したイベントを処理する場合、一般に、イベントドリブンに生成されたそれぞれのスレッドの優先度に従って処理するが、いくつかのスレッドにより主制御部31のCPUの資源が占有されてしまうと、その他のスレッドの処理が実行されない状況が発生してしまう。
すなわち、優先度の高いスレッド間における処理が連続して行われると、優先度の高い複数のスレッドにより主制御部31のCPUの資源が占有されてしまい、優先度の低いスレッドに主制御部31のCPUの資源が回らず、その結果、優先度の低いスレッドの処理が実行されない状況が発生してしまう。このために、優先度の低いスレッドの処理がたまってしまい、システムが破綻してしまう。
具体的には、例えば図4に示されるように、イベント配信制御スレッドが優先度が高い順からスレッドA、スレッドB、スレッドC、…のうちの一部のスレッドに対して制御している場合に、例えば、スレッドCがソフトタイマを使用して周期的に時刻をスレッドHから取得するスレッド(イベント配信制御スレッドによる制御を受けるスレッド)であり、スレッドDはキーの入力を受け付けるスレッド(イベント配信制御スレッドによる制御を受けるスレッド)であり、スレッドFは表示画面の更新及びその他のキーイベントに伴う処理を行うスレッド(イベント配信制御スレッドによる制御を受けるスレッド)であり、一方、スレッドEは、スレッドHが管理している音データを読み出して鳴動させるスレッド(イベント配信制御スレッドによる制御を受けないスレッド)であるケースを想定する。また、スレッドFはキーの入力に伴うキータッチ音を鳴らすために、スレッドEに鳴動依頼を通知し、鳴動依頼後応答を待たずに描画を行うことができるスレッドである。また、スレッドEは、そのキー鳴動依頼を受けて、スレッドHが管理しているキータッチ音の音データを読み出すことを行うスレッドである。
このようなアプリケーションプログラムのシステムにおいて、ユーザがキーの入力をすばやく連続的に押下すると、第1に、ユーザによるキーの押下によるキーの入力の割り込みが発生し、スレッドDは発生したキーイベントをスレッドFに供給する。第2に、スレッドFは、キータッチ音を鳴音させるための鳴動依頼をスレッドEに通知するとともに、その鳴動依頼の応答を待たずに、押下されたキーイベントを処理してそのイベントに対応する表示画面の書き換えを行う。第3に、スレッドEは、スレッドFからの鳴動依頼を受け取ると、音を鳴らすために必要な音データをスレッドHに対して読み出す要求を行う。第4に、スレッドHはスレッドEから音データの読み出し要求を受け、スレッドEに対して音データを送信する。第5に、スレッドEは、音声コーデック40とスピーカ18を制御し、キータッチ音を鳴らさせる。
ところが、ユーザがキーの入力をすばやく長時間連続的に押下すると、ユーザによるキー押下が第3の処理であるスレッドEによる読み出し処理の完了よりも早く行われてしまい、スレッドの優先度のためにスレッドHが動作できず、第4、第5の処理が実行されない。一方、ユーザによるキー押下は連続的に行われるために、スレッドDからスレッドFへのイベントは行われるが、スレッドFからスレッドEへの鳴動依頼の通知処理は行われず、システム的にイベントがプールされてしまい、その結果、システムリソースが用い尽くされてしまうと、システムが破綻してしまう。換言すれば、スレッドEによるキータッチ音が鳴らないにもかかわらず、スレッドFによる表示画面の更新処理だけが行われてしまう。
勿論、スレッドEにおいて受け付けるイベントの上限を予め決めておき、上限を超えて受け付けられたイベントを破棄する処理を追加するようにしてもよいが、結局、スレッドD乃至Fの処理により主制御部31のCPUの資源が占有されてしまう。さらには、スレッドEにおいてイベント破棄処理を行うようにすると、画面遷移と音の鳴動にずれが生じてしまう。そこで、スレッドDにおいて受け付けるイベントの上限を予め決めておくようにした場合も考えられるが、これも実際CPUの資源が占有されるのは音制御のスレッドEであり、スレッドDとスレッドEとの関係を厳密に把握しない限り無駄なイベント破棄が行われてしまう可能性があり、妥当ではない。
また、スレッドD乃至Fの処理にCPUの資源を占有される状態が継続すると、例えばユーザによる押下に伴うキー入力のイベントとは非同期の時刻変更処理を行っているスレッドCは、スレッドHから時刻を取得することができず、時刻変更処理が実行されず、時刻が更新されない。このような場合、システム的には破綻していなくても、ユーザにとって不便となってしまう。また、時刻変更処理ではなく、スレッドの網側との同期を行う処理であった場合には、網同期が外れてしまうことになる。
また、同様の状況は、例えばユーザが音楽制御部48を用いてオーディオデータを聴きながら、例えば図示せぬ基地局などを介してブラウジングする際にも発生し得る。
そこで、スレッド動作を監視する監視スレッドを新たに設け、この監視スレッドによってスレッド動作を一定時間(例えば5秒間や10秒間など)ごとに監視し、どの辺りのスレッド間において主制御部31のCPUの資源が占有されているか否かを判定するとともに、主制御部31のCPUの資源が占有されていると判定された場合、主制御部31のCPUの資源が占有されていると判定されたスレッド間へのイベントの配信を一時的に停止するようにする。
しかしながら、既存のアプリケーションプログラムが生成するスレッドの中には、例えば図4に示されるように、イベントの配信を制御することが可能なイベント配信制御対象のもの(例えばスレッドA、スレッドC、スレッドD、スレッドF、スレッドG、スレッドIなど)と、イベントの配信を制御することができないイベント配信制御非対象のもの(例えばスレッドB、スレッドE、スレッドHなど)の2種類が存在する。そのため、単純に、監視スレッドによってスレッド動作を一定時間ごとに監視しさえすれば、どの辺りのスレッド間において主制御部31のCPUの資源が占有されているか否かを容易に判定することができるわけではない。
そこで、どの辺りのスレッド間において主制御部31のCPUの資源が占有されているか否かを容易に判定することができるように、所定のアルゴリズムを用いて、存在するスレッドを予め複数のグループにグループ分けする。例えば図5に示されるように、非同期のイベントを受けて処理を行うスレッドとそのスレッドにより処理が発生するスレッド、あるいは、イベント配信制御対象のスレッドとイベント配信制御非対象のスレッドなどを複数のグループ(例えばグループ1乃至グループ3)などに分ける。
そして、各グループ(例えばグループ1乃至グループ3)におけるスレッド動作を監視するために、各グループの最低優先度のスレッドの下に監視用のスレッドである監視スレッド(例えば監視スレッド1乃至3)を配置し、配置された監視スレッド(例えば監視スレッド1乃至3)を用いて、グループごとにスレッド動作が回っているか否かを監視する。例えば、監視スレッド1乃至3がイベント配信制御スレッドに対して応答を返す動作を行うことによって、イベント配信制御スレッドは、それらの監視スレッドまでスレッド動作が回っているか否かを監視する。
ある1つのグループにおいてスレッド動作が回っていない(例えば、監視スレッド1からの応答はあるが監視スレッド2からの応答が無く、グループ1のスレッドの処理が回っているが、グループ2のスレッドの処理が回っていないと判断する)と判定された場合、その監視スレッドが監視するグループの1つ上の(1つ優先度の高い)グループ内の各スレッド(例えば監視スレッド1からの応答があり、監視スレッド2からの応答が無ければグループ1)に対してイベントを配信することを停止し、下位のグループに処理を回すようにする。
これにより、ラウンドロビン機能やTSS制御機能が搭載されていないOS上に構築されたアプリケーションプログラム群を効率よく制御することが可能となる。以下、この方法を用いたイベント配信制御処理について説明する。
図6のフローチャートを参照して、図3の携帯電話機1におけるイベント配信制御処理について説明する。なお、このイベント配信制御処理に並行して、キープアライブ格納処理が実行される。具体的には、イベント配信制御スレッドからイベントが配信されるスレッドは、他のスレッドからの通信をイベント配信制御スレッドから受け取る。このとき、イベント配信制御において定期的に配信制御対象となるスレッドに対してイベントを配信する際に、イベント配信制御スレッドからのイベントキューの先頭にキープアライブに関するイベントを設定(格納)しておく。このような処理を「キープアライブ格納処理(キープアライブ動作)」と定義する。
イベントキューからイベントを取り出す処理をイベント配信制御スレッド側で提供するようにすれば、どのようなイベントが取り出されたか否かを把握することができることから、キープアライブに関するイベントを取り出すときに存在確認処理を行うとともに、このキープアライブに関するイベントを破棄するようにする。これにより、監視対象のスレッドに負荷をかけることなく、存在確認を行うことができる。すなわち、イベント配信制御において定期的に配信制御対象となるスレッドの配信イベントの先頭に特定のメッセージを含めておき、このメッセージが配信制御によって監視スレッド1乃至3に対する配信対象となったか否かにより、スレッドの処理が回っているかを判断することができる。主制御部31のCPUは、イベント配信制御スレッドを実行し、予め設定された所定の時間(例えば5秒間や10秒間など)ごとに、監視スレッド(例えば監視スレッド1乃至3)の最初のイベントキュー(図示せず)にキープアライブのイベントを格納する。このとき、例えば監視スレッド1→監視スレッド2→監視スレッド3の順にキープアライブのイベントが格納される。なお、監視スレッド1、2、3に対して同時あるいはほぼ同時にイベントを格納するようにしてもよい。
ステップS1において、主制御部31のCPUは、イベント配信制御スレッドを実行し、キープアライブのイベント(キープアライブに関するイベント)の格納後から所定の時間(例えば5秒間や10秒間)が経過するまで間に、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答(キープアライブ動作に対する応答)がない監視スレッドが存在するか否かを判定し、キープアライブに対する応答がない監視スレッドが存在する判定するまで待機する。
例えば、上述したように、ユーザがキーの入力をすばやく長時間連続的に押下するとスレッドの優先度のためにスレッドHが動作できず、第5の処理が実行されない一方、スレッドDからスレッドFへのイベントは行われるが、スレッドFからスレッドEへの鳴動依頼の通知処理は行われないことから、グループ2内のスレッドD乃至Fにより主制御部31のCPUの資源が占有されており、監視スレッド2は動作できない。そのため、監視スレッド2からキープアライブに対する応答がなされず、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッド(監視スレッド2)が存在すると判定される。
なお、ステップS1においていずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在しないと判定された場合、処理はステップS1に戻り、ステップS1以降の処理が繰り返し実行される。すなわち、再度、主制御部31のCPUによりイベント配信制御スレッドが実行され、予め設定された所定の時間(例えば5秒間や10秒間など)ごとに、監視スレッド(例えば監視スレッド1乃至3)の最初のイベントキューにキープアライブのイベントが格納される。
ステップS1においていずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在すると判定された場合、主制御部31のCPUはステップS2で、イベント配信制御スレッドを実行し、キープアライブに対する応答がない監視スレッドが監視するグループの1つ上の(1つ前の)グループへのイベントの配信を停止する。
例えば、上述したように、グループ2内のスレッドD乃至Fにより主制御部31のCPUの資源が占有されており、監視スレッド2は動作できない場合、キープアライブに対する応答がない監視スレッド2が監視するグループ2の1つ上の(1つ前の)グループ1へのイベントの配信が停止される。
これにより、イベント配信制御対象スレッドによってイベント配信制御非対象スレッドの処理が阻害されている場合に、この阻害されている状況を解消することができる。
ステップS3において、主制御部31のCPUは、イベント配信制御スレッドを実行し、キープアライブに対する応答がない監視スレッドが監視するグループの1つ上の(1つ前の)グループへのイベントの配信が停止された後、キープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになったか(回復したか)否かを判定する。なお、この判定は、監視スレッドが監視するグループの1つ上のグループへのイベントの配信が停止されてから所定時間後、または、キープアライブのイベントを格納してから所定時間後に判定するようにすることが望ましい。
例えば、上述したように、グループ2内のスレッドD乃至Fにより主制御部31のCPUの資源が占有されており、監視スレッド2は動作できない場合に、キープアライブに対する応答がない監視スレッド2が監視するグループ2の1つ上の(1つ前の)グループ1へのイベントの配信が停止された後、キープアライブに対する応答がなかった監視スレッド2からキープアライブに対する応答がくるようになったか(回復したか)否かが判定される。
ステップS3においてキープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになったと判定された場合、主制御部31のCPUはステップS4で、キープアライブに対する応答がなかった監視スレッドにより監視されるグループ内のスレッド動作が回るように改善され、キープアライブに対する応答がなかった監視スレッドの動作が改善されたと認識し、キープアライブに対する応答がなかった監視スレッドが監視するグループの1つ上の(1つ前の)グループへのイベントの配信の停止を解除する。
例えば、キープアライブに対する応答がない監視スレッド2が監視するグループ2の1つ上の(1つ前の)グループ1へのイベントの配信が停止された場合、キープアライブに対する応答がなかった監視スレッド2からキープアライブに対する応答がくるようになったと判定されると、グループ1へのイベントの配信の停止が解除される。
ステップS3においてキープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答が依然としてくるようになっていないと判定された場合、主制御部31のCPUはステップS5で、イベント配信制御スレッドを実行し、キープアライブに対する応答がない監視スレッドが監視するグループへのイベントの配信を停止する。
例えば、上述したように、グループ2内のスレッドD乃至Fにより主制御部31のCPUの資源が占有されており、監視スレッド2が動作できず、グループ1へのイベントの配信が停止されたにもかかわらず、監視スレッド2からキープアライブに対する応答が依然としてくるようになっていないと判定されると、監視スレッド2が監視するグループ2へのイベントの配信が停止される。
これにより、スレッドD乃至Fにすでに配信されているイベントの処理が行われるとともに、スレッドの優先度のために保留されていたスレッドHの動作が開始され、第4の処理であるキータッチ音の鳴音処理が実行される。
しかし、イベント配信制御スレッドによる所定の監視時間よりも、保留されていたスレッドHの動作の処理時間の方が長い場合、今度は、グループ3内のスレッド動作を監視する監視スレッドの動作ができなくなる。そこで、再度、キープアライブに対する応答がない監視スレッドが存在するか否かを判定する。
ステップS6において、主制御部31のCPUは、イベント配信制御スレッドを実行し、キープアライブのイベントの格納後から所定の時間(例えば5秒間や10秒間)が経過するまで間に、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在するか否かを判定する。
例えばイベント配信制御スレッドによる所定の監視時間よりも、保留されていたスレッドHの動作の処理時間の方が長い場合、今度は、グループ3内のスレッド動作を監視する監視スレッド3の動作ができなくなることから、監視スレッド3は動作できないために監視スレッド3からキープアライブに対する応答がなされず、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在すると判定される。
一方、例えばイベント配信制御スレッドによる所定の監視時間よりも、保留されていたスレッドHの動作の処理時間の方が短い場合、保留されていたスレッドHの動作の処理後に、グループ3内のスレッド動作を監視する監視スレッド3の動作ができることから、監視スレッド3からキープアライブに対する応答がなされ、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在しないと判定される。
ステップS6においてキープアライブに対する応答がない監視スレッドが存在しないと判定された場合、処理はステップS1に戻り、ステップS1以降の処理が繰り返される。
これにより、再度、同じような状況が発生したとしても、同様にアプリケーションプログラムのシステム上の輻輳を解消することができる。
一方、ステップS6においてキープアライブに対する応答がない監視スレッドが存在すると判定された場合、処理はステップS5に戻り、ステップS5において主制御部31のCPUによりイベント配信制御スレッドが実行され、キープアライブに対する応答がない監視スレッドが監視するグループへのイベントの配信が停止される。
その後、処理はステップS6以降の処理が繰り返され、予め配置されたすべての監視スレッド(例えば監視スレッド1乃至3など)が動作できるようになった後、すべてのスレッドに対してイベントが適宜に配信される。換言すれば、最低優先度のグループ(図5の場合、グループ3)を監視する監視スレッド3の動作が確認できるまで、同様の処理が順次繰り返され、最低優先度のグループを監視する監視スレッド3の動作が確認できた後、すべてのスレッドに対してイベントが適宜に配信される。
なお、本発明の実施形態においては、説明を簡略化するために、複数のスレッドを大きく3つのグループ(例えばグループ1乃至3)に分けた上で、イベント配信制御処理を行うようにしたが、このような場合に限られず、2または4つ以上のグループ分けを行うようにしてもよい。また、1つのグループ中のイベント配信制御非対象のスレッドを1つのスレッドとして扱うようにしてもよい。
本発明の実施形態においては、各グループの最低優先度のスレッドの下に監視用のスレッドである監視スレッド(例えば監視スレッド1乃至3)を配置し、配置された監視スレッド(例えば監視スレッド1乃至3)を用いて、グループごとにスレッド動作が回っているか否かを監視し、キープアライブのイベントの格納後から所定の時間(例えば5秒間や10秒間)が経過するまで間に、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在するか否かを判定するとともに、キープアライブに対する応答がない監視スレッドが存在すると判定された場合、キープアライブに対する応答がない監視スレッドが監視するグループの1つ上の(1つ前の)グループへのイベントの配信を停止することができる。
そして、キープアライブに対する応答がない監視スレッドが監視するグループの1つ上の(1つ前の)グループへのイベントの配信が停止された後、キープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになったか(回復したか)否かを判定し、そのグループへのイベントの配信が停止された後、キープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになった(回復した)と判定された場合、そのグループへのイベントの配信の停止を解除する一方、そのグループへのイベントの配信が停止された後、キープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになっていない(回復していない)と判定された場合、キープアライブに対する応答がない(回復していない)監視スレッドが監視するグループへのイベントの配信を停止することができる。
さらに、キープアライブに対する応答がない監視スレッドが監視するグループへのイベントの配信を停止した後、再度繰り返して、キープアライブのイベントの格納後から所定の時間(例えば5秒間や10秒間)が経過するまで間に、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在するか否かを判定し、キープアライブに対する応答がない監視スレッドが存在すると判定された場合、キープアライブに対する応答がない監視スレッドが監視するグループへのイベントの配信を停止することができる。これにより、優先度の高いスレッドに対するイベントの配信を停止するとともに、下位のグループに処理を回すようにすることができる。従って、ラウンドロビン機能やTSS制御機能が搭載されていないOS上に構築されたアプリケーションプログラム群を効率よく制御することができる。
また、タスクの切り替えの際のオーバーヘッドを少なくするとともに、アプリケーションプログラムのシステム上の輻輳を効率よく判定することができる。
その結果、予めグループ分けされたスレッドによる柔軟な優先順位に基づく処理が実装可能となり、また、イベント配信制御対象とイベント配信制御非対象などを含むスレッドのグループ分けを工夫することで柔軟なアプリケーションプログラム群のシステムを構築することができ、既存のアプリケーションプログラムを含めた広範囲なシステムの構築に用いることができる。
ところで、図6のフローチャートを参照して説明したイベント配信制御処理においては、キープアライブに対する応答がない監視スレッド(例えば監視スレッド2など)が存在すると判定された場合、キープアライブに対する応答がない監視スレッド2が監視するグループの1つ上の(1つ前の)グループ(グループ1)へのイベントの配信を停止するようにして、イベント配信制御対象であるスレッドへのイベント配信自体を制御することで、動作ができなくなったスレッドの動作を優先度の高いものから順次完結させるようにした。そのため、動作ができなくなったスレッドの解消に所要の時間がかかり、リアルタイム性をある程度保障する必要がある他のスレッドの動作に影響を及ぼす可能性がある。特に、イベント配信制御非対象のスレッドも存在することから、たとえイベント配信制御対象スレッドに対してイベント配信を停止したとしても、動作ができなくなったスレッドの解消には多少なりともタイムラグが生じてしまう。そこで、ある1つのスレッドがイベント配信制御対象スレッドであるか制御非対象スレッドかに関係なく、そのスレッドが現在動作している最中に、他のスレッドに主制御部31のCPUの資源を割り当てるために、強制的に監視スレッド1の下の優先順位(優先度)に配置するようにするとともに、CPUの資源を割り当てたい他のスレッドの優先順位を相対的に上げるようにする。
具体的には、本発明においては、各アプリケーションプログラムが生成するスレッドに要求されるリアルタイム性に応じて、スレッドに優先順位をつけ、優先順位の高いスレッドから順次動作させるOSを想定している。例えば図7(A)の場合、優先順位が最も高いスレッドにイベント配信制御スレッドが存在し、次に、グループ1に含まれるスレッドA乃至Cが優先順位2乃至4のスレッドとして存在する。そして、グループ1内のスレッドが動作できているか否かを監視する監視スレッド1が優先順位5のスレッドとして配置されている。
このとき、例えばグループ1内の優先順位2のスレッドAがイベント配信制御スレッドから配信される1つのイベントによって例えば1秒間動作し、優先順位3のスレッドBが1つのイベントごとに例えば0.5秒間動作するとした場合、スレッドBがイベントに応じて動作しようとしても、スレッドAによる動作によって主制御部31のCPUの資源が長時間占有されてしまうこともあり、スレッドBの動作に支障をきたしてしまう。その結果、スレッドBの動作はまわらなくなり、監視スレッド1からのキープアライブ動作に対応する応答がイベント配信制御スレッドに対してなされなくなる。
そこで、このような場合、図7(B)に示されるように、スレッドAが現在動作しているにもかかわらず、所要の時間間隔(例えば0.1秒間隔など)で、強制的に監視スレッド1の下の優先順位に配置するようにする。これにより、イベント配信制御スレッド、スレッドA、スレッドB、スレッドC、および監視スレッド1の順の優先順位から、イベント配信制御スレッド、スレッドB,スレッドC、監視スレッド1、およびスレッドAの順の優先順位に変更される。すなわち、スレッドAの優先順位が2位から5位に変更されるとともに、スレッドBとスレッドC、監視スレッド1の優先順位が2位、3位、4位にそれぞれ変更される。その結果、スレッドAの動作により阻害されていたスレッドBの動作が開始され、監視スレッド1からのキープアライブ動作に対応する応答がイベント配信制御スレッドに対してなされるようになる。従って、優先度の高いスレッドの動作を好適なタイミングで抑制することが可能となる。以下、この方法を用いたスレッド優先度変更処理について説明する。
なお、スレッドBによる動作によって主制御部31のCPUの資源が長時間占有されている場合には、スレッドAを監視スレッド1の下に配置するだけでは足りず、図7(C)に示されるように、イベント配信制御非対象のスレッドBも監視スレッド1の下に配置されることとなる。すなわち、イベント配信制御スレッド、スレッドA、スレッドB,スレッドC、および監視スレッド1の順の優先順位から、イベント配信制御スレッド、スレッドC、監視スレッド1、スレッドA、およびスレッドBの順の優先順位に変更される。
図8のフローチャートを参照して、図3の携帯電話機1のスレッド優先度変更処理について説明する。
ステップS11において、主制御部31のCPUは、イベント配信制御スレッドを実行し、キープアライブのイベント(キープアライブに関するイベント)の格納後から所定の時間(例えば5秒間や10秒間)が経過するまで間に、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答(キープアライブ動作に対する応答)がない監視スレッドが存在するか否かを判定し、キープアライブに対する応答がない監視スレッドが存在する判定するまで待機する。
例えばグループ1内の優先順位2のスレッドAがイベント配信制御スレッドから配信される1つのイベントによって例えば1秒間動作し、優先順位3のスレッドBが1つのイベントごとに例えば0.5秒間動作するとした場合、スレッドBがイベントに応じて動作しようとしても、スレッドAによる動作によって主制御部31のCPUの資源が長時間占有されてしまうこともあり、スレッドBの動作に支障をきたしてしまう。また、スレッドBによる動作によって主制御部31のCPUの資源が長時間占有されている場合、スレッドCの動作に支障をきたしてしまう。そのため、監視スレッド1からキープアライブに対する応答がなされず、いずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッド(監視スレッド2)が存在すると判定される。
なお、ステップS1においていずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在しないと判定された場合、処理はステップS11に戻り、ステップS11以降の処理が繰り返し実行される。すなわち、再度、主制御部31のCPUによりイベント配信制御スレッドが実行され、予め設定された所定の時間(例えば5秒間や10秒間など)ごとに、監視スレッド(例えば監視スレッド1乃至3)の最初のイベントキューにキープアライブのイベントが格納される。
ステップS11においていずれかの監視スレッド(例えば監視スレッド1乃至3)のうち、キープアライブに対する応答がない監視スレッドが存在すると判定された場合、主制御部31のCPUはステップS12で、イベント配信制御スレッドを実行し、キープアライブに対する応答がない監視スレッドが監視するグループに含まれるスレッドの優先度を変更する。
例えば図7(B)に示されるように、スレッドAが現在動作している最中であったとしても、所要の時間間隔(例えば0.1秒間隔など)で、強制的に監視スレッド1の下の優先順位に配置するようにする。これにより、イベント配信制御スレッド、スレッドA、スレッドB、スレッドC、および監視スレッド1の順の優先順位から、イベント配信制御スレッド、スレッドB,スレッドC、監視スレッド1、およびスレッドAの順の優先順位に変更される。すなわち、スレッドAの優先順位が2位から5位に変更されるとともに、スレッドBとスレッドC、監視スレッド1の優先順位が2位、3位、4位にそれぞれ変更される。
これにより、スレッドAの動作によりスレッドBの動作が阻害されていた場合、阻害されていたスレッドBの動作が開始され、監視スレッド1からのキープアライブ動作に対応する応答がイベント配信制御スレッドに対してなされるようになる。
ステップS13において、主制御部31のCPUは、イベント配信制御スレッドを実行し、キープアライブに対する応答がない監視スレッドが監視するグループに含まれるスレッドの優先度が変更された後、キープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになったか(回復したか)否かを判定する。
ステップS13においてキープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになったと判定された場合、主制御部31のCPUはステップS14で、イベント配信制御スレッドを実行し、キープアライブに対する応答がなかった監視スレッドにより監視されるグループ内のスレッド動作ができるように改善され、キープアライブに対する応答がなかった監視スレッドの動作が改善されたと認識し、キープアライブに対する応答がなかった監視スレッドが監視するグループに含まれるスレッドの優先度を元に戻す(すなわち、ステップS12の処理により優先度が変更されたスレッドの優先度を元に戻す)。
例えば図7(B)の場合、スレッドAの優先順位が2位から5位に変更されるとともに、スレッドBとスレッドC、監視スレッド1の優先順位が2位、3位、4位にそれぞれ変更されていることから、図7(A)に示される元の状態に戻される。すなわち、イベント配信制御スレッド、スレッドA、スレッドB,スレッドC、および監視スレッド1の順の優先順位(優先度)に戻される。その後、処理はステップS11に戻る。
一方、ステップS13においてキープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになっていないと判定された場合(すなわち、スレッドBによる動作によって主制御部31のCPUの資源が長時間占有され、スレッドCによる動作が阻害されている場合)、処理はステップS12に戻り、ステップS12にてスレッドの優先度の変更処理が所要の時間間隔(例えば0.1秒間隔など)で行われる。すなわち、スレッドBによる動作によって主制御部31のCPUの資源が長時間占有されている場合には、スレッドCの動作が阻害されていることから、スレッドAを監視スレッド1の下に配置するだけでは足りず、図7(C)に示されるように、スレッドAを監視スレッド1の下に配置してから所要の時間(例えば0.1秒間など)経過後に、イベント配信制御非対象のスレッドBも監視スレッド1の下に強制的に配置されることとなる。そして、イベント配信制御スレッド、スレッドA、スレッドB,スレッドC、および監視スレッド1の順の優先順位から、イベント配信制御スレッド、スレッドC、監視スレッド1、スレッドA、およびスレッドBの順の優先順位に変更される。
その後、処理はステップS14に進み、ステップS13にてキープアライブに対する応答がくるようになったか否かが判定され、ステップS13においてキープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになったと判定された場合、主制御部31のCPUはステップS14で、キープアライブに対する応答がなかった監視スレッドが監視するグループに含まれるスレッドの優先度を元に戻す。すなわち、例えば図7(C)の場合、イベント配信制御スレッド、スレッドC、監視スレッド1、スレッドA、およびスレッドBの順の優先順位(優先度)に変更されていることから、図7(A)に示される元の状態に戻される。その後、処理はステップS11に戻り、ステップS11以降の処理が繰り返される。
これにより、優先度の高いスレッドの動作を一時的に抑制し、優先度の低いスレッドに処理を回すようにすることができる。従って、ラウンドロビン機能やTSS制御機能を用いず、ラウンドロビン機能やTSS制御機能が搭載されていないOS上に構築されたアプリケーションプログラム群を効率よく制御することができる。また、タスクの切り替えの際のオーバーヘッドを少なくするとともに、アプリケーションプログラムのシステム上の輻輳を効率よく判定することができる。
なお、イベント配信制御非対象のスレッドBがUI(ユーザインタフェース)系のスレッドである場合に、1回で大量の描画処理を行うときには、スレッドBの動作により主制御部31のCPUの資源が占有されてしまう。このとき、例えばグループ2のスレッドDによる動作を0.5秒ごとに行う必要があるために、監視スレッド2からのキープアライブ動作に対応する応答がイベント配信制御スレッドに対してなされなくなったとする。このような場合、スレッドBの動作によって主制御部31のCPUの資源が占有されているために、スレッドDの動作が阻害されていると推定し、例えば図9(A)および(B)に示されるように、グループ間を飛び越えて、グループ2の動作を監視する監視スレッド2の下の位置までスレッドBの優先度を下げるようにする。これにより、優先度の高いスレッドの動作を一時的に抑制し、優先度の低いスレッドに処理を好適にかつ確実に回すようにすることができる。
ところで、図8のスレッド優先度変更処理においては、キープアライブに対する応答がなかった監視スレッドからキープアライブに対する応答がくるようになった場合に、主制御部31のCPUの資源を占有するスレッドの優先度を元に戻し、このスレッドの動作の一時的な抑制を解除するようにしたが、このような場合に限られず、タイマを用いて、このスレッドの優先度を変更することでスレッドの動作抑制を行ってからn時間(ms)経過後に動作の抑制を解除するようにしてもよい。
この方法を用いるケースとしては以下のような場合が想定される。すなわち、例えばイベント配信制御非対象のスレッドBがUI(ユーザインタフェース)系のスレッドである場合に、1回で大量の描画処理を行うときには、スレッドBの動作により主制御部31のCPUの資源が占有されてしまうが、このとき、スレッドCの動作が阻害されているためにスレッドBの優先度を監視スレッド1よりも下げたままにしてしまうと、スレッドBにてユーザによる操作キーを新たに受け付ける(例えば描画処理のキャンセルを受け付ける)ことができなくなってしまう。このような場合、動作が抑制されているスレッドBを一旦元の優先度に復帰させ、スレッドBの動作抑制を行ってからn時間(ms)経過後に動作の抑制を解除することで、スレッドBにてユーザによる操作キーを新たに受け付けることができる。その後、依然としてスレッドBの動作により主制御部31のCPUの資源が占有されている場合には、イベント配信制御スレッドの実行により、スレッドBの動作を抑制してから所要の時間(例えば0.1秒間)後に再度スレッドBの動作が抑制される。以下、この方法を用いたスレッド優先度変更処理について説明する。
図10のフローチャートを参照して、図3の携帯電話機1における他のスレッド優先度変更処理について説明する。なお、図10のステップS21、S22、ステップS25、およびステップS26の処理は、図8のステップS11乃至S14の処理と基本的には同様であり、その説明は繰り返しになるので省略する。
なお、このとき、ステップS22において、主制御部31のCPUが、イベント配信制御スレッドを実行し、キープアライブに対する応答がない監視スレッドが監視するグループに含まれるスレッドBの優先度を監視スレッド1の下に変更しているものとする。
ステップS23において、主制御部31のCPUは、イベント配信制御スレッドを実行し、タイマを用いて、スレッドBの動作抑制を行ってからn時間(ms)経過したか否かを判定し、スレッドBの動作抑制を行ってからn時間(ms)経過したと判定するまで待機する。ステップS23においてスレッドBの動作抑制を行ってからn時間(ms)経過したと判定された場合、主制御部31のCPUはステップS24で、イベント配信制御スレッドを実行し、動作が抑制されているスレッドBを一旦元の優先度に復帰させ、スレッドBの動作の抑制を解除する。これにより、優先度の高いスレッドの動作を一時的に抑制し、優先度の低いスレッドに処理を回すようにすることができるとともに、優先度が変更されたスレッドBにてユーザによる操作キーを新たに受け付けることができる。
なお、図8および図10のフローチャートを用いて説明したスレッド優先度変更処理を、図6のフローチャートを参照して説明したイベント配信制御処理と適宜組み合わせるようにしてもよい。この場合の処理の一例は、図11に示される。なお、図11のステップS31に乃至S34、およびステップS37乃至S38の処理は、図6のステップS1乃至S6の処理と基本的には同様である。
図11に示されるように、例えばグループ1内のUI系のスレッドBにより主制御部31のCPUの資源が占有されており、その結果、監視スレッド2が動作できず、グループ1へのイベントの配信が停止されたにもかかわらず、監視スレッド2からキープアライブに対する応答が依然としてくるようになっていない場合に、ステップS35において、主制御部31のCPUは、イベント配信制御スレッドを実行し、キープアライブに対する応答がない監視スレッド2が監視するグループ2の1つ上のグループ1に含まれるスレッドBの優先度を変更し、監視スレッド2の下に配置する。これにより、グループ2のスレッドD乃至Fが順次動作できるようになる。なお、スレッドBの優先度を変更しても、監視スレッド2からのキープアライブに対する応答がない場合には、ステップS37にてグループ2へのイベントの配信も停止される。これにより、優先度の高いスレッドに対するイベントの配信を停止するとともに、下位のグループに処理をより好適に回すようにすることができる。従って、ラウンドロビン機能やTSS制御機能が搭載されていないOS上に構築されたアプリケーションプログラム群をより効率よく制御することができる。なお、変更されたスレッドの優先度は、監視スレッド2からのキープアライブに対する応答が回復次第、イベント配信制御スレッドの実行により、元に戻される。
なお、本発明は、携帯電話機1以外にも、PDA(Personal Digital Assistant)、パーソナルコンピュータ、携帯型ゲーム機、携帯型音楽再生機、携帯型動画再生機、その他の情報処理装置にも適用することができる。
また、本発明の実施形態において説明した一連の処理は、ソフトウェアにより実行させることもできるが、ハードウェアにより実行させることもできる。
さらに、本発明の実施形態では、フローチャートのステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。

Claims (10)

  1. 優先度が設けられた複数のスレッドからなるグループを、グループ内のスレッドの動作を監視するための複数の監視スレッドに対するキープアライブ動作によって監視する監視手段と、
    複数の前記監視スレッドからの応答に基づいて、キープアライブ動作に対する応答がない前記監視スレッドが存在するか否かを判定する第1の判定手段と、
    前記第1の判定手段によりキープアライブ動作に対する応答がない前記監視スレッドが存在すると判定された場合、キープアライブ動作に対する応答がない前記監視スレッドが監視するグループよりも優先度が高いグループへのイベントの配信を停止する第1の停止手段とを備えることを特徴とする情報処理装置。
  2. 前記第1の停止手段によるイベントの配信の停止後、キープアライブ動作による監視を再度行い、キープアライブ動作に対する応答がない前記監視スレッドが監視するグループ内のスレッドの動作が回復したか否かを判定する第2の判定手段と、
    前記第2の判定手段により前記グループ内のスレッドの動作が回復していないと判定された場合、スレッドの動作が回復していない前記グループへのイベントの配信を停止する第2の停止手段とをさらに備えることを特徴とする請求項1に記載の情報処理装置。
  3. 前記第2の判定手段により前記グループ内のスレッドの動作が回復していない状態から動作が回復したと判定された場合、前記第1の停止手段によるイベントの配信の停止を解除する解除手段をさらに備えることを特徴とする請求項2に記載の情報処理装置。
  4. 前記第2の停止手段によるイベントの配信の停止後、複数の前記監視スレッドのうち、前記所定の時間が経過するまでにキープアライブ動作に対する応答がない監視スレッドが存在するか否かを判定する第3の判定手段をさらに備え、
    前記第2の停止手段は、前記第3の判定手段により判定された、キープアライブ動作に対する応答がない前記監視スレッドが監視するグループへのイベントの配信を順次停止することを特徴とする請求項2に記載の情報処理装置。
  5. それぞれの前記グループには、少なくとも、イベント配信制御対象とイベント配信制御非対象のスレッドが含まれることを特徴とする請求項1に記載の情報処理装置。
  6. 前記キープアライブ動作においては、前記監視スレッドの先頭のイベントキューにキープアライブに関するイベントを格納することを特徴とする請求項1に記載の情報処理装置。
  7. 優先度が設けられた複数のスレッドからなるグループを、グループ内のスレッドの動作を監視するための複数の監視スレッドに対するキープアライブ動作によって監視する監視手段と、
    複数の前記監視スレッドからの応答に基づいて、キープアライブ動作に対する応答がない前記監視スレッドが存在するか否かを判定する第1の判定手段と、
    前記第1の判定手段によりキープアライブ動作に対する応答がない前記監視スレッドが存在すると判定された場合、キープアライブ動作に対する応答がない前記監視スレッドが監視するグループまたはそのグループよりも優先度が高いグループに含まれる少なくとも1つ以上のスレッドの優先度を変更する優先度変更手段とを備えることを特徴とする情報処理装置。
  8. 前記優先度変更手段は、キープアライブ動作に対する応答がない前記監視スレッドが監視するグループまたはそのグループよりも優先度が高いグループに含まれる少なくとも1つ以上のスレッドの優先度を、キープアライブ動作に対する応答がない前記監視スレッドの優先度よりも下に変更することを特徴とする請求項7に記載の情報処理装置。
  9. 前記優先度変更手段によるスレッドの優先度の変更後、キープアライブ動作による監視を再度行い、キープアライブ動作に対する応答がない前記監視スレッドが監視するグループ内のスレッドの動作が回復したか否かを判定する第2の判定手段をさらに備え、
    前記第2の判定手段により前記グループ内のスレッドの動作が回復したと判定された場合、前記優先度変更手段は、変更されたスレッドの優先度を元に戻すことを特徴とする請求項7に記載の情報処理装置。
  10. 前記優先度変更手段は、前記優先度変更手段によるスレッドの優先度の変更後であって、スレッドの動作抑制開始から所定の時間経過した後に、変更されたスレッドの優先度を元に戻すことを特徴とする請求項7に記載の情報処理装置。
JP2009505092A 2007-03-20 2008-01-21 情報処理装置 Expired - Fee Related JP5152175B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009505092A JP5152175B2 (ja) 2007-03-20 2008-01-21 情報処理装置

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007073305 2007-03-20
JP2007073305 2007-03-20
PCT/JP2008/050718 WO2008114525A1 (ja) 2007-03-20 2008-01-21 情報処理装置
JP2009505092A JP5152175B2 (ja) 2007-03-20 2008-01-21 情報処理装置

Publications (2)

Publication Number Publication Date
JPWO2008114525A1 true JPWO2008114525A1 (ja) 2010-07-01
JP5152175B2 JP5152175B2 (ja) 2013-02-27

Family

ID=39765643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009505092A Expired - Fee Related JP5152175B2 (ja) 2007-03-20 2008-01-21 情報処理装置

Country Status (3)

Country Link
US (1) US8881169B2 (ja)
JP (1) JP5152175B2 (ja)
WO (1) WO2008114525A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9032254B2 (en) * 2008-10-29 2015-05-12 Aternity Information Systems Ltd. Real time monitoring of computer for determining speed and energy consumption of various processes
JP5418066B2 (ja) * 2009-08-25 2014-02-19 富士通モバイルコミュニケーションズ株式会社 情報処理装置
GB2491165A (en) 2011-05-26 2012-11-28 Realvnc Ltd Mobile device having a priority adjusting thread for link wi th remote terminal
JP5440625B2 (ja) * 2012-02-06 2014-03-12 オンキヨー株式会社 コントローラ及びそのプログラム
US9961127B2 (en) 2013-03-15 2018-05-01 Foresee Results, Inc. System and method for capturing interaction data relating to a host application
US10116543B2 (en) * 2015-02-11 2018-10-30 Red Hat, Inc. Dynamic asynchronous communication management
US11144318B2 (en) * 2019-08-26 2021-10-12 Arm Limited Method and apparatus for application thread prioritization
CN111488207B (zh) * 2020-03-11 2023-10-27 中移(杭州)信息技术有限公司 应用进程保活方法、装置、网络设备及存储介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05265807A (ja) * 1992-03-19 1993-10-15 Chubu Nippon Denki Software Kk システムストール検出方式
EP0617361B1 (en) * 1993-03-26 2001-11-28 Cabletron Systems, Inc. Scheduling method and apparatus for a communication network
JP2000010800A (ja) * 1998-06-19 2000-01-14 Toshiba Corp 計算機システムに於けるスレッド制御装置、及び同システムに於けるスレッド制御方法
JP2001306338A (ja) * 2000-04-20 2001-11-02 Meidensha Corp プロセスの監視方式
US6910212B2 (en) * 2000-12-04 2005-06-21 International Business Machines Corporation System and method for improved complex storage locks
EP1474744B1 (en) * 2002-01-30 2008-04-16 Real Enterprise Solutions Development B.V. Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
US20050235136A1 (en) * 2004-04-16 2005-10-20 Lucent Technologies Inc. Methods and systems for thread monitoring
JP2006011686A (ja) * 2004-06-24 2006-01-12 Fuji Xerox Co Ltd マルチタスクシステムの異常検知方法
EP1789875A1 (en) * 2004-08-17 2007-05-30 Shaw Parsing LLC Modular event-driven processing
JP2006172229A (ja) * 2004-12-16 2006-06-29 Nec Corp タスクの動作制御方法、タスクの動作制御システムおよびプログラム
US7480827B2 (en) * 2006-08-11 2009-01-20 Chicago Mercantile Exchange Fault tolerance and failover using active copy-cat

Also Published As

Publication number Publication date
JP5152175B2 (ja) 2013-02-27
US8881169B2 (en) 2014-11-04
WO2008114525A1 (ja) 2008-09-25
US20100107175A1 (en) 2010-04-29

Similar Documents

Publication Publication Date Title
JP5152175B2 (ja) 情報処理装置
JP4250648B2 (ja) 情報処理装置
KR100694337B1 (ko) 휴대 단말, 휴대 전화 단말의 제어 방법 및 휴대 전화 단말
JP5365060B2 (ja) 情報処理装置
JP4790990B2 (ja) 携帯端末
JP5729146B2 (ja) 情報端末装置、情報端末装置の制御方法およびプログラム
AU2006327247B2 (en) Mobile terminals, methods and computer program products incorporating podcast link activation control
US8423815B2 (en) Information processing device capable of performing a timer control operation
EP1845438A2 (en) Information processing apparatus, method, and information processing program
CN101872634B (zh) 电子器件,内容再现方法
US20110043530A1 (en) Electronic apparatus and method of controlling display
WO2007119550A1 (ja) システム管理装置
JP2008186167A (ja) 電子機器及び電子機器における制御方法
JP4888183B2 (ja) 情報処理装置
JP4699339B2 (ja) 通信装置、通信方法、通信装置制御プログラム、および記録媒体
JP4589281B2 (ja) 情報処理装置
CN106817621B (zh) 移动终端及其视频备份及播放方法和装置
JP5217552B2 (ja) 携帯端末装置
KR20080009642A (ko) 장애 허용성을 제공하는 방법 및 핸드셋과 그 시스템
JP4926937B2 (ja) 携帯電話装置
JP5407479B2 (ja) 画像伝送システム、画像伝送装置、クライアント端末、画像伝送方法、及び、画像伝送プログラム
JP5418066B2 (ja) 情報処理装置
KR100750198B1 (ko) 휴대단말의 화상통화기능을 이용한 영상 전송 방법
JP2008199108A (ja) 情報処理装置
JP5620661B2 (ja) 情報処理装置及び情報処理方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100426

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20101028

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120710

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120907

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121119

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees