JP3882760B2 - タスク間通信方法、プログラム、記録媒体、電子機器 - Google Patents

タスク間通信方法、プログラム、記録媒体、電子機器 Download PDF

Info

Publication number
JP3882760B2
JP3882760B2 JP2003040056A JP2003040056A JP3882760B2 JP 3882760 B2 JP3882760 B2 JP 3882760B2 JP 2003040056 A JP2003040056 A JP 2003040056A JP 2003040056 A JP2003040056 A JP 2003040056A JP 3882760 B2 JP3882760 B2 JP 3882760B2
Authority
JP
Japan
Prior art keywords
task
processing
data
queue
wake
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.)
Expired - Fee Related
Application number
JP2003040056A
Other languages
English (en)
Other versions
JP2004252574A (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.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2003040056A priority Critical patent/JP3882760B2/ja
Priority to US10/775,098 priority patent/US7461380B2/en
Priority to DE602004025162T priority patent/DE602004025162D1/de
Priority to EP04003561A priority patent/EP1450256B1/en
Publication of JP2004252574A publication Critical patent/JP2004252574A/ja
Application granted granted Critical
Publication of JP3882760B2 publication Critical patent/JP3882760B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Description

【0001】
【発明の属する技術分野】
タスク間通信方法等に関する。
【0002】
【従来の技術】
従来からリアルタイムオペレーティングシステム(RTOS)等によって管理されるタスク間で、データを含むメッセージの通信(送受信、やりとり、受け渡し)を行うための種々のタスク間通信方法が知られている(例えば、特許文献1参照。)。
【0003】
例えば、図4(a)は、メッセージを送信する側のタスク内(あるいはそのタスクから呼び出すサブルーチン内)におけるメッセージ送信処理の流れを示すフローチャートである。また図4(b)は、メッセージ内のデータを受信(取得)する側のタスク(あるいはそのタスクから呼び出すサブルーチン内)におけるデータ受信利用処理の流れを示すフローチャートである。
【0004】
ここで、メッセージの送信側タスクをタスクA、メッセージに基づいてRTOSによって起床されメッセージ内のデータを受信して利用する受信側タスクをタスクBとして説明する。タスクAは優先度Aであり、タスクBは優先度Bであり、優先度Aは優先度Bよりも優先度が高いものとする。RTOSは、各タスクから起床待ちキュー(Ready Queue)にキューイングされたタスクのうち、優先度の最も高いタスクを起床させるスケジューリング方法を採るものとする。
【0005】
例えば、タスクA内でイベントの発生を検知した場合に、そのイベントに関連するデータを、タスクBのそのイベント用の処理ルーチンで処理させるためにメッセージ通信処理が行われる。
タスクAにおけるメッセージ送信処理は、図4(a)に示すように、送信対象のデータをメッセージ送信先のタスク用のキュー、すなわち、タスクB用のキュー(Queue)にキューイング(保存)し(S11)、RTOSに対し、対応する送信先タスク(受信側タスク)、すなわちタスクBの起床要求を行う(S12)処理である。
【0006】
RTOSは、この起床要求を受け、この起床要求されたタスクを特定するための識別情報(タスクID)をタスクの起床待ちキューにキューイングする。そして、優先度AのタスクAの処理が完了すると、RTOSはタスクBの優先度よりも高い優先度のタスクのタスクIDが起床待ちキューになくなった時点で、起床待ちキューにキューイングされているタスクIDに基づいてタスクBを起床し、タスクBを実行する。
【0007】
このタスクB内では、図4(b)に示す処理が行われる。つまり、自タスク用のキュー、すなわちタスクBのキューからデータを取り出し(S21)、そのデータを用いた処理を行う(S22)。このようにして、タスクA内の処理からタスクBを起床させてタスクB内の処理を実行させ、このタスクB内の処理で、タスクA内の処理によってキューイングされたデータを受け取って利用することができる。例えば、タスクA内で検知したイベントの処理に必要なデータを、タスクB内のこのイベントの処理ルーチンに渡して処理させることができる。
【0008】
【特許文献1】
特開2002−189606号公報
【0009】
【発明が解決しようとする課題】
こうした従来のタスク間通信方法では、優先度が高いタスクA内で、優先度の低いタスクBに対してメッセージを一度に複数回送信する場合、図4(a)に示したメッセージ送信処理は、複数回実行されることとなる。
【0010】
したがって、メッセージを送信する回数分のデータが、一旦、送信先のタスクB用のキューにキューイングされるとともに、タスクBの起床要求がRTOSのタスクの起床待ちキュー(Ready Queue)にキューイングされる。
そして、その後、タスクBよりも優先度の高い処理(タスク、割り込み)が無くなった時点で、1.RTOSによるタスクBの起床処理 → 2.タスクB内でのデータ受信処理(S21) → 3.タスクBにおける受信したデータを用いた処理(S22) → 4.タスクB終了という一連のメッセージ配送処理を、その複数回分繰り返し実行する必要がある。
【0011】
例えば、図5は、図4(a)の処理を行うルーチンをSendMessage関数、図4(b)のS21の処理を行うルーチンをReceiveMessage関数としてサブルーチン化して持つイベントサービスを介して、タスクAからタスクB内のイベントの処理ルーチンにデータA,データB,データCに基づく処理を実行させるための3つのメッセージを送る場合のタスク間メッセージ通信の処理の流れを示す説明図である。なお、イベントサービスはRTOSの一部として構成することもでき、タスクの一部(サブルーチン)として構成することもできる。ここでは、イベントサービスによる処理は、イベントサービスの関数の呼び出し元と同じ実行レベル(優先度)で実行されるものとして説明する。
【0012】
図5に示すように、タスクA内でイベントサービスのSendMessage関数を呼び出し、データAをその引数としてイベントサービスへ渡す。イベントサービスは、この関数内でタスクB用のキューにデータAをキューイングし(図4(a)のS11に相当する)、RTOSに対してタスクBの起床要求をする(図4(a)のS12に相当する)。そしてこの起床要求に基づきRTOSは、起床待ちキューにタスクBのタスクIDをキューイングする。そして、再びタスクAは、SendMessage関数を呼ぶことでデータBをイベントサービスへ渡す。イベントサービスはタスクB用のキューにデータBをキューイングし(S11)、RTOSに対してタスクBの起床要求をする(S12)。この要求に基づきRTOSは、起床待ちキューにタスクBのタスクIDをキューイングする。そして、再びタスクAは、SendMessage関数を呼ぶことでデータCをイベントサービスへ渡す。イベントサービスはタスクBのキューにデータCをキューイングし(S11)、RTOSに対してタスクBの起床要求をする(S12)。この要求に基づきRTOSは、起床待ちキューにタスクBのタスクIDをキューイングする。そして、タスクAのすべての処理が終了すると、RTOSへ処理が移行する。
【0013】
RTOSは、起床待ちキューを参照して、このキュー内で優先度の最も高いタスクIDに対応するタスクを起床させる。起床待ちキューには、タスクBのタスクIDがキューイングされているので、タスクBを起床させる(図5における一番上のSchedule)。ここで起床待ちキューに残されたタスクBのタスクIDは残り2つとなる。起床されたタスクB内の処理では、イベントサービスのReceiveMessage関数を呼ぶ。イベントサービスは、ReceiveMessage関数の処理として、タスクB用にキューイングされているデータAを取り出し(図4のS21に相当する)、タスクBにそのデータAを返す。そしてタスクBは、イベントサービスから受け取ったデータAを用いた処理を実行する(図4のS22に相当する)。そしてタスクBのその他の処理が終了すると、処理をRTOSへ移行させる。RTOSは、起床待ちキューを参照して、優先度の高い順にタスクを起床させる。起床待ちキューには、タスクBがキューイングされているので、タスクBを起床させる。ここで起床待ちキューに残されたタスクBのタスクIDは残り1つとなる。起床されたタスクB内の処理では、イベントサービスのReceiveMessage関数を呼ぶ。イベントサービスは、ReceiveMessage関数の処理として、タスクB用にキューイングされているデータBを取り出し(S21)、タスクBにそのデータBを返す。そしてタスクBは、イベントサービスから受け取ったデータBを用いた処理を実行する(S22)。そしてタスクBのその他の処理が終了すると、処理をRTOSへ移行させる。RTOSは、起床待ちキューを参照して、優先度の高い順にタスクを起床させる。起床待ちキューにはまだタスクBがキューイングされているので、タスクBを起床させる。ここで起床待ちキューは空になる。起床されたタスクB内の処理では、イベントサービスのReceiveMessage関数を呼ぶ。イベントサービスは、ReceiveMessage関数の処理として、タスクB用にキューイングされているデータCを取り出し(S21)、タスクBにそのデータCを返す。そしてタスクBは、イベントサービスから受け取ったデータCを用いた処理を実行する(S22)。そしてタスクBのその他の処理が終了すると、処理をRTOSへ移行させる。
【0014】
このように、送信側タスク(タスクA)内で処理をRTOSへ返すことなく、送信先のタスク(タスクB)にメッセージを複数回送信した場合に、受信側タスクであるタスクBは、単にタスクB用のキュー内のデータを受信してそのデータを用いる処理を順次実行するだけにもかかわらず、1メッセージ毎にタスクの起床・終了処理(RTOSにおける処理(例えば図5のscheduleのための処理など)やタスク内での処理(例えば図4(b)の処理へ移行するための判定処理など)が発生し、処理装置(例えばCPU)の処理負荷が大きくなるという問題がある。
【0015】
そこで本願発明は、処理装置の処理負荷を低減させることのできるタスク間通信方法等を提供することを目的とする。
【0016】
【課題を解決するための手段及び発明の効果】
上述した問題点を解決するためになされた請求項1に記載のタスク間通信方法は、送信側タスク上での処理から受信側タスク上での処理に対するデータの送信要求が発生した場合に、送信側タスク上での処理において、そのデータを、受信側タスク上での処理から取得可能なキューに格納し、その受信側タスクの起床要求をオペレーティングシステムに対して行うものである。
この送信側タスク上での処理においては、データの送信要求が発生する度、当該データを、受信側タスク上での処理から取得可能な前記キューに格納するが、受信側タスクの起床要求については、データを前記キューに格納する度には実行せずに、受信側タスクの起床要求の回数を、データを前記キューに格納する回数よりも少ない回数とする。
そして、その起床要求に基づいてオペレーティングシステムの処理によって受信側タスクが起床された際に、その受信側タスク上での処理において、その受信側タスク上での処理から取得可能な前記キューに格納されたデータを複数取得する処理を行う。
即ち、一度の起床要求に対して行われる受信側タスク上での処理における前記キューに格納されたデータを取得する処理においては、前記キューに、当該受信側タスク上での処理から取得可能なデータが複数格納されている場合、前記キューから、複数の前記データを取得するのである。
【0017】
このように、本発明では、送信側タスクにおいて、複数のデータの送信要求に対し、1の起床要求を行い、その起床要求によって起床された受信側タスクでは、複数のデータをキューから取得するため、従来のように1つのデータ(例えばメッセージ)を送信する毎に、受信側タスクの起床・終了処理が行われてしまい、処理装置の処理負荷が大きくなるという問題を抑えることができ、処理装置の処理負荷を低減させることができる。
【0018】
また、上述した問題点を解決するためになされた請求項2に記載のタスク間通信方法は、送信側タスク上での処理から、受信側タスク上での処理に対するデータの送信要求が発生した場合に、送信側タスク上での処理において、そのデータを、その受信側タスク上での処理から取得可能なキューに格納し、そのキュー内に、前記キューへのそのデータの格納以前にすでに格納されているデータがあるか否かを判定し、ある場合にはその受信側タスクに対する起床要求を行わず、ない場合にのみ前記起床要求を行う。そして、起床要求に基づいて前記オペレーティングシステムの処理によってその受信側タスクが起床された際に、その受信側タスク上での処理において、その受信側タスク上での処理から取得可能な前記キューに存在するすべてのデータを取得する。
【0019】
このようにすれば、送信側タスク上の処理で、連続してデータ(例えばメッセージ)を受信側タスク上の処理へ送る場合に、その受信側タスクの起床要求は1回のみで済む。したがって、従来のように1つのデータ(例えばメッセージ)を送信する毎に、受信側タスクの起床・終了処理が行われてしまい、処理装置の処理負荷が大きくなるという問題を抑えることができ、処理装置の処理負荷を低減させることができる。
【0020】
また、上述した問題点を解決するためになされた請求項3に記載のタスク間通信方法は、送信側タスク上での処理から、受信側タスク上での処理に対するデータの送信要求が発生した場合に、送信側タスク上での処理において、そのデータを、その受信側タスク上での処理から取得可能なキューに格納し、その受信側タスクに対する起床要求が現在あるか否かを判定し、ある場合にはその受信側タスクに対する起床要求を行わず、ない場合にのみ起床要求を行う。そして、起床要求に基づいて前記オペレーティングシステムの処理によってその受信側タスクが起床された際に、その受信側タスク上での処理において、その受信側タスク上での処理から取得可能な前記キューに存在するすべてのデータを取得する。
オペレーティングシステムの処理では、送信側タスクから、受信側タスクに対する起床要求が行われると、起床要求の対象となった受信側タスクの識別情報が、起床待ちタスク(起床要求があって未だ実行されていないタスク)記憶用の起床待ちキューに登録され、この起床待ちキューに登録された受信側タスクの識別情報に基づき、当該受信側タスクが起床される。
このため、本発明(請求項3)では、送信側タスク上での処理で、受信側タスク上での処理に対するデータの送信要求が発生した場合に、当該受信側タスクに対する起床要求が現在あるか否かを、起床待ちキューにおけるタスクの識別情報の現在の記憶状況に基づいて判定し、受信側タスクに対する起床要求がない場合にのみ起床要求を行うのである。
【0021】
このようにすれば、送信側タスク上の処理で、連続してデータ(例えばメッセージ)を受信側タスク上の処理へ送る場合に、その受信側タスクの起床要求は1回のみで済む。したがって、従来のように1つのデータ(例えばメッセージ)を送信する毎に、受信側タスクの起床・終了処理が行われてしまい、処理装置の処理負荷が大きくなるという問題を抑えることができ、処理装置の処理負荷を低減させることができる。
【0022】
特に、オペレーティングシステムが、タスクの優先度に基づいて、起床待ちキューに登録されている未だ実行されてないタスクを、優先度の高いタスクから順に実行する構成の場合、請求項4に示すように、すべてのタスクを異なる優先度に設定し、タスク間でのデータ受け渡しに使用される前記キューを、その優先度ごとに設けるようにするとよい。このようにすれば、優先度に基づいてタスクやキューを管理できる。
すなわち、請求項1〜3に記載の「受信側タスク上での処理から取得可能なキュー」は、優先度ごとに設けたキューとすることができる。例えば、データ(メッセージ)送信時に、他に送信待ちの同一優先度のメッセージがキューに有るか否かをチェックし、有る場合にはオペレーティングシステムに対するその優先度のタスクの起床要求を行わず、ない場合のみその優先度のタスクの起床要求を行うようにできる。
そして、受信側タスク上での処理では、データの受信処理時に、その優先度のキューにメッセージがあれば、そのメッセージをすべて取得するように構成できる。このように構成することで、例えば、送信側タスクで同一優先度のメッセージが複数連続して送信要求され、かつ、受信側タスクが送信側タスクに比べ優先度が同じか低い場合に、受信側タスクの起床及び終了処理を減らすことができ、処理装置の処理負荷が低減できる。
【0023】
そして、請求項5に示すように、上述したタスク間通信方法の各処理をコンピュータに実行させるためのプログラムとして構成することができる。このようなプログラムは、例えば、請求項6に示すようにして、フレキシブルディスク、光磁気ディスク、CD−ROM、ハードディスク、ROM、RAM等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じてコンピュータシステムにロードして起動することにより実行することができる。
また、プログラムは、ネットワークを介してロードして起動することにより実行することもできる。また、上述の発明(請求項1〜4)は、電子機器を、請求項7に示すように、請求項5に記載のプログラムを記憶保持する記憶装置と、この記憶装置が記憶する前記プログラムを実行するコンピュータと、を備える構成にすることで、コンピュータに、実現させることができる。このような電子機器は、コンピュータ(処理装置)によるタスクの起動・終了処理を減らすことができるため、機器本来の機能を実現するための処理に処理装置の処理時間をより多く割くことが可能となる。
【0024】
【発明の実施の形態】
以下、本発明を具体化した一実施例について図面を参照して説明する。図1は、本発明の電子機器としてのエンジン制御装置(以下「ECU」という。)1の構成を表すブロック図である。ECU1は、車両に搭載された内燃機関型エンジンの制御を行う。
【0025】
ECU1は、エンジンのクランク軸が所定角度回転する毎にパルス状の信号を出力する回転角センサ、エンジンの特定の気筒のピストンが所定位置(例えば上死点:TDC)にくる度にパルス状の信号を出力する基準位置センサ、エンジンの冷却水の温度を検出する水温センサ、及び酸素濃度を計測する酸素濃度センサ等、エンジンの運転状態を検出する様々なセンサ30からの信号を入力して波形整形やA/D変換を行ったり、車内LAN32から信号を入力したりする入力回路21と、入力回路21からの入力信号に基づき、エンジンを制御するための様々な処理や車内LAN32を介して他のECUからデータを受信したり他のECUに対して送信するデータを生成して送信したりするための様々な処理を実行するマイコン10と、マイコン10からのデータに応じて、エンジンに取付けられたインジェクタ(燃料噴射装置)及びイグナイタ(点火装置)等のアクチュエータ40を駆動したり、車内LAN32にデータを出力したりするための出力回路22とを備えている。
【0026】
そして、マイコン10には、プログラムを実行する周知のCPU11と、CPU11によって実行されるプログラムを記憶するROM12と、CPU11による演算結果等を記憶するためのRAM13と、入力回路21及び出力回路22との間で信号をやり取りするためのI/O14と、各種レジスタやフリーランカウンタ等(図示省略)とを備えている。
【0027】
このように構成されたECU1は、入力回路21及び出力回路22を制御し車内LAN32を介して他のECU等と通信を行う通信処理や、各種センサ30及び車内LAN32から入力回路21を介して入力される信号に基づき、出力回路22に接続されたアクチュエータ40を駆動するエンジン制御処理を行う。
【0028】
次に、ROM12に記憶される「プログラム」としてのエンジン制御プログラムの構成を説明する。なお、本明細書では、例えば「タスクが・・・する」「RTOSが・・・する」「イベントサービスが・・・する」「・・・関数が・・・する」というプログラムを主体とした表現を適宜用いているが、詳しくは、CPU11がROM12に記憶されたこれらのプログラムを実行して処理を行うことは言うまでもない。エンジン制御プログラムは、RTOS、タスクA,タスクB,タスクc…等の各々のタスク、及び、各々のタスクのメッセージ送信処理のサブルーチンであるSendMessage関数とデータ受信処理のサブルーチンであるReceiveMessage関数を備えるイベントサービスを構成するプログラムを備える。各タスクはそれぞれ異なる優先度に設定されており、イベントサービスの各関数(ルーチン)は呼び出し元のタスクと同じ優先度で実行される。
【0029】
RAM13上には各タスク用のキューのための記憶領域を確保している。キューは、先入れ先出し(FIFO)バッファ(記憶領域)である。
例えば、タスクA内の処理においてタスクB内の所定のルーチンで処理すべきイベントが発生した場合のように、タスクA内の処理からタスクB内の処理へデータを送る必要が発生した場合、タスクA内の処理で、送るべきデータを引数としてイベントサービスのSendMessage関数を呼ぶ。
【0030】
このイベントサービスのSendMessage関数による処理を図2(a)に示す。まず、SendMessage関数による処理では、引数として受け取った(例えばスタックを介して受け取った)送信対象のデータを、送信先のタスク用のキュー、すなわちタスクB用のキューへ、キューイングする(S110)。
【0031】
そして、この送信先のタスク用のキューのメッセージ数カウンタの値、すなわちタスクB用のキューのメッセージ数カウンタの値を、インクリメントする(S120)。なお、各タスク用のメッセージ数カウンタの値はRTOSの初期化処理で0に設定されている。
【0032】
次に、この送信先のタスク用のメッセージ数カウンタの値、すなわちタスクB用のメッセージ数カウンタの値が、1であるか否かを判定する(S130)。1の場合には(S130:YES)、S140へ移行する。S140では、OSに対して、送信先タスクの起床要求、すなわち、タスクBの起床要求を行う。RTOSは、この起床要求を受け、この起床要求されたタスクを特定するための識別情報(タスクID)をタスクの起床待ちキューにキューイングする。すなわち、タスクBのタスクIDを起床待ちキューにキューイングする。そして、このSendMessage関数による処理を終了し、タスクAの処理へ復帰する。一方、S130の判定で、メッセージカウンタの値が1以外の場合には(S130:NO)、S140の処理は行わずに、そのまま、このSendMessage関数による処理を終了し、タスクAの処理へ復帰する。
【0033】
このように、送信先のタスク用のメッセージカウンタの値が1の場合、すなわち、送信先のタスク用のキューに最初に送信対象のデータを保存したときにだけ、その送信先のタスクの起床要求をOSに対して行い、それ以後、キューに送信対象のデータを追加する際には、OSに対する送信先タスクの起床要求を行わない。
【0034】
イベントサービスのSendMessage関数から復帰した後、タスクAはその他のタスク内の処理を行う。そして、タスクAの処理が終了するとタスクAはRTOSへ処理の終了を伝え(処理をRTOSへ移行して)、終了する。
RTOSは、起床待ちキューに保存されたタスクIDのうち、もっとも優先度の高いタスクIDのタスクを起床させる。すなわちそのタスクへ処理を移行させる。ここでは、データの受信側タスク、すなわちタスクBが起床された場合について説明する。
【0035】
このタスクB内(データ受信タスク内)では、図2(b)に示すデータ受信利用処理を行う。まず、自タスク用のキュー、つまりタスクB用のキューからデータを取り出す(S210)。このS210の処理はイベントサービスのReceiveMessage関数をタスクB内から呼び出し、イベントサービスのReceiveMessage関数の処理で、タスクB用のキューからデータを取り出してタスクBへ渡すことで行う。そして、タスクBでは、このデータを用いた処理を行う(S220)。続いて、このタスク用のメッセージカウンタ、すなわちタスクB用のメッセージカウンタの値をデクリメントし(S230)、自タスク用のメッセージカウンタの値、すなわちタスクB用のメッセージカウンタの値が0であるか否かを判定する(S240)。0でない場合には(S230:NO)、S210へ移行して、再び、S210〜S240の処理を行う。一方、0の場合には、このデータ受信利用処理を終了する。そしてタスクBのその他の処理を行い、すべての処理が終了すると、タスクBはRTOSへ処理の終了を伝え(処理をRTOSへ移行して)、終了する。
【0036】
このようにして、送信側タスク内の処理(タスクA内の処理)から受信側タスク(タスクB)を起床させて、受信側タスク内の処理(タスクB内の処理)を実行させ、この受信側タスク内の処理で、送信側タスク内の処理(タスクA内の処理)によってキューイングされたデータを受け取って利用することができる。例えば、タスクA内で検知したイベントの処理に必要なデータを、タスクB内のこのイベントの処理ルーチンに渡して処理させることができる。
【0037】
ここで、タスクAからタスクBへメッセージを3回連続して発行(送信)する場合の処理の例を図3に示して説明する。
図3に示すように、タスクA内でイベントサービスのSendMessage関数を呼び出し、データAをその引数としてイベントサービスへ渡す。イベントサービスは、この関数内でタスクB用のキューにデータAをキューイングし(図2(a)のS110に相当する)、タスクB用のメッセージ数カウンタの値をインクリメントする(S120)。その結果、メッセージ数カウンタの値は1となるので(S130:YES)、RTOSに対してタスクBの起床要求を行う(S140)。そしてこの起床要求に基づきRTOSは、起床待ちキューにタスクBのタスクIDをキューイングする。そして、再びタスクAは、SendMessage関数を呼ぶことでデータBをイベントサービスへ渡す。イベントサービスはタスクB用のキューにデータBをキューイングし(S110)、タスクB用のメッセージカウンタの値をインクリメントする。その結果、メッセージ数カウンタの値は2となるので、そのままタスクAの処理へ、復帰する(S130:NO)。すなわち図3に示すように、2つ目のデータであるデータBをキューに入れた際には、タスクBの起床要求は行わない。そして、再びタスクAは、SendMessage関数を呼ぶことでデータCをイベントサービスへ渡す。イベントサービスはタスクBのキューにデータCをキューイングし(S110)、タスクB用のメッセージカウンタの値をインクリメントする。その結果、メッセージ数カウンタの値は3となるので、そのままタスクAの処理へ、復帰する(S130:NO)。すなわち図3に示すように、3つ目のデータであるデータCをキューに入れた際には、タスクBの起床要求は行わない。そして、タスクAのすべての処理が終了すると、RTOSへ処理を移行する。
【0038】
RTOSは、起床待ちキューを参照して、このキュー内で優先度の最も高いタスクIDに対応するタスクを起床させる。起床待ちキューには、タスクBのタスクIDがキューイングされているので、タスクBを起床させる(図3におけるSchedule)。ここで起床待ちキューは空になる。起床されたタスクB内の処理では、イベントサービスのReceiveMessage関数を呼ぶ。イベントサービスは、ReceiveMessage関数の処理として、タスクB用にキューイングされているデータAを取り出し(図4のS210に相当する)、タスクBにそのデータAを返す。そしてタスクBは、イベントサービスから受け取ったデータAを用いた処理を実行する(S220)。そして、タスクB用のメッセージ数カウンタの値をデクリメントする(S230)。その結果、タスクB用のメッセージ数カウンタの値は、2となるので、S240の判定処理で再びS210の処理へ移行することとなる。再び、イベントサービスのReceiveMessage関数を呼び、イベントサービスは、ReceiveMessage関数の処理として、タスクB用にキューイングされているデータBを取り出して(S210)、タスクBにそのデータBを返す。そしてタスクBは、イベントサービスから受け取ったデータBを用いた処理を実行する(S220)。そして、タスクB用のメッセージ数カウンタの値をデクリメントする(S230)。その結果、タスクB用のメッセージ数カウンタの値は、1となるので、S240の判定処理で再びS210の処理へ移行することとなる。再び、イベントサービスのReceiveMessage関数を呼び、イベントサービスは、ReceiveMessage関数の処理として、タスクB用にキューイングされているデータCを取り出して(S210)、タスクBにそのデータCを返す。タスクBは、イベントサービスから受け取ったデータCを用いた処理を実行する(S220)。そして、タスクB用のメッセージ数カウンタの値をデクリメントする(S230)。その結果、タスクB用のメッセージ数カウンタの値は、0となるので、このデータ受信利用処理を抜け(S240:YES)、タスクBのその他の処理へ移行する。そして、タスクBのすべての処理が終了すると、処理をRTOSへ返す。
【0039】
従来は、図5に示したように、タスクBの起動終了が、送信したメッセージの数(3回)分行われるため、非常にオーバーヘッドが大きかったのに対し、本実施例のタスク間通信方法では、図3に示したように、タスクBの起動終了は1回のみであり、タスクの起床・終了処理にかかるオーバーヘッドが少なくなる。そのため、CPU11の処理負荷を軽減することができる。
【0040】
特に、本実施例のようなエンジン制御では、例えば、急激に要求トルクが増加したことをセンサ30等から入力された信号に基づいて検知し燃料噴射を追加する為の非同期噴射要求、センサ30等の信号などの異常を検出しダイアグ用メモリに記憶させる為のダイアグ処理要求、外部ノードからの(CANなどによる)車内LAN32を介した通信データの着信に対応する通信処理要求などを、メッセージとしてタスク間で通信する。こうした要求を検出する処理(送信側、すなわちタスクA)とは、別の優先度で、この対応をする処理(受信側、すなわち、タスクB)を実行したい場合や、複数の異なる優先度での送信処理に対し一つの受信処理を行う場合の受信処理側リソースの排他処理を簡単にする為に、上述したメッセージとしてタスク間通信でデータをやりとりする。
【0041】
これらのメッセージは、それぞれ要求が検出されるたびに送信され、以下のような場合に複数の受信側タスクが待ち状態になる。
・複数の送信処理が1つの高い優先度のタスク上で順次処理され、それぞれの送信条件が成立した場合。(例えば、4ms毎に非同期噴射判定と異常検出処理が行われている場合)
・優先度の高い複数のタスクが連続して実行されている時に、それぞれのタスク上の送信処理の送信条件が成立した場合。(例えば、CAN受信割り込みと4ms毎の非同期噴射判定が重なった場合)
・一つの送信処理から(一つの送信条件により)、連続して複数のメッセージが送信された場合。(例えば、4ms毎の異常検出処理で、複数のセンサの異常が検出された場合)
このような場合に、上述した処理によって、CPU11の処理負荷を軽減することができるため、エンジンの高回転時の制御性の悪化を防ぐことができる。
【0042】
なお、本実施例では、タスクA内の処理からタスクB内の処理へデータを送るものとして説明したが、例えば、タスクA内の処理で送り先のタスクを指定するようにしてもよい。例えば、SendMessage関数の引数として、送り先のタスクを指定するようにしてもよい。送り先のタスクの指定は、例えば、タスクIDを引数とすることで行うことができる。タスクIDで行う場合には、図2(a)に示したS110〜140の処理において、「タスクB用のキュー」という部分を、「引数として受け取ったタスクIDに対応するタスク用のキュー」とすることで実現できる。また、例えば、すべてのタスクの優先度が異なるものとして一意に決定されている場合には、送り先のタスクの指定は、この優先度を引数とすることで行うことができる。この場合、タスク別ではなく優先度別にキューを設け、図2(a)に示したS110〜140の処理において、「タスクB用のキュー」という部分を、「引数として受け取った優先度に対応するキュー」とすることで実現できる。すなわち、メッセージ送信時に送信データのキューイングを行った後、該当する優先度のメッセージ送信カウンタの値に基づき、現在送信待ちの同優先度のメッセージが有るか否かを確認する。待ちメッセージが無い場合は従来方式と同様にタスクの起床要求をRTOSに対して行うが、待ちメッセージがある場合はタスクの起床要求は行わず送信処理を終了する。そしてRTOSによって受信側タスクが起床されると、このキューイングしたデータを取り出して、取り出したデータを利用する処理を行った後、さらに同優先度の送信待ちメッセージが残っているかどうかをチェックし、もし残っていればタスクを終了せずに続けて次の受信処理を実施し、送信待ちメッセージがなくなるまで繰り返す。このように構成することで、同一優先度のメッセージが複数連続して送信要求され、かつ、受信側タスクが送信側タスクに比べ優先度が同じか低い場合に、タスクの起床及び終了処理が少なく済み、CPU11の処理負荷が低減できる。
【0043】
また、本実施例では、最初のメッセージであるか否かをメッセージ数カウンタの値に基づいて判定することにしたが、例えば、RTOSにおける起床待ちキューに送信先のタスクのタスクIDがあるか否かによって判定するようにしてもよい。すなわち、図2のS120、S230の処理を行わず、図2のS130の処理に代えて、「RTOSの起床待ちキューにタスクBのタスクIDがないか」を判定し、ない場合(S130:YES)、S140の処理を行い、ある場合(S140:NO)、S140の処理を行わずに終了するようにする。また、S240の処理に代えて、タスクB用のキューにデータが残っていないかを判定し、残っている場合(S240:NO)S210へ移行し、残っていない場合(S240:NO)、データ受信利用処理を抜けるように構成すればよい。
【図面の簡単な説明】
【図1】実施例の処理実行装置としてのエンジン制御装置の構成を表すブロック図である。
【図2】実施例のメッセージ送信処理とデータ受信処理の流れを示すフローチャートである。
【図3】実施例のタスク間通信方法によって、タスクAからタスクBに対してメッセージを3回発行した場合の処理の様子を示す説明図である。
【図4】従来のメッセージ送信処理とデータ受信処理の流れを示すフローチャートである。
【図5】従来のタスク間通信方法によって、タスクAからタスクBに対してメッセージを3回発行した場合の処理の様子を示す説明図である。
【符号の説明】
1…ECU
10…マイコン
11…CPU
12…ROM
13…RAM
14…I/O
21…入力回路
22…出力回路
30…センサ
32…車内LAN
40…アクチュエータ

Claims (7)

  1. あるタスク(以下送信側タスクと称する)上での処理から、前記送信側タスクとは別のタスク(以下受信側タスクと称する)上での処理に対するデータの送信要求が発生した場合に、前記送信側タスク上での処理において、当該データを、当該受信側タスク上での処理から取得可能なキューに格納し、当該受信側タスクの起床要求をオペレーティングシステムに対して行い、当該起床要求に基づいて前記オペレーティングシステムの処理によって当該受信側タスクが起床された際に、当該受信側タスク上での処理において、当該受信側タスク上での処理から取得可能な前記キューに格納されたデータを取得する処理を、コンピュータによって実行することによって実現されるタスク間通信方法において、
    前記送信側タスク上での処理においては、前記データの送信要求が発生する度、当該データを、前記受信側タスク上での処理から取得可能な前記キューに格納するが、前記送信側タスク上での処理において行う前記受信側タスクの起床要求については、前記データを前記キューに格納する度には実行せずに、前記受信側タスクの起床要求の回数を、前記データを前記キューに格納する回数よりも少ない回数とし、
    一度の起床要求に対して行われる前記受信側タスク上での処理における前記キューに格納されたデータを取得する処理においては、前記キューに、当該受信側タスク上での処理から取得可能なデータが複数格納されている場合、前記キューから、複数の前記データを取得すること
    を特徴とするタスク間通信方法。
  2. あるタスク(以下送信側タスクと称する)上での処理から、前記送信側タスクとは別のタスク(以下受信側タスクと称する)上での処理に対するデータの送信要求が発生した場合に、前記送信側タスク上での処理において、当該データを、当該受信側タスク上での処理から取得可能なキューに格納し、当該受信側タスクの起床要求をオペレーティングシステムに対して行い、当該起床要求に基づいて前記オペレーティングシステムの処理によって当該受信側タスクが起床された際に、当該受信側タスク上での処理において、当該受信側タスク上での処理から取得可能な前記キューに格納されたデータを取得する処理を、コンピュータによって実行することによって実現されるタスク間通信方法において、
    前記送信側タスク上での処理で、前記受信側タスク上での処理に対するデータの送信要求が発生した場合に、当該受信側タスク上での処理から取得可能な前記キュー内に、前記キューへの当該データの格納以前にすでに格納されているデータがあるか否かを判定し、ある場合には前記送信側タスク上での処理における当該受信側タスクに対する起床要求を行わず、ない場合にのみ前記起床要求を行い、
    前記受信側タスクでは、当該受信側タスク上での処理から取得可能な前記キューに存在するすべてのデータを取得すること
    を特徴とするタスク間通信方法。
  3. あるタスク(以下送信側タスクと称する)上での処理から、前記送信側タスクとは別のタスク(以下受信側タスクと称する)上での処理に対するデータの送信要求が発生した場合に、前記送信側タスク上での処理において、当該データを、当該受信側タスク上での処理から取得可能なキューに格納し、当該受信側タスクの起床要求をオペレーティングシステムに対して行い、当該起床要求に基づく前記オペレーティングシステムの処理によって、起床要求の対象となった受信側タスクの識別情報が、起床待ちタスク記憶用の起床待ちキューに登録され、この起床待ちキューに登録された前記受信側タスクの識別情報に基づく前記オペレーティングシステムの処理によって、当該受信側タスクが起床された際に、当該受信側タスク上での処理において、当該受信側タスク上での処理から取得可能な前記キューに格納されたデータを取得する処理を、コンピュータによって実行することによって実現されるタスク間通信方法において、
    前記送信側タスク上での処理で、前記受信側タスク上での処理に対するデータの送信要求が発生した場合に、当該受信側タスクに対する前記起床要求が現在あるか否かを、前記起床待ちキューにおけるタスクの識別情報の現在の記憶状況に基づいて判定し、当該受信側タスクに対する前記起床要求がある場合には、前記送信側タスク上での処理における当該受信側タスクに対する起床要求を行わず、ない場合にのみ前記起床要求を行い、
    前記受信側タスクでは、当該受信側タスク上での処理から取得可能な前記キューに存在するすべてのデータを取得すること
    を特徴とするタスク間通信方法。
  4. 前記オペレーティングシステムは、前記起床要求があって未だ実行していないタスクの識別情報を、起床待ちタスク記憶用の起床待ちキューに記憶し、前記起床待ちキューが記憶するタスクの識別情報に基づき、前記未だ実行してないタスクを、優先度が一番高いタスクから順に、起床させるものであり、
    当該タスク間通信方法においては、
    すべてのタスクを異なる優先度に設定し、タスク間でのデータ受け渡し用の前記キューを、当該優先度毎に設けること
    を特徴とする請求項1〜3のいずれかに記載のタスク間通信方法。
  5. 請求項1〜4のいずれかに記載のタスク間通信方法の各処理をコンピュータに実行させるためのプログラム。
  6. 請求項5に記載のプログラムを記録した記録媒体。
  7. 請求項5に記載のプログラムを記憶保持する記憶装置と、前記記憶装置が記憶する前記プログラムを実行するコンピュータとを備えることを特徴とする電子機器。
JP2003040056A 2003-02-18 2003-02-18 タスク間通信方法、プログラム、記録媒体、電子機器 Expired - Fee Related JP3882760B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2003040056A JP3882760B2 (ja) 2003-02-18 2003-02-18 タスク間通信方法、プログラム、記録媒体、電子機器
US10/775,098 US7461380B2 (en) 2003-02-18 2004-02-11 Inter-task communications method, program, recording medium, and electronic device
DE602004025162T DE602004025162D1 (de) 2003-02-18 2004-02-17 Methode, Programm, Aufzeichnungsmedium und elektronisches Gerät für die Intertask-Kommunikation
EP04003561A EP1450256B1 (en) 2003-02-18 2004-02-17 Inter-task communications method, program, recording medium, and electronic device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003040056A JP3882760B2 (ja) 2003-02-18 2003-02-18 タスク間通信方法、プログラム、記録媒体、電子機器

Publications (2)

Publication Number Publication Date
JP2004252574A JP2004252574A (ja) 2004-09-09
JP3882760B2 true JP3882760B2 (ja) 2007-02-21

Family

ID=32732917

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003040056A Expired - Fee Related JP3882760B2 (ja) 2003-02-18 2003-02-18 タスク間通信方法、プログラム、記録媒体、電子機器

Country Status (4)

Country Link
US (1) US7461380B2 (ja)
EP (1) EP1450256B1 (ja)
JP (1) JP3882760B2 (ja)
DE (1) DE602004025162D1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4238258B2 (ja) 2006-08-10 2009-03-18 株式会社デンソー 車載電子制御ユニットのタスク管理装置及びタスク管理方法
US8166177B1 (en) * 2006-10-27 2012-04-24 Crimson Corporation Systems and methods for managing requests for connections to services on a computer system
US8286173B2 (en) * 2007-03-23 2012-10-09 Oracle America, Inc. Methods and apparatus for window-based fair priority scheduling
US8146107B2 (en) * 2007-07-10 2012-03-27 Mitel Networks Corporation Virtual machine environment for interfacing a real time operating system environment with a native host operating system
US8276143B2 (en) * 2008-03-10 2012-09-25 Oracle America, Inc. Dynamic scheduling of application tasks in a distributed task based system
US8250579B2 (en) * 2008-06-27 2012-08-21 Oracle America, Inc. Method for stage-based cost analysis for task scheduling
US10642648B2 (en) * 2017-08-24 2020-05-05 Futurewei Technologies, Inc. Auto-adaptive serverless function management
JP7147615B2 (ja) 2019-02-15 2022-10-05 株式会社デンソー タスク管理装置
CN110825536B (zh) * 2019-10-31 2022-08-12 深圳移航通信技术有限公司 嵌入式实时操作系统中任务间的通信方法及装置

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01214941A (ja) 1988-02-23 1989-08-29 Nec Corp タスク間通信方式
US5748953A (en) * 1989-06-14 1998-05-05 Hitachi, Ltd. Document search method wherein stored documents and search queries comprise segmented text data of spaced, nonconsecutive text elements and words segmented by predetermined symbols
US5220625A (en) * 1989-06-14 1993-06-15 Hitachi, Ltd. Information search terminal and system
US5471610A (en) * 1989-06-14 1995-11-28 Hitachi, Ltd. Method for character string collation with filtering function and apparatus
EP0437615B1 (en) * 1989-06-14 1998-10-21 Hitachi, Ltd. Hierarchical presearch-type document retrieval method, apparatus therefor, and magnetic disc device for this apparatus
US5469354A (en) * 1989-06-14 1995-11-21 Hitachi, Ltd. Document data processing method and apparatus for document retrieval
US5454105A (en) * 1989-06-14 1995-09-26 Hitachi, Ltd. Document information search method and system
US5138669A (en) * 1990-06-29 1992-08-11 Hitachi, Ltd. Range-conditional character string retrieving method and system
US5140644A (en) * 1990-07-23 1992-08-18 Hitachi, Ltd. Character string retrieving system and method
US5757983A (en) * 1990-08-09 1998-05-26 Hitachi, Ltd. Document retrieval method and system
US5278984A (en) * 1990-12-19 1994-01-11 Bull Hn Information Systems Inc. Method for managing requests by specifying time intervals for transmitting a minimum number of messages for specific destinations and priority levels
JPH05303503A (ja) 1992-04-28 1993-11-16 Matsushita Electric Ind Co Ltd 同期型メッセージ通信装置
JP2818521B2 (ja) 1992-06-11 1998-10-30 日本電気ソフトウェア株式会社 タスク間通信方法
JPH06309180A (ja) 1993-04-22 1994-11-04 Toshiba Corp コンピュータシステムの割込制御装置
JPH07295838A (ja) 1994-04-20 1995-11-10 Canon Inc 情報処理システム
JP3245500B2 (ja) 1994-04-28 2002-01-15 エヌイーシーマイクロシステム株式会社 マルチプログラミングにおける事象管理方式
JPH0830523A (ja) 1994-07-12 1996-02-02 Hitachi Ltd オンラインメッセージの通信方法
JPH08212086A (ja) * 1994-09-30 1996-08-20 Microsoft Corp オフィスマシンのオペレーティングシステム及び方法
US5758184A (en) * 1995-04-24 1998-05-26 Microsoft Corporation System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
EP0741356A1 (en) 1995-05-05 1996-11-06 Rockwell International Corporation Cache architecture and method of operation
US5671365A (en) * 1995-10-20 1997-09-23 Symbios Logic Inc. I/O system for reducing main processor overhead in initiating I/O requests and servicing I/O completion events
US5708814A (en) * 1995-11-21 1998-01-13 Microsoft Corporation Method and apparatus for reducing the rate of interrupts by generating a single interrupt for a group of events
US5875329A (en) * 1995-12-22 1999-02-23 International Business Machines Corp. Intelligent batching of distributed messages
JPH1083313A (ja) 1996-09-10 1998-03-31 Nec Corp メッセージ同時送信システムおよびメッセージ同時送信方法
US20020023175A1 (en) * 1997-06-04 2002-02-21 Brian R. Karlak Method and apparatus for efficient, orderly distributed processing
JPH1165623A (ja) 1997-08-20 1999-03-09 Denso Corp プログラマブルコントローラ
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
JPH11203150A (ja) 1997-10-22 1999-07-30 Matsushita Electric Ind Co Ltd タスク制御装置及びタスク制御プログラムを記憶する記憶媒体
US6920635B1 (en) * 2000-02-25 2005-07-19 Sun Microsystems, Inc. Method and apparatus for concurrent propagation of data between software modules
US6691175B1 (en) * 2000-02-25 2004-02-10 Sun Microsystems, Inc. Method and apparatus for managing data propagation between software modules
GB2368247A (en) * 2000-10-18 2002-04-24 Power X Ltd Method and apparatus for regulating process state control messages
JP3578082B2 (ja) 2000-12-20 2004-10-20 株式会社デンソー 処理実行装置及び記録媒体
US7069559B2 (en) * 2001-08-29 2006-06-27 International Business Machines Corporation System and method for monitoring software queuing applications
US6983462B2 (en) * 2002-03-15 2006-01-03 Toshiba Corporation Method and apparatus for serving a request queue

Also Published As

Publication number Publication date
EP1450256B1 (en) 2010-01-20
US7461380B2 (en) 2008-12-02
US20040163089A1 (en) 2004-08-19
DE602004025162D1 (de) 2010-03-11
EP1450256A2 (en) 2004-08-25
EP1450256A3 (en) 2004-09-08
JP2004252574A (ja) 2004-09-09

Similar Documents

Publication Publication Date Title
JP3578082B2 (ja) 処理実行装置及び記録媒体
JP3922070B2 (ja) 分散制御方法及び装置
JP5516398B2 (ja) マルチプロセッサシステム、マルチプロセッサシステムのos間デバイス共有方法
US9703595B2 (en) Multi-core system with central transaction control
JP3882760B2 (ja) タスク間通信方法、プログラム、記録媒体、電子機器
EP2816478B1 (en) Vehicle electronic control device and data-receiving method
US20200264922A1 (en) Task management apparatus
JP4241462B2 (ja) 制御ユニットおよびマイクロコンピュータ
JPH1144250A (ja) 車両用制御装置
JP4419943B2 (ja) Cpu間データ転送装置
JP3713977B2 (ja) リアルタイム分散システム
CN114268670A (zh) 基于时间触发的以太网异步消息处理系统及方法
JP4151362B2 (ja) バス調停方式、データ転送装置、及びバス調停方法
JP2019212032A (ja) マルチコアマイコンを備える電子制御装置
JPH1196108A (ja) 計算機システム及びバス制御装置
JP7548144B2 (ja) 電子制御装置
JP2013062734A (ja) 情報処理装置
JP2023008553A (ja) 電子制御装置
JPH1165623A (ja) プログラマブルコントローラ
CN116578509A (zh) 一种可重构网络安全处理器专用dma及设计方法
JP3112287B2 (ja) メッセージ管理処理装置
JPH06332848A (ja) データ転送方式
JPH01305461A (ja) バス使用権制御方式
CN118860585A (zh) 线程控制方法及装置、通信设备及系统
CN117909087A (zh) 一种数据处理方法、装置、中央处理器及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050413

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060801

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061002

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: 20061024

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20061106

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 3882760

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20101124

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111124

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20111124

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20121124

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20131124

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees