(57)【特許請求の範囲】
【請求項１】
発生したイベントを一時的に蓄積するイベントキューと、該イベントキューから読み出されたイベントに基づくタスクを一時的に蓄積するタスクキューとを有し、前記イベントは、デバイス／操作種別、発生時刻及び操作量を含むものとするイベント処理機能搭載装置において、
前記タスクキューに蓄積された未実行の全てのタスクの実行時間を、ＣＰＵ負荷量Ｃｔとして算出するＣＰＵ負荷量算出手段と、
前記ＣＰＵ負荷量に基づいて、前記イベントキューに蓄積された複数のイベントを最適化するイベントキュー最適化手段と
を有し、
前記イベントキュー最適化手段は、
前記イベントキューに蓄積された複数のイベントに対して、
各イベントについて、当該イベントの操作量が所定閾値の操作量よりも小さい場合、当該イベントを削除する操作量フィルタリングの第１のレベルと、
前記操作量フィルタリングの後、連続する複数の同一イベントにおける後のイベントについて、先のイベントとの間の発生時刻間隔が所定閾値の発生時刻間隔よりも短い場合、後のイベントを削除する時間フィルタリングの第２のレベルと、
前記時間フィルタリングの後、連続する同一のデバイス／操作種別の複数のイベントについて、それらイベントの操作量をまとめて１つのイベントに統合する同種イベントチャンキングの第３のレベルと、
前記同種イベントチャンキングの後、異なるデバイス／操作種別の複数のイベントにつて、予め定義された最適化定義情報の所定条件を満たしている場合、それらイベントを１つのイベントに統合する異種イベントチャンキングの第４のレベルと
を実行するものであり、前記ＣＰＵ負荷量が高くなるほど、段階的に高いレベルの最適化処理を実行する
ことを特徴とするイベント処理機能搭載装置。
【請求項２】
前記イベントは、ポインティングデバイス及びキーボードに基づくものであって、
前記タスクは、画面のレンダリング処理に基づくものであり、
前記タスクキューから出力されたタスクを実行するタスク実行手段と、
前記タスク実行手段からタスクの実行時間を受け取り、タスク識別子に対応する平均実行時間を記録するタスク実行時間記憶手段と
を更に有し、
前記ＣＰＵ負荷量算出手段は、前記タスク実行時間記憶手段を用いて、前記タスクキューに蓄積された未実行の全てのタスクの平均実行時間の総和を、ＣＰＵ処理単位時間で除算した、前記ＣＰＵ負荷量を算出することを特徴とする請求項１に記載のイベント処理機能搭載装置。
【請求項３】
発生したイベントを一時的に蓄積するイベントキューと、該イベントキューから読み出されたイベントに基づくタスクを一時的に蓄積するタスクキューとを有し、前記イベントは、デバイス／操作種別、発生時刻及び操作量を含むものとするようにコンピュータを機能させるイベント処理プログラムにおいて、
前記タスクキューに蓄積された未実行の全てのタスクの実行時間を、ＣＰＵ負荷量Ｃｔとして算出するＣＰＵ負荷量算出手段と、
前記ＣＰＵ負荷量に基づいて、前記イベントキューに蓄積された複数のイベントを最適化するイベントキュー最適化手段と
を有し、
前記イベントキュー最適化手段は、
前記イベントキューに蓄積された複数のイベントに対して、
各イベントについて、当該イベントの操作量が所定閾値の操作量よりも小さい場合、当該イベントを削除する操作量フィルタリングの第１のレベルと、
前記操作量フィルタリングの後、連続する複数の同一イベントにおける後のイベントについて、先のイベントとの間の発生時刻間隔が所定閾値の発生時刻間隔よりも短い場合、後のイベントを削除する時間フィルタリングの第２のレベルと、
前記時間フィルタリングの後、連続する同一のデバイス／操作種別の複数のイベントについて、それらイベントの操作量をまとめて１つのイベントに統合する同種イベントチャンキングの第３のレベルと、
前記同種イベントチャンキングの後、異なるデバイス／操作種別の複数のイベントにつて、予め定義された最適化定義情報の所定条件を満たしている場合、それらイベントを１つのイベントに統合する異種イベントチャンキングの第４のレベルと
を実行するものであり、前記ＣＰＵ負荷量が高くなるほど、段階的に高いレベルの最適化処理を実行する
ようにコンピュータを機能させることを特徴とするイベント処理プログラム。
【請求項４】
前記イベントは、ポインティングデバイス及びキーボードに基づくものであって、
前記タスクは、画面のレンダリング処理に基づくものであり、
前記タスクキューから出力されたタスクを実行するタスク実行手段と、
前記タスク実行手段からタスクの実行時間を受け取り、タスク識別子に対応する平均実行時間を記録するタスク実行時間記憶手段と
してコンピュータを更に機能させ、
前記ＣＰＵ負荷量算出手段は、前記タスク実行時間記憶手段を用いて、前記タスクキューに蓄積された未実行の全てのタスクの平均実行時間の総和を、ＣＰＵ処理単位時間で除算した、前記ＣＰＵ負荷量を算出するようにコンピュータを機能させることを特徴とする請求項３に記載のイベント処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オペレーティングシステムに基づくイベント処理機能搭載装置及びプログラムに関する。特に、ＣＰＵ(Central Processing Unit)を搭載した組み込み装置におけるオペレーティングシステムのタスク実行技術に関する。
【背景技術】
【０００２】
従来、ＣＰＵを搭載した様々な組み込み装置は、オペレーティングシステムを実装している。オペレーティングシステムは、入力デバイスやその他の機能部から発生する複数のイベントを、そのＣＰＵを用いてタスクとして実行する。イベントとは、アプリケーションプログラムの本来の実行とは独立に発生する事象をいう。また、タスクとは、オペレーティングシステムから見た（ユーザから見た）処理の単位である。通常、イベントの発生した順序に基づいて、そのタスクが逐次実行される。
【０００３】
当該装置に多くのイベントが発生することを考慮して、それらイベントを一時的に蓄積するイベントキューが備えられ、イベントを順次読み出しながら処理するイベント駆動型処理技術がある。この技術は、イベントを逐次に処理するものであって、１つのイベントの処理が完全に終了しない限り、次のイベントを読み出さない。
【０００４】
図１は、従来技術に基づくイベント処理機能搭載装置の機能構成図である。
【０００５】
図１によれば、装置１は、入力デバイス部１１と、ＣＰＵ部１２と、その他の機能構成部１３と、ＣＰＵ部１２がプログラムを実行することによって機能するオペレーティングシステム部１０とを有する。入力デバイス部１１は、ユーザの操作や装置機能に応じてイベントを発生し、そのイベントをオペレーティングシステム部１０へ出力する。
【０００６】
入力デバイス部１１は、入力デバイス及び／又は通信デバイスである。入力デバイス部１１から発生したイベントは、デバイス／操作種別、発生時刻（例えば装置起動時刻からの相対時間（ｍｓ単位））及び／又は操作データ（例えばキースイッチのキーコード、又はマウスの移動量）を含む。
【０００７】
図１によれば、オペレーティングシステム部１０は、イベント制御部１０１と、イベントキュー１０２と、イベント処理部１０３と、タスクキュー１０４と、タスク実行部１０５とを有する。これら機能部は、ＣＰＵ部１２で実行されるプログラムによって実現される。
【０００８】
イベント制御部１０１は、入力デバイス部１１から発生したイベントをイベントキュー１０２に入力し、ＦＩＦＯ(First In First Out、先入れ先出し)の待ち状態におく。また、イベント制御部１０１は、イベントキュー１０２からイベントを取り出し、そのイベントをイベント処理部１０３へ出力する。
【０００９】
イベント処理部１０３は、イベント制御部１０１から受け取ったイベントについて、アプリケーションに基づくタスクに変換する。タスクは、タスクキュー１０４へ入力される。タスクキュー１０４は、タスクを一時的に蓄積し、ＦＩＦＯの待ち状態におく。タスクキュー１０４から出力されたタスクは、ＣＰＵを用いてタスク実行部１０５によって実行される。
【００１０】
前述したようなイベント駆動型処理技術によれば、大量のイベントが短時間に発生した場合、イベントキューにも大量のイベントが蓄積されることとなる。このような場合であっても、イベントキューに先に蓄積された全てのイベントの処理が終了するまで、当該イベントの処理は待機される。その結果、アプリケーションの反応が鈍くなるという課題があった。
【００１１】
これに対して、個々のイベントに優先度を付加し、優先度の大小に応じて、複数のイベントキューに挿入する技術がある（例えば特許文献１参照）。図１によれば、複数のイベントキューが備えられ、次に取り出すイベントは、優先度の大きいイベントキューから優先的に取り出される。但し、同一優先度については、先にイベントキューに格納したイベントから順に取り出される。
【００１２】
また、イベント制御部１０１について、発生したイベントにタイムスタンプを付与する技術もある（例えば特許文献２参照）。この技術によれば、イベント制御部１０１は、同種の２つのイベントに対して、それらタイムスタンプの時刻間隔が所定閾値よりも短い場合、１つのイベントのみを実行し、その他のイベントを削除する。これにより、イベントキューに多くのイベントが滞留するのを防止する。例えば、装置の利用者が、同じキーを何度も繰り返し操作した場合、それらのキー操作に基づくイベントを削除することができる。
【００１３】
近年、携帯電話機又は携帯端末のような処理能力が比較的低い端末にも、前述したようなオペレーティングシステムが実装されている。また、デバイス技術の小型高性能化によって、小型組み込み装置にも、キースイッチ、マウス又はトラックポイントのようなポインティングデバイス、テンキー、フルキーボード、加速度センサ、タッチパネル等が、入力デバイスとして搭載又は接続されてきている。更に、赤外線やBluetooth（登録商標）などの短距離無線通信技術を介して、携帯電話機上で実行されるアプリケーションを操作する入力デバイスもある。例えば、ワイヤレスマウスや、加速度センサを内蔵したリモコンがある。このような入力デバイスによって発生するイベントを、タスクに変換して実行することによって、携帯電話機であっても、パーソナルコンピュータと同様に、ポインティング操作やスクロール操作をすることができる。
【００１４】
【特許文献１】特開２０００−１３７６２１号公報
【特許文献２】特開２００４−２８７７５５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、携帯電話機に搭載されるＣＰＵの処理能力は、パーソナルコンピュータに搭載されるＣＰＵよりもかなり低い。そのために、携帯電話機に対する利用者の操作によっては、その入力デバイスから、短時間に大量のイベントが連続的に発生する場合がある。その場合、これらイベントを効率的に処理する必要がある。
【００１６】
特許文献１に記載された技術によれば、各イベントに優先度を付加するために、優先度情報に基づく分だけ情報量が増加する。また、複数のイベントキューを管理する必要があるため、メモリの利用効率も低くなる。更に、複数のイベントキューを備えた場合、イベントの入力順序と出力順序とが異なる場合があり、ＦＩＦＯの関係を維持しようとすると、メモリの利用効率が更に低くなる。
【００１７】
特許文献２に記載された技術によれば、タイムスタンプの時刻間隔のみに基づいてイベントを削除するために、削除すべきでないイベントまで誤って削除する可能性もある。
【００１８】
そこで、本発明は、処理能力の低いＣＰＵを搭載し且つオペレーティングシステムを実装した組み込み装置であっても、短時間に発生した大量のイベントを効率的に処理することができるイベント処理機能搭載装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明によれば、発生したイベントを一時的に蓄積するイベントキューと、該イベントキューから読み出されたイベントに基づくタスクを一時的に蓄積するタスクキューとを有し、イベントは、デバイス／操作種別、発生時刻及び操作量を含むものとするイベント処理機能搭載装置において、
タスクキューに蓄積された未実行の全てのタスクの実行時間を、ＣＰＵ負荷量Ｃｔとして算出するＣＰＵ負荷量算出手段と、
ＣＰＵ負荷量に基づいて、イベントキューに蓄積された複数のイベントを最適化するイベントキュー最適化手段と
を有し、
イベントキュー最適化手段は、
イベントキューに蓄積された複数のイベントに対して、
各イベントについて、当該イベントの操作量が所定閾値の操作量よりも小さい場合、当該イベントを削除する操作量フィルタリングの第１のレベルと、
操作量フィルタリングの後、連続する複数の同一イベントにおける後のイベントについて、先のイベントとの間の発生時刻間隔が所定閾値の発生時刻間隔よりも短い場合、後のイベントを削除する時間フィルタリングの第２のレベルと、
時間フィルタリングの後、連続する同一のデバイス／操作種別の複数のイベントについて、それらイベントの操作量をまとめて１つのイベントに統合する同種イベントチャンキングの第３のレベルと、
同種イベントチャンキングの後、異なるデバイス／操作種別の複数のイベントにつて、予め定義された最適化定義情報の所定条件を満たしている場合、それらイベントを１つのイベントに統合する異種イベントチャンキングの第４のレベルと
を実行するものであり、ＣＰＵ負荷量が高くなるほど、段階的に高いレベルの最適化処理を実行する
ことを特徴とする。
【００２２】
本発明のイベント処理機能搭載装置における他の実施形態によれば、
イベントは、ポインティングデバイス及びキーボードに基づくものであって、
タスクは、画面のレンダリング処理に基づくものであり、
タスクキューから出力されたタスクを実行するタスク実行手段と、
タスク実行手段からタスクの実行時間を受け取り、タスク識別子に対応する平均実行時間を記録するタスク実行時間記憶手段と
を更に有し、
ＣＰＵ負荷量算出手段は、タスク実行時間記憶手段を用いて、タスクキューに蓄積された未実行の全てのタスクの平均実行時間の総和を、ＣＰＵ処理単位時間で除算した、ＣＰＵ負荷量を算出することも好ましい。
【００２６】
本発明によれば、発生したイベントを一時的に蓄積するイベントキューと、該イベントキューから読み出されたイベントに基づくタスクを一時的に蓄積するタスクキューとを有し、イベントは、デバイス／操作種別、発生時刻及び操作量を含むものとするようにコンピュータを機能させるイベント処理プログラムにおいて、
タスクキューに蓄積された未実行の全てのタスクの実行時間を、ＣＰＵ負荷量Ｃｔとして算出するＣＰＵ負荷量算出手段と、
ＣＰＵ負荷量に基づいて、イベントキューに蓄積された複数のイベントを最適化するイベントキュー最適化手段と
を有し、
イベントキュー最適化手段は、
イベントキューに蓄積された複数のイベントに対して、
各イベントについて、当該イベントの操作量が所定閾値の操作量よりも小さい場合、当該イベントを削除する操作量フィルタリングの第１のレベルと、
操作量フィルタリングの後、連続する複数の同一イベントにおける後のイベントについて、先のイベントとの間の発生時刻間隔が所定閾値の発生時刻間隔よりも短い場合、後のイベントを削除する時間フィルタリングの第２のレベルと、
時間フィルタリングの後、連続する同一のデバイス／操作種別の複数のイベントについて、それらイベントの操作量をまとめて１つのイベントに統合する同種イベントチャンキングの第３のレベルと、
同種イベントチャンキングの後、異なるデバイス／操作種別の複数のイベントにつて、予め定義された最適化定義情報の所定条件を満たしている場合、それらイベントを１つのイベントに統合する異種イベントチャンキングの第４のレベルと
を実行するものであり、ＣＰＵ負荷量が高くなるほど、段階的に高いレベルの最適化処理を実行する
ようにコンピュータを機能させることを特徴とする。
【００２７】
本発明のイベント処理プログラムにおける他の実施形態によれば、
イベントは、ポインティングデバイス及びキーボードに基づくものであって、
タスクは、画面のレンダリング処理に基づくものであり、
タスクキューから出力されたタスクを実行するタスク実行手段と、
タスク実行手段からタスクの実行時間を受け取り、タスク識別子に対応する平均実行時間を記録するタスク実行時間記憶手段と
してコンピュータを更に機能させ、
ＣＰＵ負荷量算出手段は、タスク実行時間記憶手段を用いて、タスクキューに蓄積された未実行の全てのタスクの平均実行時間の総和を、ＣＰＵ処理単位時間で除算した、ＣＰＵ負荷量を算出するようにコンピュータを機能させることも好ましい。
【発明の効果】
【００２８】
本発明のイベント処理機能搭載装置及びプログラムによれば、イベントキューに蓄積されたイベントの数を、最適化定義情報に基づいて減らすことができるので、処理能力の低いＣＰＵを搭載し且つオペレーティングシステムを実装した組み込み装置であっても、短時間に発生した大量のイベントを効率的に処理することができる。
【発明を実施するための最良の形態】
【００２９】
以下では、図面を用いて、本発明を実施するための最良の形態について詳細に説明する。
【００３０】
図２は、本発明におけるイベント処理機能の機能構成図である。
【００３１】
図２のオペレーティングシステム部１０は、図１と比較して、タスク実行時間記憶部１０６と、ＣＰＵ負荷量算出部１０７と、イベントキュー最適化部１０８とを更に有する。これら機能部も、ＣＰＵ部１２で実行されるプログラムによって実現される。
【００３２】
タスク実行時間記憶部１０６は、タスク実行部１０５から、タスク識別子及びタスク実行時間を受け取る。タスク識別子は、具体的には、タスクＩＤ(IDentifier)及びセグメントルーチンＩＤである。イベント処理部１０３は、イベントから、アプリケーションに基づくタスクを生成するが、このタスクは、セグメントルーチン(ＳＲ、Segment
Routine)に分割される。セグメントルーチンは、１つのタスクを、実行命令として記述された実行ブレイクポイントに応じて分割した単位である。従って、タスク実行部１０５は、細分化されたセグメントルーチンに実行する毎に、そのタスクＩＤ及びセグメントルーチンＩＤとタスク実行時間とを、タスク実行時間記憶部１０６へ出力する。
【００３３】
タスク実行時間記憶部１０６は、タスクＩＤ及びセグメントルーチンＩＤに対応付けて、タスクの平均実行時間を記憶する。タスク実行時間記憶部１０６は、タスク実行部１０５からタスク実行時間を受け取る毎に、タスクの平均実行時間を更新する。
【００３４】
ＣＰＵ負荷量算出部１０７は、タスクキュー１０４に蓄積されている未実行の全てのタスクの実行時間を、ＣＰＵ負荷量として算出する。そのために、ＣＰＵ負荷量算出部１０７は、タスクキュー１０４から、その時点で蓄積されている未実行の全てのタスクのタスクＩＤ及びセグメントルーチンＩＤを受け取る。次に、ＣＰＵ負荷量算出部１０７は、そのタスクＩＤ及びセグメントルーチンＩＤ毎に、タスク実行時間記憶部１０６から平均実行時間を受け取る。
【００３５】
そして、ＣＰＵ負荷量算出部１０７は、タスクキュー１０４に蓄積されている未実行の全てのタスクにおける平均実行時間の総和を、ＣＰＵ処理単位時間で除算した、ＣＰＵ負荷量を算出する。
ＣＰＵ負荷量＝未実行の全てのタスクの平均実行時間の総和／ＣＰＵ処理単位時間
算出されたＣＰＵ負荷量は、所定時間毎に、イベントキュー最適化部１０８へ出力される。
【００３６】
図３は、タスク実行時間記憶部に蓄積される平均実行時間の例である。
【００３７】
図３によれば、アプリケーション基づく３つのタスクＡ、Ｂ及びＣが表されている。ここで、オペレーティングシステムは、シングルスレッドで動作することを想定しており、擬似的にマルチスレッドで動作させている。各タスクは、複数のセグメントルーチンから構成される。タスクＡはセグメントルーチンＳＲＡ１〜ＳＲＡ６から構成され、タスクＢはセグメントルーチンＳＲＢ１〜ＳＲＢ４から構成され、タスクＣはセグメントルーチンＳＲＣ１〜ＳＲＣ７から構成されている。
【００３８】
図３によれば、最初に、タスクＡのセグメントルーチンＳＲＡ１->タスクＢのセグメントルーチンＳＲＢ１->タスクＣのセグメントルーチンＳＲＣ１の順序で実行する。次に再び、タスクＡのセグメントルーチンＳＲＡ２->タスクＢのセグメントルーチンＳＲＢ２->タスクＣのセグメントルーチンＳＲＣ２の順序で実行する。図３には、タスクＡ、Ｂ及びＣのセグメントルーチンの実行順序が表されている。
【００３９】
尚、タスクのセグメントルーチンの実行順序としては、図３のように、各タスクのセグメントルーチンを１つずつ順番に実行することに限られない。例えば、タスクＡについて全てのセグメントルーチンを実行し、次に、タスクＢについて全てのセグメントルーチンを実行するものであってもよい。また、複数のセグメントルーチンを１つのタイムスライス内で実行するものであってもよい。
【００４０】
タスク実行時間記憶部１０６は、タスクＩＤ及びセグメントルーチンＩＤに対応付けて、その平均実行時間を記憶する。図３によれば、タスクＡのセグメントルーチン１の平均実行時間は、５５ｍｓである。
【００４１】
図３によれば、タスクキュー１０４に蓄積されているセグメントルーチンはＳＲＡ４、ＳＲＡ５、ＳＲＡ６、ＳＲＢ４、ＳＲＣ４、ＳＲＣ５、ＳＲＣ６及びＳＲＣ７である。また、図３によれば、各セグメントルーチンの平均実行時間の総和と、ＣＰＵ負荷量Ｃｔとは、以下のとおりである。
ＳＲＡ４＝５５ｍｓ
ＳＲＡ５＝１６０ｍｓ
ＳＲＡ６＝６０ｍｓ
ＳＲＢ４＝５０ｍｓ
ＳＲＣ４＝６０ｍｓ
ＳＲＣ５＝５０ｍｓ
ＳＲＣ６＝２００ｍｓ
ＳＲＣ７＝２００ｍｓ
平均実行時間の総和＝５５ｍｓ＋１６０ｍｓ＋６０ｍｓ＋５０ｍｓ
＋６０ｍｓ＋５０ｍｓ＋２００ｍｓ＋２００ｍｓ
＝８３５ｍｓ
ＣＰＵ処理単位時間＝１０００ｍｓ
ＣＰＵ負荷量      ＝８３５ｍｓ／１０００ｍｓ＝０．８３５
【００４２】
ここで、再び、図２を参照する。
【００４３】
本発明のオペレーティングシステム部１０は、イベントキュー最適化部１０８を更に有する。イベントキュー最適化部１０８は、イベントキューに蓄積された複数のイベントに対して、最適化定義情報に基づいて、１つ以上のイベントを削除する「フィルタリング処理」、及び／又は、複数のイベントを１つのイベントに統合する「チャンキング処理」を実行する。
【００４４】
最適化定義情報は、「フィルタリング処理」及び／又は「チャンキング処理」を実行する場合の「デバイス／操作種別」、「発生時刻」及び／又は「操作データ」の所定条件を定義したものである。イベントキュー最適化部１０８は、イベントキューに蓄積された全てのイベントについて、最適化定義情報の所定条件に該当するか否かを判定する。
【００４５】
本発明によれば、フィルタリング処理として「操作量フィルタリング」及び「時間フィルタリング」があり、チャンキング処理として「同種イベントチャンキング」及び「異種イベントチャンキング」がある。イベントキュー最適化部１０８は、これら４つの処理を、ＣＰＵ負荷量に応じて、動的且つ段階的に変更しながら実行する。
【００４６】
［操作量フィルタリング］
１つのイベントについて、操作データが未定義であるか又はその操作量が所定閾値よりも小さい場合、そのイベントを削除する。例えば、マウス(Mouse)のようなポインティングデバイスにおける移動(Move)のイベントについて、その操作量(単位時間あたりのマウスの移動距離(ユークリッド距離))が、所定閾値よりも小さい場合、そのイベントを削除する。また、テンキーのようなモバイルキーボード(MobileKeyboard)又はフルキーボード(FullKeyboard)における押下(Press)のイベントについて、そのキーに相当するキーコードが未定義である場合、そのイベントを削除する。
【００４７】
［時間フィルタリング］
連続する複数の同一イベントについて、それらイベントの発生時刻間隔が所定閾値よりも短い場合、それらイベントを削除する。例えば、マウス(Mouse)のようなポインティングデバイスにおける移動（move）のイベントが、連続して発生しており、その発生時刻間隔が所定閾値よも短い場合、後続するイベントを削除する。また、テンキーのようなモバイルキーボード(MobileKeyboard)又はフルキーボード(FullKeyboard)における押下(Press)のイベントが、連続して発生しており、その発生時刻間隔が所定閾値よりも短い場合、後続するイベントを削除する。
【００４８】
［同種イベントチャンキング］
同一のデバイス／操作種別の複数のイベントが一定時間連続している場合、それらイベントを１つのイベントに統合する。例えば、マウス(Mouse)のようなポインティングデバイスにおける移動(Move)のイベントが、連続して発生している場合、その操作量を総和した１つのイベントに統合する。また、テンキーのようなモバイルキーボード(MobileKeyboard)又はフルキーボード(FullKeyboard)における押下(Press)のイベントが、Ｎ回連続して発生しており且つ「方向キー」である場合、その回数Ｎを含む１つのイベントに統合する。更に、キーボード(Keyboard)の押下の(Press)のイベントが、連続して発生しており、そのキーに相当するキーコードが、「タスク切替用キー」である場合、最後のイベントのみを実行し、先のイベントは削除する。
【００４９】
［異種イベントチャンキング］
異なるデバイス／操作種別の複数のイベントが規定された所定条件を満たしている場合、それらイベントを１つのイベントに統合する。例えば、マウス(Mouse)のようなポインティングデバイスと、テンキーのようなモバイルキーボード(MobileKeyboard)又はフルキーボード(FullKeyboard)とを用いて、キーボード(Keyboard)の「タスク切替用キー」の押下(Press)のイベントに続いて、マウス(Mouse)の移動(Move)のイベントが発生する組合せが、所定閾値よりも短い発生時刻間隔で、２組以上連続しているとする。このような場合、Mouse/Moveイベントについて１つのイベントに統合すると共に、最後の「タスク切替用キー」のイベントは残し、先の「タスク切替用キー」のイベントは削除する。
【００５０】
また、キーボード(Keyboard)の「確定キー」の押下(Press)のイベントに続いて、マウス(Mouse)のクリック(Click)のイベントが発生する組合せが、所定閾値よりも短い発生時刻間隔で連続しているとする。このような場合、最初に発生したイベントを削除し、後に発生したイベントを処理する。
【００５１】
図４は、本発明におけるイベントキュー最適化部のフローチャートである。
【００５２】
（Ｓ４０１）最初に、ＣＰＵ負荷量算出部１０７から、ＣＰＵ負荷量Ｃｔを入力する。ＣＰＵ負荷量Ｃｔは、タスクキューに蓄積された実行予定のタスクに対して、実際に実行する際に必要と予想されるＣＰＵ負荷量である。
【００５３】
（Ｓ４０２）次に、ＣＰＵ負荷量Ｃｔが、閾値ｋ１よりも大きいか否かを判定する。ここでは、閾値ｋ１よりも大きい処理遅延が発生しているかどうかを判定する。Ｃｔがｋ１以下（ｋ１≧Ｃｔ）である場合、処理を終了する。この場合、イベントキュー１０２は、何ら最適化（再構成）されず、発生したイベントのとおりに蓄積されている。結果的に、イベント制御部１０１は、イベントキュー１０２から、発生したとおりのイベントを取り出すこととなる。
【００５４】
（Ｓ４０３）Ｃｔがｋ１よりも大きい（ｋ１＜Ｃｔ）場合、即ち、ｋ１よりも大きい処理遅延が発生している場合、イベントの入力及び出力を停止するように、イベントキュー１０２をロックする。イベントキュー１０２をロックした上で、そこに蓄積されたイベント群に対して、最適化処理を実行する。
【００５５】
（Ｓ４０４）まず、ＣＰＵ負荷量Ｃｔが、閾値ｋ１〜ｋ４に対してどの程度の大きさであるか否かを判定する。即ち、最適化処理の内容は、ＣＰＵ負荷量Ｃｔに応じて、数種類のフィルタリング処理及びチャンキング処理を、動的に且つ段階的に適用する。「フィルタリング処理」は、イベントキュー１０２に蓄積された複数のイベントに対して、最適化定義情報に基づいて、１つ以上のイベントを削除する。また、「チャンキング処理」は、最適化定義情報に基づいて、複数のイベントを１つのイベントに統合する。
【００５６】
判定のための閾値は、ｋ１＜ｋ２＜ｋ３＜ｋ４の関係にある。これら閾値は全て、１以下の定数である。例えば、ｋ１＝０．１、ｋ２＝０．２５、ｋ３＝０．５、ｋ４＝０．７５としてもよい。この４つの閾値は、予め決定されていてもよいし、過去に実行したタスクの履歴情報に基づいて、動的に決定してもよい。
【００５７】
（Ｓ４０５）ｋ１＜Ｃｔ≦ｋ２の場合、「操作量フィルタリング」のみを実行する。
【００５８】
（Ｓ４０６）ｋ２＜Ｃｔ≦ｋ３の場合、最初に「操作量フィルタリング」を実行する。
（Ｓ４０７）次いで、「時間フィルタリング」を実行する。
【００５９】
（Ｓ４０８）ｋ３＜Ｃｔ≦ｋ４の場合、最初に「操作量フィルタリング」を実行する。
（Ｓ４０９）次いで、「時間フィルタリング」を実行する。
（Ｓ４１０）そして、「同種イベントチャンキング」を実行する。
【００６０】
（Ｓ４１１）ｋ４＜Ｃｔの場合、最初に「操作量フィルタリング」を実行する。
（Ｓ４１２）次いで、「時間フィルタリング」を実行する。
（Ｓ４１３）次いで、「同種イベントチャンキング」を実行する。
（Ｓ４１４）そして、「異種イベントチャンキング」を実行する。
【００６１】
Ｓ４０５〜Ｓ４１４によれば、ＣＰＵ負荷量Ｃｔの大きさに応じて、イベントキューに対する最適化の程度を変更する。つまり、Ｃｔが小さいときは、適用する最適化処理数を少なくし、Ｃｔが大きいときは、適用する最適化処理数を多くする。これにより、タスク実行速度の低減を抑えつつ、タスク実行上必要でないと判断できるイベント処理を削減できる。
【００６２】
（Ｓ４１５）イベントキューに対する最適化処理（Ｓ４０５〜Ｓ４１４）が終了すると、イベントの入力及び出力を再開するように、イベントキュー１０２に対してロックを解除する。
【００６３】
尚、段階的に実行する最適化処理の順番（Ｓ４０５〜Ｓ４１４）は、前述した順番に限られず、他の順番であってもよい。例えば、「時間フィルタリング」->「操作量フィルタリング」->「同種イベントチャンキング」->「異種イベントチャンキング」であってもよい。
【００６４】
但し、イベントキュー最適化処理について、ＣＰＵ負荷量又はメモリ使用量などのコスト消費が少なく、かつ、最適化処理後のパフォーマンス効果が高くなる処理を優先的に適用すべきである。例えば、チャンキング処理の対象となるイベントは、フィルタリング処理の対象となる場合が多い。そうすると、本発明における実施形態によれば、「フィルタリング処理」は、「チャンキング処理」の前に適用する方が好ましい。
【００６５】
図５は、本発明におけるイベントキューの最適化前後の説明図である。
【００６６】
図５（ａ）は、最適化処理前のイベントキュー内の情報を表す。デバイス／操作種別は、Mouse/Move、Mouse/Click、MobileKeyboard/Press及びFullKeyboard/Pressである。また、発生時刻６６４６０〜６９５１０に発生したイベント群（イベントＩＤ：０００１〜００２４）が表されている。
【００６７】
（Ｓ５０１）最初に、最適化定義情報における操作量フィルタリング処理について、以下の表１のように規定されているとする。
【表１】
0004771431.tif 000002
【００６８】
ここで、移動量Ｍａを、例えば４ピクセルとする。図５（ａ）によれば、この最適化定義情報に該当するイベントは、イベントＩＤ「０００４」「０００９」「００１８」「００２４」である。これらのデバイス種別は「Mouse/Move」であり、その移動量は４ピクセル以下である。このとき、操作量フィルタリング処理によって、これらイベントが削除される。
【００６９】
（Ｓ５０２）次に、最適化定義情報における時間フィルタリング処理について、以下の表２のように規定されているとする。
【表２】
0004771431.tif 000003
【００７０】
ここで、例えばＴ１＝１００ｍｓ、Ｔ２＝２００ｍｓ及びＴ３＝３００ｍｓとする。Ｓ５０１の処理の後で、この最適化定義情報に該当するイベントは、イベントＩＤ「００１７」「００２０」である。これらのデバイス種別は「Mouse/Move」であり、その発生時刻間隔は１００ｍｓ以下である。このとき、時間フィルタリング処理によって、これらイベントが削除される。
【００７１】
（Ｓ５０３）次に、最適化定義情報における同種イベントフィルタリング処理について、以下の表３のように規定されているとする。
【表３】
0004771431.tif 000004
【００７２】
Ｓ５０２の処理の後で、この最適化定義情報に該当するイベントの組は、イベントＩＤ「０００３：０００５」「００１０：００１１：００１２」「００１６：００１９：００２１」である。「０００３：０００５」は、デバイス／操作種別が「Mouse/Move」であり、同じイベントが連続している。このとき、３つの操作量を総和し、１つのイベント「０００５」として統合する。同様に、「００１０：００１１：００１２」も、操作量を総和し、１つのイベント「００１２」として統合する。更に、「００１６：００１９：００２１」も、操作量を総和し、１つのイベント「００２１」として統合する。
【００７３】
（Ｓ５０４）次に、最適化定義情報における異種イベントフィルタリング処理について、以下の表４のように規定されているとする。
【表４】
0004771431.tif 000005
【００７４】
ここで、例えばＴ４＝１２００ｍｓ及びＴ５＝６００ｍｓとする。Ｓ５０３の処理の後で、この最適化定義情報に該当するイベントの組は、イベントＩＤ「００１２：００１３：００１４：００１５」である。これらは、デバイス／操作種別「Mouse/Move」と「MobileKeyboard/Press」とが交互に繰り返している。また、キーコードは、「Ｆ１」「Ｆ２」の「タスク切替用キー」である。このとき、２つの「Mouse/Move」を１つのイベントに統合し、更に、最後の「タスク切替用キー」のイベントを残し、先の「タスク切替用キー」のイベントを削除する。
【００７５】
図５（ａ）の最適化前のイベント群に対して、Ｓ５０１〜Ｓ５０４の処理をした結果、図５（ｂ）のような最適化後のイベント群になる。図５によれば、最適化前に２４個あったイベントに対して、最適化後には、１１個に減少している。
【００７６】
尚、最適化定義情報の所定条件は、当該装置に搭載されたＣＰＵの処理能力及び／又はメモリの容量によって変更されることも好ましい。例えば、発生時刻間隔の数値を、変更することができる。
【００７７】
本発明によれば、イベントキューに蓄積されるイベント数を減らすことができる一方で、イベントキューを最適化するために別途、ＣＰＵの処理を必要とする。しかし、本発明の利用を想定するタスクには、画面のレンダリング処理があり、その処理量は非常に大きい。例えば、デスクトップ上のウィンドウを、マウス操作によりドラッグアンドドロップするようなイベントが発生する場合などである。このような場合、イベントキューの最適化に伴う処理量と比較して、再レンダリングの処理量は非常に大きい。従って、再レンダリングをより高速に実行するために、イベントキューの最適化処理を行う本発明による効果は大きい。
【００７８】
また、この実施形態で説明した４つの最適化処理方法に限られず、他のフィルタリング処理又はチャンキング処理を適用することもできる。例えば、イベント発生時の操作データ量又は発生時刻間隔を基準とするだけでなく、単位時間あたりの操作データの変化量、又は、単位時間あたりのその変化量の増減量なども適用できる。更に、ユークリッドデータ量を総和する際、総和するとゼロになってしまう場合が考えられる。そこで、複数のイベントを１つのイベントとして置換する際、そのイベント列の意味内容を解析した上で変換する場合が考えられる。例えば、マウスを円状に動かしている場合、それに関するイベントを、円運動というイベントに変換する。
【００７９】
以上、詳細に説明したように、本発明のイベント処理機能搭載装置及びプログラムによれば、イベントキューに蓄積されたイベントの数を、最適化定義情報に基づいて減らすことができるので、処理能力の低いＣＰＵを搭載し且つオペレーティングシステムを実装した組み込み装置であっても、短時間に発生した大量のイベントを効率的に処理することができる。
【００８０】
本発明によれば、特に、携帯電話機又は携帯端末のように、処理能力が比較的低い組み込み装置について、そのディスプレイに表示されるウィンドウを、マウスのようなポインティングで操作する場合に、イベントキューに蓄積されるイベント数が減少し、非常に効果的である。また、リアルタイムに変動するＣＰＵ負荷量に応じて、イベントキュー最適化処理も動的且つ段階的に適用することにより、ＣＰＵの処理能力に対するタスクの処理量との関係を考慮することなく、様々な装置に適用できる。
【００８１】
本発明によれば、イベントキューに蓄積されたイベント群に対して、イベントの発生順序、デバイス／操作種別、発生時刻、操作データを考慮して、フィルタリング処理又はチャンキング処理をすることにより、タスクの実行上、必要でないと判断できるイベントのみを確実に削除できる。
【００８２】
前述した本発明における種々の実施形態によれば、当業者は、本発明の技術思想及び見地の範囲における種々の変更、修正及び省略を容易に行うことができる。前述の説明はあくまで例であって、何ら制約しようとするものではない。本発明は、特許請求の範囲及びその均等物として限定するものにのみ制約される。
【図面の簡単な説明】
【００８３】
【図１】従来技術に基づくイベント処理機能搭載装置の機能構成図である。
【図２】本発明におけるイベント処理機能搭載装置の機能構成図である。
【図３】タスク実行時間記憶部に蓄積される平均実行時間の例である。
【図４】本発明におけるイベントキュー最適化部のフローチャートである。
【図５】本発明におけるイベントキューの最適化前後の説明図である。
【符号の説明】
【００８４】
１  装置、携帯電話機
１０  オペレーティングシステム部
１０１  イベント制御部
１０２  イベントキュー
１０３  イベント処理部
１０４  タスクキュー
１０５  タスク実行部
１０６  タスク実行時間記憶部
１０７  ＣＰＵ負荷量算出部
１０８  イベントキュー最適化部
１１  入力デバイス部
１２  ＣＰＵ部
１３  その他の機能構成部
【図１】
0004771431.tif 000006
【図２】
0004771431.tif 000007
【図３】
0004771431.tif 000008
【図４】
0004771431.tif 000009
【図５】
0004771431.tif 000010