(57)【要約】【課題】タスク管理装置において、上位のプログラムが下位のプログラムからタスク処理の終了の通知を受ける場合にキャンセルしたタスクの終了通知を誤って処理することを防ぐ。【解決手段】  ＣＰＵは、イベントマネージャＥＭを実行し、所定の操作等を受けて、イベントマネージャＥＭのタスクがアプリケーションを実行するアプリケーションタスクＡＴ、デバイスドライバのドライバタスクＤＴを生成する。ＥＭ、ＡＴ、ＤＴは、順に上位の順番で階層構造になっている。ＥＭは、ＡＴを生成し、ＡＴは、ＤＴを生成する。タスクが終了すると上位のタスクに応答する。また、これらの生成、応答の間には、メッセージマネジメントタスクＭＭが介在し、ＭＭを通じてこれらの生成、応答を行うと共に、その通信の情報を記憶する。この情報を検索し、ＥＭで削除されたタスクがある場合には、ＭＭは上位のタスクへの応答を遮断するかまたはこの応答を通知しない。  【選択図】図２
2009151472.tif 000002
【特許請求の範囲】
【請求項１】
主従関係を有する上位、下位のプログラム群、および、所定のイベントに応じてこれらのプログラムを呼び出して実行するイベントマネージャのプログラムを記憶する記憶部と、
前記プログラム群を実行するタスク処理部と、を備え、前記タスク処理部は、前記上位のプログラムの実行に伴って行う呼び出しまたは要求に基づいて、下位のプログラムのタスク処理を行い、その下位のプログラムのタスクの完了の応答を上位のプログラムで取得するタスク管理装置において、
前記タスク処理部は、前記上位、下位のプログラムおよび前記イベントマネージャの間で、前記呼び出し、要求、または応答を行う時に、これらのプログラム間に介在して、前記呼び出し、応答の受け渡しを伝達すると共に、その受け渡しの通信情報であって、前記下位プログラムの応答をタスクごとに識別する応答名を含む通信情報を記憶させるメッセージ記憶プログラムを実行し、
前記タスク処理部は、すでに下位のプログラムで実行中のタスクのキャンセルの指示を前記イベントマネージャから受けているかどうか判断し、当該キャンセルの指示を受けているタスクから応答を受けた場合には、上位のプログラムへ応答を通知しないか、または当該応答を遮断するメッセージ遮断プログラムを実行するタスク管理装置。
【請求項２】
前記タスク処理部は、前記メッセージ記録プログラムの実行により、前記通信情報として、通信情報の内容をリスト化したリストと、複数のリストをリンクして配列構造にまとめるポインタと、を記述したリスト形式で前記記憶部に記憶させる請求項１に記載のタスク管理装置。
【請求項３】
前記タスク処理部は、前記メッセージ記録プログラムの実行により、前記通信情報として、前記応答名のほかに、上位のプログラムが下位のプログラムへ送る指示を記述したＡＰＩ（Application Programming Interface）メッセージ名と、アプリケーションを識別するアプリケーションＩＤ（identification）と、を含むデータセットで前記記憶部に記憶させる請求項１または請求項２に記載のタスク管理装置。
【請求項４】
前記タスク処理部は、前記上位のプログラムのタスクのキャンセルの指示を前記イベントマネージャから受けた場合には、メッセージ記憶プログラムを用いて、キャンセルの指示を受けたタスクに対応するリストを削除すると共に、前記リストの前後のポインタを修正する請求項２に記載のタスク管理装置。
【請求項５】
前記記憶部は、前記上位のプログラムとして、アプリケーションを記憶すると共に、前記下位のプログラムとしてデバイスドライバを記憶し、
前記タスク処理部は、アプリケーションとデバイスドライバとの間で前記呼び出し、応答時に前記メッセージ記憶プログラムを実行する請求項１〜請求項４のいずれかに記載のタスク管理装置。
【請求項６】
放送を受信して映像信号を出力する受信部と、
前記映像信号の処理を行う映像処理部とを備え、
前記記憶部は、デバイスドライバとして、前記受信部を制御する受信ドライバと、前記映像処理部を制御する映像処理ドライバを記憶し、前記アプリケーションとして、チャンネル切換の一連の動作が記述されたチャンネル切換アプリケーションを記憶し、
前記タスク処理部は、チャンネル切換アプリケーションの実行時に、前記受信ドライバおよび映像処理ドライバのタスクを生成する請求項５に記載のタスク管理装置。
【請求項７】
主従関係を有する上位、下位のプログラム群、および、イベントマネージャのプログラムを記憶する記憶部と、前記プログラム群を実行するタスク処理部と、を用いて、
前記タスク処理部が、イベントマネージャを実行することにより、所定のイベントに応じてこれらのプログラムを呼び出して実行するタスク生成ステップと、
前記タスク処理部が、前記上位のプログラムの実行に伴って、呼び出しまたは要求を行う要求ステップと、
前記要求ステップによる呼び出しまたは要求に基づいて、下位のプログラムのタスク処理を行う下位プログラムタスクステップと、
前記下位プログラムタスクステップで処理したタスクの完了の応答を上位のプログラムで取得する応答ステップを実行するタスク管理方法において、
前記タスク処理部により、前記タスク生成ステップまたは前記下位プログラムタスクステップまたは前記応答ステップにおいて、前記上位、下位のプログラムおよび前記イベントマネージャの間に介在して、前記呼び出し、応答の受け渡しを伝達する伝達ステップと、
伝達ステップにおける受け渡しの通信情報であって、前記下位プログラムの応答をタスクごとに識別する応答名を含む通信情報を記憶させるメッセージ記憶ステップと、
前記タスク処理部は、すでに下位のプログラムで実行中のタスクのキャンセルの指示を前記イベントマネージャから受けているかどうか判断し、当該キャンセルの指示を受けているタスクから応答を受けた場合には、上位のプログラムへ応答を通知しないか、または当該応答を遮断する遮断ステップと、を実行するタスク管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションタスクの生成、削除の指示を受けたアプリケーションタスクとドライバタスク間のメッセージ交換に関する。
【背景技術】
【０００２】
従来、電子機器、パソコンに指示された種々の命令を処理するために、内部のＣＰＵ（またはＭＰＵ）は、種々のプログラムを実行する。このプログラムは、呼び出し元のメインルーチンが、呼び出し先のサブルーチンを呼び出して、各種の機能を実行する階層構造になっている。このようにプログラムを実行するＣＰＵの処理の実行単位をタスクという。
【０００３】
タスクの管理方法としては、例えば、これらのプログラムの構成をイベントマネージャ、アプリケーション、ドライバという階層構造にすることができる。この場合には、イベントマネージャがこれらアプリケーション、ドライバのタスクを管理して実行させる。ここで、これらのタスクをそれぞれ、アプリケーションタスク、ドライバタスクと称する。イベントマネージャは、所定のキー操作、例えばテレビのチャンネル切り替え等の入力を受けたとき、所定の状態になったとき、即ち、所定のイベントが生じたときに、アプリケーションタスクを生成（spawn）するものである。アプリケーションタスクは、記憶装置内に記憶されたプログラムを実行するタスクである。これを実行することにより、ＣＰＵは、ドライバタスクに種々の命令を送って、上記入力に対応する一連の動作を行う。
【０００４】
例えば、テレビであれば、所定のチャンネル操作を受けて、画面を消去して、選局して、チャンネルのＯＳＤ（On Screen Display）を表示して・・といった一連の作業を行うため、それぞれのデバイスを制御するドライバに指示する。ドライバタスクは、デバイスを制御するドライバのプログラムである。例えば、ディスプレイドライバ、テレビのチューナの受信を制御するチューナドライバ、周辺機器を制御するドライバなどである。
【０００５】
図１のフロー図を用いて、このようなタスクを管理する方法について説明する。このフローは、下方向へ時間が流れている。このフローの例では、タスク１を指示する操作の後、タスク１が終了しないうちにタスク２を指示する操作を行った場合の処理を示している。例えば、チャンネル処理を想定して、タスク１がテレビの外部入力に移動するタスクであり、タスク２がチャンネル８に移動するタスクを想定することができる。
【０００６】
イベントマネージャＥＭは、リモコンの操作を受けて、タスク１を生成する（ＳＴ１）。ここでは簡単のために、アプリケーションタスクＡＴがドライバタスクに指示する（図中の「要求１」に対応する。）プロセスをまとめて１つのプロセス（「プロセス１」に対応する。）とする。
【０００７】
アプリケーションタスクＡＴを実行する過程で、ドライバタスクＤＴに動作の要求１を出す（ＳＴ２）。ドライバタスクＤＴでは、プロセス１（process1）を実行する（ＳＴ３）。ＳＴ３を実行中に、タスク２の操作を受けて、イベントマネージャＥＭは、タスク１の消去（ＳＴ４）および、タスク２の生成（ＳＴ５）を行う。
【０００８】
アプリケーションタスクＡＴは、タスク１の消去をドライバタスクＤＴに指示すべきところであるが、ドライバタスクＤＴがすでにプロセス１の実行中であることを理由に、この指示は行われない。ＳＴ５を受けて、要求２をドライバタスクＤＴに出力する（ＳＴ６）。ドライバタスクＤＴは、これを受けて、プロセス２を実行させる（ＳＴ７）。
【０００９】
その後、プロセス１の処理が終了すると、ドライバタスクＤＴは、アプリケーションタスクＡＴに返答を行う（ＳＴ８）。アプリケーションタスクＡＴは、この返答を受けて、イベントマネージャＥＭへ終了通知（ＥＮＤ）を行う（ＳＴ８）。その後、別のタスクの指示を受けると、前の処理が終わっていない場合には、ＳＴ４と同様にタスクを消去する（ＳＴ９）。そして、その指示を受けたタスクの生成を行う（図示省略）。
【００１０】
また、特許文献１、２には、タスク間でデータの授受を行うシステムにおいて、アドレスまたはメッセージ番号、情報の送信元、送信先等を記述した電文またはメッセージを送受信するメッセージ通信部を設けた構成が開示されている。
【特許文献１】特開平２−２９７６３３号公報
【特許文献２】特開平６−９５８９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、従来は、図２の例のように、アプリケーションタスクＡＴがプロセス２を要求してこれが終了していない間にプロセス１の返答を受けると、プロセス１の実行がＳＴ４で取り消されている（削除されている）がゆえに、アプリケーションタスクＡＴは、プロセス２が終了したものと誤認してしまう虞があった。
【００１２】
その結果、なんらの返答をイベントマネージャＥＭに返すことなく、プロセス２の実行がされない虞があった。例えば、プロセス２が、プロセス２を直接実行する場合には可能な処理であるがプロセス１の実行を経由した後ではプロセス２を実行できない処理であるとすれば、プロセス１を取り消していない以上、プロセス２の実行は失敗に終わる。そして、ＡＴはプロセス２が終了したものと勘違いしているから、ＡＴは、ＥＭにはなんらの通知もしない。仮に、プロセス２が終了したとＡＴが誤認していなければ、プロセス１を取り消した元の状態に戻したり、ユーザに通知したりすることが出来たはずであるが、それができない。その結果、ユーザが装置からなんらの通知を受けることなく、ユーザの操作が無視される虞があった。また、その後、ＡＴは、意図しないドライバタスクＤＴからのタスクの終了の応答を受けて、ＡＴの処理が不安定になる虞もあった。
【００１３】
さらに、特許文献１、２の構成では，確かに、プログラム間でのメッセージの授受を記録するものの、将来、下位装置から応答する予定のタスクを記憶することについては開示されていない。また、これらの特許文献では、イベントマネージャＥＭから、プロセスのキャンセルの通知を受けた場合についての処理については、開示されていない。
【００１４】
例えば、特許文献１では、タスクを集中管理するＬＵ管理タスクを設けるとしている。しかし、このタスク管理方法は、電文を付して、単にそのまま相手タスクに送受信するよう管理しているものである。その方法の目的は、個別の相互のタスク管理でなく、３以上の装置が存在することを前提としたタスク管理をするため、論理ユニット番号（Logical Unit Number、論理装置（LU）に割り振られた番号。（「オンライン・コンピュータ用語辞典」http://www2.nsknet.or.jp/~azuma/menu.htm））等を送信するものである。したがって、この構成は、論理ユニット番号を区別するものであって、タスク間を区別するものではなかった。タスク間を区別できず、タスクの電文をそのまま送信するので、特許文献１の装置を適用した場合に、タスク１をキャンセルしたときは、ＡＴは、プロセス１の終了がＤＴから応答を受けた場合に、プロセス２が終了したものと誤認する虞があった。
【００１５】
そこで、本発明は、タスク管理装置において、上位のプログラムが下位のプログラムからタスク処理の終了の通知を受ける場合に、キャンセルしたタスクの終了通知を誤って処理することを防ぐこと、およびこれに適した装置、方法を提供することを目的とする。
【課題を解決するための手段】
【００１６】
上記課題を解決するために、以下の構成を備える。
【００１７】
（１）  主従関係を有する上位、下位のプログラム群、および、所定のイベントに応じてこれらのプログラムを呼び出して実行するイベントマネージャのプログラムを記憶する記憶部と、
前記プログラム群を実行するタスク処理部と、を備え、前記タスク処理部は、前記上位のプログラムの実行に伴って行う呼び出しまたは要求に基づいて、下位のプログラムのタスク処理を行い、その下位のプログラムのタスクの完了の応答を上位のプログラムで取得するタスク管理装置において、
前記タスク処理部は、前記上位、下位のプログラムおよび前記イベントマネージャの間で、前記呼び出し、要求、または応答を行う時に、これらのプログラム間に介在して、前記呼び出し、応答の受け渡しを伝達すると共に、その受け渡しの通信情報であって、前記下位プログラムの応答をタスクごとに識別する応答名を含む通信情報を記憶させるメッセージ記憶プログラムを実行し、
前記タスク処理部は、すでに下位のプログラムで実行中のタスクのキャンセルの指示を前記イベントマネージャから受けているかどうか判断し、当該キャンセルの指示を受けているタスクから応答を受けた場合には、上位のプログラムへ応答を通知しないか、または当該応答を遮断するメッセージ遮断プログラムを実行する。
【００１８】
この構成では、タスク処理部は、前記上位、下位のプログラム間および前記イベントマネージャ間で、前記呼び出し、要求、または応答を行う時に、メッセージ記憶プログラムを実行して、その受け渡しの通信情報を記憶させる。この通信情報には、応答を識別しているので、どの下位プログラムのタスクを実行したかを識別できる。これにより、メッセージ遮断プログラムの実行により、すでにキャンセルの指示を受けている、下位のプログラムのタスクについては、上位のプログラムへの応答を通知しないか遮断する。したがって、すでにキャンセルの指示がされた下位のプログラムのタスクから応答を受けることがないから、上位のプログラムが他のタスクの処理が終了したものと、誤認することがない。また、誤って認識した後、意図しない応答を受けて上位のプログラムの処理が混乱する虞も防ぐことが出来る。
なお、主従関係にあるとは、上位プログラムの指示または要求に応じて下位プログラムが処理を行うことをいうものとする。
【００１９】
（２）  前記タスク処理部は、前記メッセージ記録プログラムの実行により、前記通信情報として、通信情報の内容をリスト化したリストと、複数のリストをリンクして配列構造にまとめるポインタと、を記述したリスト形式で前記記憶部に記憶させる。
【００２０】
この構成では、リストを、ポインタによりリンクして、配列構造とすることにより、１まとまりのデータセットにして記憶している。したがって、すでに下位のプログラムで実行中のタスクのキャンセルの指示を前記イベントマネージャから受けているかどうか判断をするときに、容易にこれに該当するかを検索できる。
【００２１】
（３）  前記タスク処理部は、前記メッセージ記録プログラムの実行により、前記通信情報として、前記応答名のほかに、上位のプログラムが下位のプログラムへ送る指示を記述したＡＰＩ（Application Programming Interface）メッセージ名と、アプリケーションを識別するアプリケーションＩＤ（identification）と、を含むデータセットで前記記憶部に記憶させる。
【００２２】
この構成では、ＡＰＩメッセージ名、アプリケーションＩＤを記述しているので、下位のプログラムへの指示を前記メッセージ記録プログラムで管理できる。また、下位プログラムのタスクからタスクの終了を返答する場合に、すでにタスクのキャンセルの指示が出されているかを、より容易に検索できる。
【００２３】
なお、この構成は、（２）の構成に適用することが出来るが、この場合の本構成のデータセットは、（２）のリストに相当する。
【００２４】
（４）  前記タスク処理部は、前記上位のプログラムのタスクのキャンセルの指示を前記イベントマネージャから受けた場合には、メッセージ記憶プログラムを用いて、キャンセルの指示を受けたタスクに対応するリストを削除すると共に、前記リストの前後のポインタを修正する。
【００２５】
この構成では、タスクのキャンセルを受けると、メッセージ記憶プログラムを用いて、キャンセルの指示を受けたタスクに対応するリストを削除する。したがって不要になったリストのデータ領域を節約できる。このとき、リストの前後のポインタを修正するから、前後のリストは分断されずに、タスク処理部は、１まとまりの配列として把握できる。また、そのタスクのリストの不存在により、キャンセルされたことを記憶できる。
【００２６】
（５）  前記記憶部は、前記上位のプログラムとして、アプリケーションを記憶すると共に、前記下位のプログラムとしてデバイスドライバを記憶し、
前記タスク処理部は、アプリケーションとデバイスドライバとの間で前記呼び出し、応答時に前記メッセージ記憶プログラムを実行するとしてもよい。
【００２７】
（６）  放送を受信して映像信号を出力する受信部と、
前記映像信号の処理を行う映像処理部とを備え、
前記記憶部は、デバイスドライバとして、前記受信部を制御する受信ドライバと、前記映像処理部を制御する映像処理ドライバを記憶し、前記アプリケーションとして、チャンネル切換の一連の動作が記述されたチャンネル切換アプリケーションを記憶し、
前記タスク処理部は、チャンネル切換アプリケーションの実行時に、前記受信ドライバおよび映像処理ドライバのタスクを生成するようにしてもよい。
【００２８】
この構成では、テレビの構成を備え、タスクを管理することができる。
【００２９】
（７）  主従関係を有する上位、下位のプログラム群、および、イベントマネージャのプログラムを記憶する記憶部と、前記プログラム群を実行するタスク処理部と、を用いて、
前記タスク処理部が、イベントマネージャを実行することにより、所定のイベントに応じてこれらのプログラムを呼び出して実行するタスク生成ステップと、
前記タスク処理部が、前記上位のプログラムの実行に伴って、下位のプログラムに対し呼び出しまたは要求を行う要求ステップと、
前記要求ステップによる呼び出しまたは要求に基づいて、下位のプログラムのタスク処理を行う下位プログラムタスクステップと、
前記下位プログラムタスクステップで処理したタスクの完了の応答を上位のプログラムで取得する応答ステップを実行するタスク管理方法において、
前記タスク処理部により、前記タスク生成ステップまたは前記下位プログラムタスクステップまたは前記応答ステップにおいて、前記上位、下位のプログラムおよび前記イベントマネージャの間に介在して、前記呼び出し、応答の受け渡しを伝達する伝達ステップと、
伝達ステップにおける受け渡しの通信情報であって、前記下位プログラムの応答をタスクごとに識別する応答名を含む通信情報を記憶させるメッセージ記憶ステップと、
前記タスク処理部は、すでに下位のプログラムで実行中のタスクのキャンセルの指示を前記イベントマネージャから受けているかどうか判断し、当該キャンセルの指示を受けているタスクから応答を受けた場合には、上位のプログラムへ応答を通知しないか、または当該応答を遮断する遮断ステップと、を実行するようにしてもよい。
【発明の効果】
【００３０】
本発明によれば、タスク管理装置において、上位のタスクが呼び出し先のタスク処理の終了の通知を受ける場合に、中断させたいタスクについて、タスクの終了通知を誤って処理することを防ぐことができる。
【発明を実施するための最良の形態】
【００３１】
図２の構成図を用いて、本発明の一実施形態であるテレビについて説明する。このテレビは、メインプロセッサ１と、受信部４１、画像処理部および表示器４２、音声処理部４３、操作部９を備えている。
【００３２】
メインプロセッサ１は、パソコンのＣＰＵまたはマイコンの構成を備えており、ＣＰＵ１０、ＲＡＭ１１、ＲＯＭ１２を備えている。ＲＯＭ１２には、各種のプログラムが記録されている。ＲＡＭ１１は、一時記憶するメモリである。ＣＰＵ１０は、ＲＯＭ１２から、種々のプログラムをＲＡＭ１１に呼び出して、ＲＡＭ１１のプログラムを実行する。
【００３３】
ＲＯＭ１２には、プログラムとして、イベントマネージャ１３、アプリケーションＡ１６、アプリケーションＢ１７、アプリケーションＣ１８、受信ドライバ２１、画像制御ドライバ２２、音声ドライバ２３、メッセージマネジメントプログラム３が記録されている。これらのプログラムは、階層構造になっている。詳細は図３の説明で後述する。
【００３４】
メインプロセッサ１を起動すると、ＣＰＵ１０は、ＲＡＭ１１にイベントマネージャ１３を呼び出す。ＣＰＵ１０には、操作部９の操作に応じて、割り込み入力が入り、メインプロセッサ１は、イベントマネージャ１３を実行させる。これにより、ＣＰＵ１０は、操作部９の操作の内容を把握して、必要なアプリケーションをＲＯＭ１２からＲＡＭ１１に呼び出して実行する。
【００３５】
なお、これらのプログラム（イベントマネージャ１３、アプリケーション１６〜１８、ドライバ２１〜２３）を実行する処理の単位をタスクといい、イベントマネージャ１３によるプログラムの呼び出しをタスクの生成と称することにする。例えば、アプリケーションを実行するタスクを、以下では、アプリケーションタスクと称し、これらのプログラムの呼び出しをアプリケーションタスクの生成と称する。タスクの大きさは、プログラムによって異なる。例えば、上位の階層のプログラムは下位階層の１以上のプログラムを呼び出して実行するから、１つのタスクの大きさは下位階層のそれより大きくなる。
【００３６】
受信部４１は、放送信号を受信する。この放送信号はデジタル形式でもアナログ形式でもよい。画像処理部および表示器４２は、映像信号をデコードしたり、アスペクト比を調整したりする画像処理部と、表示器を備える。表示器には、各ドットに映像信号のデータを出力するドライバを備える。
【００３７】
次に、図３を用いて、メインプロセッサ１内のプログラムの呼び出しについて、より詳しく説明する。前述のとおり、これらのプログラムは、階層構造になっている。イベントマネージャ１３が最上位階層で、１６〜１８が中位の階層、各ドライバ２１〜２３は、下位階層である。下位階層のプログラムは、上位階層のプログラムのサブルーチンまたは関数となっている。ＣＰＵ１０は、上位のプログラムの実行に伴って、下位階層のプログラムをＲＡＭ１１に呼び出して実行する（図中の破線矢印参照）。また、上位階層のプログラムの実行中に下位階層のプログラムの実行が終了した場合には、上位階層のプログラムは、その終了の応答を下位階層のプログラムから受ける（図中の点線矢印参照）。
【００３８】
また、メインプロセッサ１は、アプリケーション１６〜１８、各種ドライバ２１〜２３の間の呼び出し時、および、下位プログラムの終了の応答時には、メッセージマネジメントプログラム３を呼び出す。例えば、イベントマネージャ１３がこれを起動してもよい。そして、これらアプリケーション、各種ドライバの呼び出し時、および、下位プログラムの終了の応答は、プログラム３の実行を介して行う。
【００３９】
プログラム３は、これらの呼び出し時、または、下位階層のプログラムの終了時に応答するメッセージの内容を記述した応答処理用情報３１（response message information）をＲＡＭ１１に記憶する。プログラム３は、このように、プログラム間のデータの授受を管理している。プログラム３は、また、プログラムのプロセスの処理をキャンセルしたような場合には、不要となった情報や、送信すると混乱を招く情報の送信を遮断する。詳細は図５で後述する。
【００４０】
なお、メッセージマネジメントプログラム３の応答処理用情報３１を記憶するステップは、本発明のメッセージ記憶プログラムに相当する。プログラム３、応答処理用情報３１は、ＲＡＭ１１内に常駐していてもよい。
【００４１】
アプリケーションＡ１６、アプリケーションＢ１７、アプリケーションＣ１８は、プログラム３を介して、各ドライバ２１〜２３を呼び出して、種々の一連の動作を行う。例えば、アプリケーションＡ１６は、チャンネル切換のアプリケーションである。アプリケーションＢ１７は、初期設定のプログラムである。アプリケーションＣ１８は、音声、音量を制御するプログラムである。
【００４２】
アプリケーションＡ１６を実行するためには、画面消去、物理チャンネル切換、チャンネルのＯＳＤ（On Screen Display）表示をする。そのために、放送信号を受信するデバイスに指示を送る受信ドライバ２１、画像や映像信号、画面を制御する画像制御ドライバ２２に必要な情報を伝達して、これらのデバイスドライバを起動させる。また、受信ドライバ２１は、受信部４１を駆動する。画像制御ドライバ２２は、画像処理部および表示器４２を駆動する（実線矢印参照）。
【００４３】
アプリケーションＢ１７を実行させるためには、ＯＳＤを表示する必要があり、画像制御ドライバ２２を起動する。アプリケーションＣ１８を実行するためには、音声信号を処理する音声ドライバ２３のサブルーチンを呼び出す。音声ドライバ２３は、音声処理部４３を駆動する。
【００４４】
次に、図４を用いて、メッセージマネジメントプログラム３が生成する応答処理用情報３１のデータ構造の例について説明する。応答処理用情報３１としては、図４（Ａ）のようなデータセットを有するリスト形式で記憶することができる。図４（Ａ）の左側は、変数名称の例であり、右側はその内容である。図４（Ａ）のとおり、情報３１には、ＡＰＩ（Application Programming Interface）メッセージ名apiMsg（API Message）と、ドライバ応答名drvMsg（driver response Message）と、アプリケーションＩＤ（identification）AP_IDと、を含むデータセットである。
【００４５】
AP_IDは、上位のプログラムが下位のプログラムへ送る指示を記述したものである。ここで、図２、図３では、図示を省略しているが、ＡＰＩは、プログラムの記述を容易にするためのライブラリ関数等であり、本実施形態では、アプリケーションとデバイスドライバの間に介在している。より正確には、ＡＰＩは、メッセージマネジメントタスクＭＭとドライバタスクＤＴとの間、またはＡＴとＭＭとの間のいずれかに介在していればよいが、ＭＭをＡＴと同じプログラム言語で作成する場合には、プログラムの作成の容易さからすれば、前者のほうが望ましい。
【００４６】
ドライバ応答名（driver response Message）は、ドライバタスクの応答をタスクごとに識別するコードである。アプリケーションＩＤ（identification）は、アプリケーションを識別するのに用いる。このように、ＡＰＩメッセージ名、アプリケーションＩＤを記述しているので、下位のプログラムへの指示を前記メッセージ記録プログラムで管理できる。また、下位プログラムのタスクからタスクの終了を返答する場合に、すでにアプリケーションタスクのキャンセルの指示がイベントマネージャ１３から出されているか否かを、より容易に検索できる。
【００４７】
なお、ドライバ応答名drvMsgは、本発明の応答名に相当する。また、apiMsg、drvMsgは、例えば、unsignedlong型のデータとすることができる。
【００４８】
図４（Ｂ）を用いて、応答処理用情報３１のフォーマットについて説明する。応答処理用情報３１は、双方向リスト形式となっている。双方向リスト形式は、リストにアドレス（ポインタ）が記述されている。例えばｎ＋１番目のリストについては、ｎ番目のリストが記憶されているアドレスと、ｎ＋２番目のリストが記憶されているアドレスが記述されている。したがって、これをたどれば、ｎ、ｎ＋１、ｎ＋２・・・という風に昇順にリストの情報を取得できる。また、逆にｎ、ｎ−１、ｎ−２・・・という風に降順にリストの情報を取得できる。デバイスドライバ２１〜２３から応答がメッセージマネジメントプログラム３に返ってきたときは、メインプロセッサ１は、これらをたどりながら、順番にどのアプリケーションに対する応答かをアプリケーションＩＤ、ＡＰＩメッセージ名を検索することができる。
【００４９】
次に、図５を用いて、メインプロセッサ１のタスクのフローについて説明する。各縦の列は、上の欄に記載したイベントマネージャＥＭ、アプリケーションタスクＡＴ、メッセージマネジメントタスクＭＭ、ドライバタスクＤＴの各タスクの実行を表わしている。そして、このフローは、下方向へ時間が流れている。
【００５０】
図５に対し図２、図３との関係について説明すると、イベントマネージャＥＭは、イベントマネージャ１３を実行するタスクである。アプリケーションタスクＡＴは、アプリケーション１６〜１８のいずれかを実行するタスクである。ドライバ２１〜２３の実行がドライバタスクＤＴである。また、横方向の矢印は、プログラムの呼び出し、要求、応答を表わしている。なお、図５では、アプリケーションが、デバイスドライバを呼び出して処理をさせることを要求ということにする。また、ここでは簡単のために、アプリケーションタスクＡＴがドライバタスクに指示する（図中の「要求ＡＴ１」に対応する。）プロセスをまとめて１つのプロセス（例えば「プロセス１」）とする。
【００５１】
（ＳＴ１１）イベントマネージャＥＭは、所定のイベントを受けてアプリケーションタスクＡＰ１を生成する指示をメッセージマネジメントタスクＭＭに出す。例えば、このイベントは、操作部９のリモコンから受けたチャンネル切換の入力とすることができる。
（ＳＴ１２）ＭＭは、これを受けて、アプリケーションタスクＡＴ１を生成する。
（ＳＴ１３）ＡＴ１の実行に伴い、ドライバタスクＤＴ１を実行するため、ＭＭに要求＿ＡＴ１を出す。
（ＳＴ１４）ＭＭは、要求＿Ｍ１をＤＴに送る。このとき、タスクＡＴ１がＤＴからの返答を待っていることをＲＡＭ１１に記憶させる。
（ＳＴ１５）要求＿Ｍ１に基づいて、ＤＴは、プロセス１（process1）の実行を開始する。
【００５２】
ＳＴ１５の後、プロセス１の終了の通知が来る前に、ＡＴ１とは、別のイベント、例えばチャンネル切換が入ったものとする。
【００５３】
（ＳＴ１６）このとき、ＳＴ１で指示していたチャンネル切換を取りやめて、アプリケーションタスクＡＴ２を実行するため、ＡＴ１の消去の通知をＭＭへ行う（ＳＴ１６）。
（ＳＴ１７）ＡＴ１の消去の通知をＡＴ１に伝達する。ＡＴ１は、すでにプロセス１を実行を指示した後であるから、すでに消去できない状態であり、なんらの指示を行わない。
（ＳＴ１８）その後、プロセス１は、ＭＭに応答する。
（ＳＴ１９）ＡＴ１消去の通知の後、ＥＭは、ＡＴ２を生成するよう、ＭＭに通知する。
（ＳＴ２０）ＭＭは、ＡＴ２の生成の通知を受けて、ＡＴ２のタスクを生成する。
【００５４】
（ＳＴ２１）ＡＴ１は、ドライバタスクＤＴ２を実行するため、ＭＭに要求＿ＡＴ１を出す。
（ＳＴ２２）ＭＭは、要求＿ＭＭ２をＤＴに送る。このとき、タスクＡＴ２がＤＴからの返答を待っていることをＲＡＭ１１に記憶させる。
（ＳＴ２３）要求＿ＭＭ２に基づいて、ＤＴは、プロセス２（process2）の実行を開始する。
【００５５】
プロセス２の実行の後、ＭＭは、プロセス１の実行の終了の応答を受ける。このとき、ＭＭは、応答処理用情報３１を検索し、プロセス１について、すでに削除の要求が出ていることを検出する。そして、この要求がでていることを検出すると、ＭＭは、プロセス１の実行の終了の応答を受けても、この情報をアプリケーションタスクＡＴ２に伝達しない。これにより、ＡＴ２は、プロセス１の終了をプロセス２の終了と誤認することがない。したがって、その後、プロセス２の終了の応答を受けたときに、ＡＴ２は、確実にそのプロセス２の実行の結果を検出できる。
【００５６】
（ＳＴ２４）その後、ＭＭは、プロセス２の終了の応答をドライバタスクＤＴから受ける。この場合において、たとえ、プロセス２が異常終了になったとしても、上述のとおり、確実にプロセス２の実行の結果を検出できる。したがって、例えば、プロセス２が、プロセス１の実行がされた後は出来ない処理であっても、プロセス１を実行する前の状態に戻して、その後改めて、プロセス２を実行することが可能になる。したがって、操作部９からのユーザの操作に対し、なんら返答をすることや是正措置をせず、無視してしまうといったことを防ぐことができる。
【００５７】
ＳＴ２４の後は、メッセージマネジメントタスクＭＭは、直接、イベントマネージャＥＭに、ＳＴ２４の状態を応答してもよいし、ＡＴ２が、プロセス２の終了をＭＭから受けて、イベントマネージャＥＭに返してもよい。
【００５８】
次に、図６を用いて、図５のフローのＳＴ１６でタスクが消去された場合の応答処理用情報３１の修正処理について説明する。図６は、情報３１のリストを表わしている。図６（Ａ）のように、ＳＴ１６により、リストｎ＋１が消去されたとすると、図６（Ｂ）のように、リストｎとリストｎ＋２のアドレスをリンクさせる。そのために、リストｎに記述されたリストｎ＋１のアドレス３１１をリストｎ＋２のアドレス３１３にすると共に、リストｎ＋２に記述されたリストｎ＋１のアドレス３１２をリストｎのアドレス３１４にする。このようにリンクしているので、応答処理用情報３１を一連の配列構造とすることができ、リストｎ＋１が消去されたことを容易に検索できる。
【００５９】
なお、以上の図４、図６で説明した添え字のｎ、ｎ＋１は、説明の便宜的なものであり、実装上は、単に、各リストが互いに隣のリストのアドレスを示してつながっていればよく、添え字を用いて応答処理用情報３１やＭ２のプログラムを記述することを要しない。また、リストはアドレスが連続していることを要しない。以上では、情報３１のリストとして、双方向リストを用いたが、昇順、または降順のいずれかでアドレスをリンクする片方向リスト形式でもよい。また、リスト形式は本発明を実施する上では必須ではなく、応答処理用情報３１を検索できればよい。ただし、リスト形式でデータを記述すれば、情報３１を容易に検索できるので、リスト形式で情報３１を記述するのが望ましい。
【００６０】
本実施形態のＲＡＭ１１と、ＲＯＭ１２をあわせたものは、本発明の記憶部に相当する。本実施形態のアプリケーション、デバイスドライバは、本発明のそれぞれ上位のプログラム、下位のプログラムに相当する。メッセージマネジメントプログラム３により、記憶させることは、メッセージマネジメントプログラム３により、リストを検索して、合致するものを検索し、ＡＴ２への応答を通知しないまたは遮断することは、本発明のメッセージ遮断プログラムに相当する。
【００６１】
図２、図３の構成およびプログラムの構成は例示であり、別のドライバ、アプリケーション、外部装置を備えていてもよいし、そのすべてを備えなくてもよい。ＲＯＭ、ＲＡＭは、マイコンコアに含まれていなくてもよいし、外部に接続するメモリでもよい。その装置が機能するように、プロセッサ、プログラムを構成できればよい。以上の図２の説明では、テレビを例にとり説明したが、テレビでなくても、デバイスドライバを用いてアプリケーションを実行する電子機器であれば、本実施形態をこれに適用できる。さらには、必ずしもデバイスドライバ、アプリケーションを有する電子機器でなくても、主従関係にある上位プログラム、下位プログラム間でのメッセージの授受についても、本実施形態を応用できる。
【００６２】
以上では、機能ごとに分離したブロックで説明したが、実装上は、これらの機能のうち、いずれかが複数の機能が一体となったシステムＩＣで構成してもよいし、一つのブロックを複数に分離して構成してもよい。例えば、デバイスドライバまたは下位のプログラムが、メインプロセッサ１の外にあるサブプロセッサ内部に記憶されている場合でも応用できる。具体的には、受信部４１にサブプロセッサやマイコンを設け、その内部でデバイスドライバを実行してもよい。この場合は、サブプロセッサと通信してデバイスドライバまたは下位プログラムを実行する。そして、メインプロセッサ内部で、メッセージマネジメントタスクＭＭを設けて、サブプロセッサとの通信を図４のフォーマットで記憶することができる。また、サブプロセッサから応答が入ってきても、図５の説明のとおり、すでに取り消したデバイスドライバのタスクについては、アプリケーションに通知しない。このような場合には、メインプロセッサとサブプロセッサを合わせたものが本発明のタスク処理部に相当する。
【００６３】
以上の実施形態では、プログラムが階層構造になり、イベントマネージャが、アプリケーションを呼び出し、アプリケーションがデバイスドライバを呼び出し、これらの間にメッセージマネジメントタスクＭＭが介在する構成とした。しかし、下位のデバイスドライバがＲＡＭ１１に常駐して、上位のアプリケーションから要求があった場合に、その要求というイベントを契機にしてタスクを実行してもよい。特に、上記サブプロセッサ内にデバイスドライバを記憶しておくときは、デバイスドライバを常時、稼動状態にして、アプリケーションからの要求を契機にタスクを実行してもよい。この要求は本発明の要求に相当する。
【図面の簡単な説明】
【００６４】
【図１】従来のタスク処理のフローを示す。
【図２】本実施形態のテレビのブロック構成を示す。
【図３】本実施形態のテレビがタスクを処理するためにプログラムを呼び出す手順を示す。
【図４】本実施形態のテレビのタスク処理で用いる応答処理用情報のデータ構造の１例を示す。
【図５】本実施形態のタスク処理のフローを示す。
【図６】本実施形態のタスクが削除された場合のリストの修正方法を示す。
【符号の説明】
【００６５】
１−メインプロセッサ、  １０−ＣＰＵ、１１−ＲＡＭ、  １２−ＲＯＭ、
１３−イベントマネージャ、  １６−アプリケーションＡ、
１７−アプリケーションＢ、  １８−アプリケーションＣ、
２１−受信ドライバ、  ２２−画像制御ドライバ、  ２３−音声ドライバ、
３−メッセージマネジメントプログラム、  ３１−応答処理用情報、
４１−受信部、  ４２−画像処理部および表示器、  ４３−音声処理部、
９−操作部、  ＥＭ−イベントマネージャ、  ＡＴ−アプリケーションタスク、
ＤＴ−ドライバタスク、  ＥＯＳ−エンドオブシーケンス、
ＭＭ−メッセージマネジメントタスク
【図１】
2009151472.tif 000003
【図２】
2009151472.tif 000004
【図３】
2009151472.tif 000005
【図４】
2009151472.tif 000006
【図５】
2009151472.tif 000007
【図６】
2009151472.tif 000008