JP2005316659A - タスク間通信装置 - Google Patents

タスク間通信装置 Download PDF

Info

Publication number
JP2005316659A
JP2005316659A JP2004132964A JP2004132964A JP2005316659A JP 2005316659 A JP2005316659 A JP 2005316659A JP 2004132964 A JP2004132964 A JP 2004132964A JP 2004132964 A JP2004132964 A JP 2004132964A JP 2005316659 A JP2005316659 A JP 2005316659A
Authority
JP
Japan
Prior art keywords
memory block
data
memory
task
shared memory
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.)
Pending
Application number
JP2004132964A
Other languages
English (en)
Inventor
Satoru Kitagawa
哲 北川
Kunihiko Hayashi
邦彦 林
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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2004132964A priority Critical patent/JP2005316659A/ja
Publication of JP2005316659A publication Critical patent/JP2005316659A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】 共有メモリを介したタスク間通信において、タスク間通信を行うためのCPUロックや割込み禁止などによる共有メモリの排他制御によって発生する送受信タスクの待ちをなくす。
【解決手段】 複数のタスクからアクセス可能な共有メモリ110上の、状態保持領域(STATE)120をもつ複数のメモリブロック130と、データ送信手段140と、データ受信手段150を備える。データ送信手段は、共有メモリをロックし、STATE“送信可”のメモリブロックを検索して、STATE“送信中”とし、共有メモリをアンロックし、データ送信終了時にSTATE“受信可”とする。データ受信手段は、共有メモリをロックし、STATE“受信可”のメモリブロックを検索して、STATE“受信中”とし、共有メモリをアンロックし、データ受信終了時にSTATE“送信可”とする。
【選択図】 図1

Description

本発明は、複数のタスクを並行に処理する情報処理システムにおけるタスク間通信装置に関するものである。
複数のタスクを並行に処理する情報処理システムでは、複数のタスクが並行してアクセスするための共有メモリを有し、この共有メモリを介してデータの送受信を行うことによりタスク間通信を実現する。
図10は従来のタスク間通信装置の構成を示すブロック図である。このタスク間通信装置では、共有メモリ1110に、データの書込みおよび読出しが行われる複数のデータブロック1130と、データブロック毎に未処理または処理済を示す処理フラグ1120を有する。送信側タスクは、処理フラグを参照して処理済のデータブロックを選択し、選択したデータブロックにデータの書込みを行う。これと並行して、受信側タスクは、処理フラグを参照して未処理のデータブロックを選択し、選択したデータブロックからデータの読出しを行う。このようにすることにより、送信側タスクと受信側タスクが並行に通信を行える。
しかし、これは送信側タスクも受信側タスクも1つのみの場合に限られる。
複数のタスクを並行に処理する情報処理システムにおいて、上記のタスク間通信装置を使用する場合には、複数の送信側タスクおよび受信側タスクが並行に通信を行うことに起因して、データブロックからの誤データ読出しや、データブロックへのデータの上書きなどの不都合が生じるおそれがある。そこで、このような不都合を防止するための競合管理が必要となる。この競合管理について従来は、送信側タスクおよび受信側タスクがCPUロックや割込み禁止などの手段により共有メモリをロックするようにしていた。
特開平8−16538号公報(第4−6頁、第2−4図)
複数のタスクを並行に処理する情報処理システムにおいて、上記のタスク間通信装置を使用する場合は、タスク間通信装置において並行に通信を行うタスクは送信側タスクと受信側タスクの2つに制限される。これは結果として、情報処理システム上に存在する他のタスクに通信待ちを行わせることとなり、送受信タスクの処理効率が悪く、リアルタイム性の保証が困難になる。
また、通信を行うタスクのいずれかが割込みタスクであった場合には、共有メモリ1110のロックをCPUロックや割込み禁止により行う必要がある。つまり、図11、図12に示すように、データ送受信の前に共有メモリ1110のロックを行い、データブロック1130へのデータ書込み後もしくはデータブロック1130からのデータ読出し後に共有メモリ1110のアンロックを行う必要がある。その結果、共有メモリ1110へのデータ書込みおよびデータ読出しの間は、いかなる割込みにも応答できないという問題があった。
本発明の目的は、複数のタスクを並行に処理する情報処理システムにおいて、通信時における不要な待ち時間をなくすことにより、送受信タスクの処理効率が高く、応答のリアルタイム性を保証できるタスク間通信装置を提供することにある。
本発明の更なる目的は、割込みタスクも含めたタスク間の通信において、CPUロックや割込み禁止などによる共有メモリのロック区間を短縮することにより、割込み応答性能の高いタスク間通信装置を提供することにある。
本発明は、上記の課題を解決するために次のような手段を講じる。
本発明による第1のタスク間通信装置は、複数のタスクからアクセス可能な共有メモリを有し、前記共有メモリ上に設けられた状態保持領域をもつ複数のメモリブロックと、次のような機能を有するデータ送信手段およびデータ受信手段を有している。
前記のデータ送信手段は、前記タスクのデータ送信処理開始に当たり、前記共有メモリをロックし、前記共有メモリにおいて前記状態保持領域に“送信可”を保持した前記メモリブロックを検索し、当該メモリブロックの前記状態保持領域に“送信中”を保持させ、前記共有メモリをアンロックすると共に、データ送信処理終了時に当該メモリブロックの前記状態保持領域に“受信可”を保持させるものとして構成されている。
また、前記のデータ受信手段は、前記タスクのデータ受信処理開始に当たり、前記共有メモリをロックし、前記共有メモリにおいて前記状態保持領域に“受信可”を保持した前記メモリブロックを検索し、当該メモリブロックの前記状態保持領域に“受信中”を保持させ、前記共有メモリをアンロックすると共に、データ送信処理終了時に当該メモリブロックの前記状態保持領域に“送信可”を保持させるものとして構成されている。
上記の構成によれば、データ送信処理において、共有メモリをロックして他タスクからのアクセスを禁止した上で“送信可”のメモリブロックを検索し、取得したメモリブロックの状態保持領域(STATE)に“送信中”を保持させ、その後は共有メモリをアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記取得したメモリブロックにデータ書込みを行い、終了すれば“受信可”を保持させる。この場合、取得したメモリブロックへのデータ書込み中において共有メモリをアンロックしても、他タスクからの共有メモリへのアクセスにおいては、現在のデータ書込み対象のメモリブロックに“送信中”の標識があるので、競合を避けながら複数タスクのデータ送信の並行処理が可能となっている。
また、データ受信処理において、共有メモリをロックして他タスクからのアクセスを禁止した上で“受信可”のメモリブロックを検索し、取得したメモリブロックの状態保持領域(STATE)に“受信中”を保持させ、その後は共有メモリをアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記取得したメモリブロックからデータ読出しを行い、終了すれば“送信可”を保持させる。この場合、取得したメモリブロックからのデータ読出し中において共有メモリをアンロックしても、他タスクからの共有メモリへのアクセスにおいては、現在のデータ読出し対象のメモリブロックに“受信中”の標識があるので、競合を避けながら複数タスクのデータ受信の並行処理が可能となっている。
以上の相乗により、複数のタスクを並行に処理する情報処理システムにおいて、通信時における不要な待ち時間がなく、送受信タスクの処理効率が高く、リアルタイム性を保証できる。
また、本発明による第2のタスク間通信装置は、複数のタスクからアクセス可能な共有メモリを有し、前記共有メモリ上に設けられた状態保持領域をもつ複数のメモリブロックをリング状に連結して構成されるリングバッファと、前記リングバッファに付加されて次の送信メモリブロックを指示するための書込みポインタと、前記リングバッファに付加されて次の受信メモリブロックを指示するための読出しポインタと、次のような機能を有するデータ送信手段およびデータ受信手段を有している。
前記のデータ送信手段は、前記タスクのデータ送信処理開始に当たり、前記共有メモリをロックし、前記書込みポインタが前記読出しポインタの1つ手前の前記メモリブロックを指示しているかを判断し、1つ手前でなければ当該メモリブロックの前記状態保持領域に“送信中”を保持させ、当該書込みポインタを次の前記メモリブロックの指示に更新し、前記共有メモリをアンロックすると共に、データ送信処理終了時に当該メモリブロックの前記状態保持領域に“受信可”を保持させるものとして構成されている。
また、前記のデータ受信手段は、前記タスクのデータ受信処理開始に当たり、前記共有メモリをロックし、前記読出しポインタと前記書込みポインタが同じ前記メモリブロックを指示しているか判断し、同じでなくかつ当該メモリブロックの前記状態保持領域に“受信可”が保持されている場合に当該メモリブロックの前記状態保持領域に“受信中”を保持させ、前記共有メモリをアンロックすると共に、データ受信処理終了時に当該メモリブロックの前記状態保持領域に“送信可”を保持させ、前記読出しポインタを次の前記メモリブロックの指示に更新するものとして構成されている。
上記の構成によれば、データ送信処理において、共有メモリをロックして他タスクからのアクセスを禁止した上で、書込みポインタによるメモリブロックの指示が読出しポインタの1つ手前のメモリブロックでないことを確認の上、書込みポインタが指示するメモリブロックの状態保持領域(STATE)に“送信中”を保持させると共に、リングバッファの機能上、書込みポインタを次のメモリブロック指示に更新し、その後は共有メモリをアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記書込みポインタが指示するメモリブロックにデータ書込みを行い、終了すれば“受信可”を保持させる。この場合、書込みポインタが指示するメモリブロックへのデータ書込み中において共有メモリをアンロックしても、他タスクからの共有メモリへのアクセスにおいては、書込みポインタの更新によって次のデータ書込みメモリブロックの指示が行われているので、リングバッファは支障なく機能する。
また、データ受信処理において、共有メモリをロックして他タスクからのアクセスを禁止した上で、読出しポインタが書込みポインタとは異なること、および、読出しポインタが指示するメモリブロックが“受信可”であることを確認の上、読出しポインタが指示するメモリブロックの状態保持領域(STATE)に“受信中”を保持させ、その後は共有メモリをアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記取得したメモリブロックからデータ読出しを行い、終了すれば“送信可”を保持させ、読出しポインタを次のメモリブロック指示に更新する。この場合、読出しポインタ560が指示するメモリブロックにおいて、データ送信処理がデータ書込み中であっても、データ受信処理においては、データ読出し対象のメモリブロックに“送信中”の標識があるので、データ送信処理が書込み中の不完全なデータの読出しを避けられる。
以上の相乗により、リングバッファを有するタスク間通信装置において、従来のリングバッファでは不可能であったデータ送信の並行処理を行うことができ、送信タスクの処理効率を高いものにできる。
本発明による第3のタスク間通信装置は、上記第2のタスク間通信装置において、前記データ受信手段は、前記読出しポインタと前記書込みポインタが同じ前記メモリブロックを指示しておらず、かつ当該読出しポインタが指示する前記メモリブロックの前記状態保持領域に“受信可”が保持されていなければ、前記読出しポインタから前記書込みポインタまでにある前記メモリブロックから前記状態保持領域に“受信可”を保持した前記メモリブロックを検索し、当該メモリブロックの前記状態保持領域に“受信中”を保持させ、前記共有メモリをアンロックすると共に、データ受信処理終了時に当該メモリブロックに“送信可”を保持させるように構成したものである。
この構成によれば、リングバッファを有するタスク間通信装置において、読出しポインタが書込みポインタとは異なっているが、読出しポインタが指示するメモリブロックが“受信可”となっていない場合でも、受信可能データの先読みのために、読出しポインタから書込みポインタまでに“受信可”のメモリブロックを検索し、取得したメモリブロックからデータを読出す。すなわち、従来のリングバッファでは不可能であったデータ送信の並行処理だけでなく、受信可能データの先読みをも行うことができ、送受信タスクの処理効率の高いタスク間通信装置を提供できる。
本発明によれば、複数のタスクを並行に処理する情報処理システムにおいて、通信時における不要な待ち時間がなく、送受信タスクの処理効率が高く、リアルタイム性を保証可能なタスク間通信装置を提供できる。
また、リングバッファを有するタスク間通信装置においては、従来のリングバッファでは不可能であったデータ送信の並行処理、さらには、受信可能データの先読みを行うことができ、送受信タスクの処理効率の高いタスク間通信装置を提供できる。
さらに、本発明によれば、CPUロックや割込み禁止などによる共有メモリのロック区間を短縮することにより、割込み応答性能の高いタスク間通信装置を提供できる。
以下、本発明にかかわるタスク間通信装置の実施の形態を図面に基づいて詳細に説明する。
(実施の形態1)
図1は、本発明の実施の形態1におけるタスク間通信装置の構成を示すブロック図である。タスク間通信装置は、複数のタスク100〜102からアクセス可能な共有メモリ110と、メモリブロック130と、データ送信手段140と、データ受信手段150とを有する。メモリブロック130には、少なくとも“送信可”、“受信可”、“送信中”、“受信中”の状態があり、それらの状態はメモリブロック130に対応する状態保持領域のSTATE120に保持される。
図2は、図1におけるデータ送信手段140の動作を示すフローチャートである。図2において矢印は動作の流れを示す。
データ送信手段140は、データ送信が開始されると、ステップS201では共有メモリ110をロックし、他タスクから共有メモリ110にアクセスを行えないようにする。ステップS202では、メモリブロック130から送信可能なメモリブロックを検索する。
具体的には、STATE120に“送信可”を保持しているメモリブロック130を検索する。STATE120に“送信可”を保持しているメモリブロック130が存在しない場合には、共有メモリ110をアンロックし、当該データ送信処理を終了してもよい。
ステップS203では、ステップS202の検索で取得したメモリブロック130のSTATE120に“送信中”を保持させる。ステップS204では、共有メモリ110をアンロックし、他タスクから共有メモリ110にアクセスを行えるようにする。しかるのち、ステップS205では当該メモリブロック130に送信データを書込む。当該メモリブロックへのデータ書込みが終了すると、ステップS206において当該メモリブロックのSTATE120に“受信可”を保持させる。
このように、共有メモリ110をロックして他タスクからのアクセスを禁止した上で“送信可”のメモリブロックを検索し、取得したメモリブロックの状態保持領域(STATE)に“送信中”を保持させ、その後は共有メモリ110をアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記取得したメモリブロックにデータ書込みを行い、終了すれば“受信可”を保持させる。この場合、取得したメモリブロックへのデータ書込み中において共有メモリ110をアンロックしても、他タスクからの共有メモリ110へのアクセスにおいては、現在のデータ書込み対象のメモリブロックに“送信中”の標識があるので、競合を避けながら複数タスクのデータ送信の並行処理が可能となっている。
図3は、図1におけるデータ受信手段150の動作を示すフローチャートである。
データ受信手段150は、データ受信が開始されると、ステップS301では、共有メモリ110をロックし、他タスクから共有メモリ110にアクセスを行えないようにする。ステップS302では、メモリブロック130から受信可能なメモリブロックを検索する。
具体的には、STATE120に“受信可”を保持したメモリブロック130を検索する。STATE120に“受信可”を保持したメモリブロック130が存在しない場合には、共有メモリ110をアンロックし、当該データ受信処理を終了してもよい。
ステップS303では、ステップS302の検索で取得したメモリブロック130のSTATE120に“受信中”を保持させる。ステップS304では、共有メモリ110をアンロックし、他タスクから共有メモリ110にアクセスを行えるようにする。しかるのち、ステップS305では当該メモリブロック130から受信データを読出す。当該メモリブロック130からのデータ読出しが終了すると、ステップS306において当該メモリブロック130のSTATE120に“送信可”を保持させる。
このように、共有メモリ110をロックして他タスクからのアクセスを禁止した上で“受信可”のメモリブロックを検索し、取得したメモリブロックの状態保持領域(STATE)に“受信中”を保持させ、その後は共有メモリ110をアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記取得したメモリブロックからデータ読出しを行い、終了すれば“送信可”を保持させる。この場合、取得したメモリブロックからのデータ読出し中において共有メモリ110をアンロックしても、他タスクからの共有メモリへのアクセスにおいては、現在のデータ読出し対象のメモリブロックに“受信中”の標識があるので、競合を避けながら複数タスクのデータ受信の並行処理が可能となっている。
以上のように、本実施の形態によれば、例えば送信タスク100がメモリブロック130aにデータ書込みを行っている途中に、別の送信タスク101が別の送信可能なメモリブロック130bを認識して書込みを行うことができる。すなわち、送信タスク101は送信タスク100のデータ書込みの終了を待つ必要がないため、処理効率が高く、リアルタイム応答性が保証される。これは、送信タスクと受信タスク間および受信タスクと受信タスク間においても同様である。
(実施の形態2)
図4は、本発明の実施の形態2におけるタスク間通信装置の構成を示すブロック図である。タスク間通信装置は、複数のタスク500〜502からアクセス可能な共有メモリ510と、メモリブロック530と、メモリブロック530をリング状に連結して構成されるリングバッファ540と、データ送信手段570及びデータ受信手段580とを有する。
メモリブロック530は、少なくとも“送信可”、“受信可”、“送信中”、“受信中”の状態があり、それらの状態はメモリブロック130に対応する状態保持領域のSTATE520に保持される。
リングバッファ540は、次の送信メモリブロック530を指示するための書込みポインタ550と、次の受信メモリブロックを指示するための読出しポインタ560をもつ。
図5は、図4におけるデータ送信手段570の動作を示すフローチャートである。
データ送信手段570は、データ送信が開始されると、ステップS601にて共有メモリ510をロックし、他タスクから共有メモリ510にアクセスを行えないようにする。ステップS602では、書込みポインタ550が読出しポインタ560の1つ手前のメモリブロック530を指示しているかを判断する。1つ手前でなければ、ステップS603に進む。ステップS603では、書込みポインタ550が指示するメモリブロック530のSTATE520に“送信中”を保持させる。書込みポインタ550が読出しポインタ560の1つ手前であれば、共有メモリ510をアンロックし、当該データ送信処理を終了してもよい。ステップS604では、書込みポインタ550を次のメモリブロック530を指示するように更新する。
具体的には、図4に示すリングバッファ540において書込みポインタ550がメモリブロック530aを指示しているときは、リングバッファの進行方向下流側である一つ右のメモリブロック530bを指示するように更新する。
ステップS605では共有メモリ510をアンロックし、他タスクから共有メモリ510にアクセスを行えるようにする。しかるのち、ステップS606では、ステップS603で書込みポインタ550が指示していたメモリブロック530に送信データを書込む。当該メモリブロック530へのデータ書込みが終了すると、ステップS607において当該メモリブロック530のSTATE520に“受信可”を保持させる。
このように、共有メモリ510をロックして他タスクからのアクセスを禁止した上で、書込みポインタ550によるメモリブロックの指示が読出しポインタ560の1つ手前のメモリブロックでないことを確認の上、書込みポインタ550が指示するメモリブロックの状態保持領域(STATE)に“送信中”を保持させると共に、書込みポインタ550を次のメモリブロック指示に更新し、その後は共有メモリ510をアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記書込みポインタ550が指示するメモリブロックにデータ書込みを行い、終了すれば“受信可”を保持させる。この場合、書込みポインタ550が指示するメモリブロックへのデータ書込み中において共有メモリ510をアンロックしても、他タスクからの共有メモリ510へのアクセスにおいては、書込みポインタ550の更新によって次のデータ書込みメモリブロックの指示が行われているので、リングバッファ540は支障なく機能する。
図6は、図4におけるデータ受信手段580の動作を示すフローチャートである。
データ受信手段580は、データ受信が開始されると、ステップS701にて共有メモリ510をロックし、他タスクから共有メモリ510にアクセスを行えないようにする。ステップS702では、読出しポインタ560が書込みポインタ550と同じメモリブロック530を指示しているかを判断する。読出しポインタ560と書込みポインタ550が同じメモリブロック530を指示していなければ、ステップS703へ進む。読出しポインタ560と書込みポインタ550が同じメモリブロック530を指示していれば、共有メモリ510をアンロックし、当該データ受信処理を終了してもよい。ステップS703では、読出しポインタ560が指示するメモリブロック530のSTATE520が“受信可”を保持しているかを判断する。当該メモリブロック530のSTATE520が“受信可”を保持していれば、ステップS704へ進む。当該メモリブロック530のSTATE520が“受信可”を保持していなければ、共有メモリ510をアンロックし、当該データ受信処理を終了してもよい。ステップS704では、読出しポインタ560が指示するメモリブロック530のSTATE520に“受信中”を保持させる。ステップS705では、共有メモリ510をアンロックし、他タスクから共有メモリ510にアクセスを行えるようにする。しかるのち、ステップS706では、当該メモリブロック530から受信データを読出す。当該メモリブロック530からのデータ読出しが終了すると、ステップS707において、当該メモリブロック530のSTATE520に“送信可”を保持させる。ステップS708では、読出しポインタ560を次のメモリブロック530を指示するように更新する。
具体的には、図4に示すリングバッファ540においてSTATE520a〜520bが“送信中”を保持し、STATE520cが“受信中”を保持し、読出しポインタ560がメモリブロック530aを指示するときは、メモリブロック530aからリングバッファの進行方向下流側である右側にあって、STATE520が“送信可”を保持していない最初のメモリブロック530cを指示するように読出しポインタ560を更新する。
このように、共有メモリ510をロックして他タスクからのアクセスを禁止した上で、読出しポインタ560が書込みポインタ550とは異なること、および、読出しポインタ560が指示するメモリブロックが“受信可”であることを確認の上、読出しポインタ560が指示するメモリブロックの状態保持領域(STATE)に“受信中”を保持させ、その後は共有メモリ510をアンロックして他タスクからのアクセスを許容する状態に戻し、その状態で前記取得したメモリブロックからデータ読出しを行い、終了すれば“送信可”を保持させ、読出しポインタ560を次のメモリブロック指示に更新する。
この場合、読出しポインタ560が指示するメモリブロックにおいて、データ送信処理がデータ書込み中であっても、データ受信処理においては、データ読出し対象のメモリブロックに“送信中”の標識があるので、データ送信処理が書込み中の不完全なデータの読出しを避けながら、複数タスクのデータ送信の並行処理が可能となっている。
図7は、図4におけるタスク間通信装置において、タスク500が時刻t=1、タスク501が時刻t=2で、図5のフローチャートで示す動作を持つデータ送信手段570によるデータ送信を開始し、タスク502が時刻t=0より、図6のフローチャートで示す動作をもつデータ受信手段580によりデータ受信動作を連続して行う場合のタイムチャートである。ただし、タスク500は4単位時間、タスク501は1単位時間をデータ送信処理に必要とし、タスク502は2単位時間をデータ受信処理に必要とする(2回連続のため、4単位時間となっている)。また、時刻t=0においてリングバッファ540は空であるとする。
時刻t=0において、タスク502がデータ受信手段580によりデータ受信を開始するが、読出しポインタ560と書込みポインタ550が同じメモリブロック530を指示するため、図6のステップS702で終了処理となり、ステップS706において、メモリブロック530からデータを読出すことはなく、ステップS708の読出しポインタ560の更新もない。
時刻t=1において、タスク500はデータ送信手段570によるメモリブロック530aへのデータ送信を開始する。このとき、データ送信手段570は図5のステップS603においてSTATE520aに“送信中”を保持させる。したがって、タスク502におけるデータ受信手段580によるデータ受信では、図6のステップS703で終了処理となり、ステップS706において、メモリブロック530aからデータを読出すことはなく、ステップS708の読出しポインタ560の更新もない。
時刻t=2において、タスク501はデータ送信手段570によるメモリブロック530bへのデータ送信を開始する。このとき、データ送信手段570は図5のステップS603においてSTATE520bに“送信中”を保持させる。したがって、タスク502におけるデータ受信手段580によるデータ受信では、図6のステップS703で終了処理となり、ステップS706において、メモリブロック530bからデータを読出すことはなく、ステップS708の読出しポインタ560の更新もない。
時刻t=3において、タスク501はデータ送信手段570によるメモリブロック530bへのデータ送信を終了する。このとき、データ送信手段570は図5のステップS607においてSTATE520bに“受信可”を保持させる。しかし、同時刻において、読出しポインタ560は、STATE520aに“送信中”を保持するメモリブロック530aを指示するため、タスク502におけるデータ受信手段580は、図6のステップS706においてメモリブロック530bからデータを読出すことはない。
時刻t=5において、タスク500はデータ送信手段570によるメモリブロック530aへのデータ送信を終了する。このとき、データ送信手段570は図5のステップS607においてSTATE520aに“受信可”を保持させる。同時刻において、タスク502におけるデータ受信手段580は、図6のステップS702からステップS703,S704,S705と進み、ステップS706において、読出しポインタ560の指示するメモリブロック530aからのデータ読出しを開始する。この場合、ステップS708で読出しポインタ560の更新が行われる。
時刻t=7において、タスク502はデータ受信手段580によるメモリブロック530aからのデータ受信を終了する。このとき、データ受信手段580は図6のステップS707においてSTATE520aに“送信可”を保持させ、ステップS708において読出しポインタ560を更新する。さらに、同時刻において、更新された読出しポインタ560は、STATE520bに“受信可”を保持するメモリブロック530bを指示するため、タスク502におけるデータ受信手段580は、図6のステップS702からステップS703,S704,S705と進み、ステップS706において、読出しポインタ560の指示するメモリブロック530bからのデータ読出しを開始する。この場合、ステップS708で読出しポインタ560の更新が行われる。
時刻t=9において、タスク502はデータ受信手段580によるメモリブロック530bからのデータ受信を終了する。
以上のように、本実施の形態によれば、従来のリングバッファでは不可能であった、複数のタスクによりデータ送信処理を並行に行うことが可能なため、送信タスクの処理効率が高い。たとえば、送信タスク500がメモリブロック530aにデータ書込みを行っている途中に、別の送信タスク501が書込みポインタ550の指示するメモリブロック530bにデータ書込みを行うことができる。このときタスク501はタスク500のデータ書込みの終了を待つ必要がないため、処理効率が高く、リアルタイム応答性が保証される。
(実施の形態3)
図8は、図6のステップS703で読出しポインタ560が指示するメモリブロック530の状態保持領域のSTATE520に“受信可”が保持されていなかった場合の、図4におけるデータ受信手段580の動作を示すフローチャートである。
データ受信手段580は、データ受信が開始されると、ステップS901では、共有メモリ510をロックし、他タスクから共有メモリ510にアクセスを行えないようにする。ステップS902では、読出しポインタ560が書込みポインタ550と同じメモリブロック530を指示しているかを判断する。読出しポインタ560が書込みポインタ550と同じメモリブロック530を指示していなければ、ステップS903へ進む。ステップS903では、読出しポインタ560が指示するメモリブロック530のSTATE520が“受信可”を保持しているかを判断する。読出しポインタ560が指示するメモリブロック530のSTATE520が“受信可”を保持していなければステップS904へ進む。
ステップS904では、受信可能データの先読みのために、読出しポインタ560からリングバッファの進行方向である右回りに書込みポインタ550までにあるメモリブロック530からSTATE520に“受信可”を保持したメモリブロック530を検索する。当該メモリブロック503が検索されない場合には、共有メモリ510をアンロックし、当該データ受信処理を終了してもよい。ステップS905では、ステップS904の検索で取得したメモリブロック503のSTATE502に“受信中”を保持させる。ステップS906では、共有メモリ510をアンロックし、他タスクから共有メモリ510にアクセスを行えるようにする。しかるのち、ステップS907では、当該メモリブロック530から受信データを読出す。当該メモリブロック530からのデータ読出しが終了すると、ステップS908において、当該メモリブロック530のSTATE520に“送信可”を保持させる。
図9は、図4におけるタスク間通信装置において、タスク500が時刻t=1、タスク501が時刻t=2で、図5のフローチャートで示す動作を持つデータ送信手段570によるデータ送信を開始し、タスク502が時刻t=0より、図8のフローチャートで示す動作をもつデータ受信手段580によりデータ受信動作を連続して行う場合のタイムチャートである。ただし、タスク500は4単位時間、タスク501は1単位時間をデータ送信処理に必要とし、タスク502は2単位時間をデータ受信処理に必要とする。また、時刻t=0においてリングバッファ540は空であるとする。
時刻t=0において、タスク502がデータ受信手段580によりデータ受信を開始するが、読出しポインタ560と書込みポインタ550が同じメモリブロック530を指示するため、図8のステップS902で終了処理となり、ステップS907において、メモリブロック530からデータを読出すことはなく、ステップS708の読出しポインタ560の更新もない。
時刻t=1において、タスク500はデータ送信手段570によるメモリブロック530aへのデータ送信を開始する。このとき、データ送信手段570は図5のステップS603においてSTATE520aに“送信中”を保持させる。同時刻において、タスク502におけるデータ受信手段580によるデータ受信では、図8のステップS902で終了処理となり、ステップS904において、受信可能データの先読みのために、受信可能なメモリブロック530を検索するが、書込みポインタ550までに受信可能なメモリブロック530は存在しないため、受信処理を終了し、ステップS907においてデータを読出すことはない。読出しポインタ560の更新もない。
時刻t=2において、タスク501はデータ送信手段570によるメモリブロック530bへのデータ送信を開始する。このとき、データ送信手段570は図5のステップS603においてSTATE520bに“送信中”を保持させる。同時刻において、タスク502におけるデータ受信手段580によるデータ受信では、図8のステップS904において、受信可能データの先読みのために、受信可能なメモリブロック530を検索するが、書込みポインタ550までに受信可能なメモリブロック530は存在しないため、受信処理を終了し、ステップS907においてデータを読出すことはない。読出しポインタ560の更新もない。
時刻t=3において、タスク501はデータ送信手段570によるメモリブロック530bへのデータ送信を終了する。このとき、データ送信手段570は図5のステップS607においてSTATE520bに“受信可”を保持させる。同時刻において、タスク502におけるデータ受信手段580によるデータ受信では、図8のステップS904において、受信可能データの先読みのために、受信可能なメモリブロック530bを検索し、ステップS907においてメモリブロック530bからのデータ受信を開始する。
時刻t=5において、タスク500はデータ送信手段570によるメモリブロック530aへのデータ送信を終了する。このとき、データ送信手段570は図5のステップS607においてSTATE520aに“受信可”を保持させる。同時刻において、タスク502におけるデータ受信手段580は、メモリブロック530bからのデータ受信を終了する。このとき、読出しポインタ560はSTATE520aに“受信可”を保持するメモリブロック530aを指示するため、タスク502におけるデータ受信手段580は、図8のステップS903からステップS704,S705,S706と進み、ただちにデータ受信手段580によるメモリブロック530aのデータ読出しを開始する。この場合、ステップS708で読出しポインタ560の更新が行われる。
時刻t=7においてタスク502はデータ受信手段580によるメモリブロック530aからのデータ受信を終了する。
以上のように、本実施の形態によれば、従来のリングバッファでは不可能であった受信可能データの先読みが可能なため、受信タスクの処理効率が高い。たとえば、送信タスク500がメモリブロック530aにデータ書込みを行っている途中に、別の送信タスク501がメモリブロック530bへのデータ書込みを終了すると、受信タスク502は読出しポインタ560が指示するメモリブロック530aに対する送信タスク500のデータ書込みの終了を待つことなく、即座にメモリブロック530bからデータ読出しを行うため、処理効率が高く、リアルタイム応答性が保証される。
本発明のタスク間通信装置は、複数のタスクを並列に処理する情報処理システムにおいて、割込み応答性能の高いタスク間通信が可能なため、応答のリアルタイム性が強く求められる携帯電話、AV機器等において有用である。
本発明の実施の形態1のタスク間通信装置の構成を示すブロック図 本発明の実施の形態1のタスク間通信装置のデータ送信手段の動作を示すフローチャート 本発明の実施の形態1のタスク間通信装置のデータ受信手段の動作を示すフローチャート 本発明の実施の形態2のタスク間通信装置の構成を示すブロック図 本発明の実施の形態2のタスク間通信装置のデータ送信手段の動作を示すフローチャート 本発明の実施の形態2のタスク間通信装置のデータ受信手段の動作を示すフローチャート 本発明の実施の形態2におけるタスク間通信装置の動作を説明するタイムチャート 本発明の実施の形態3のタスク間通信装置のデータ受信手段の動作を示すフローチャート 本発明の実施の形態3におけるタスク間通信装置の動作を説明するタイムチャート 従来のタスク間通信装置の構成を示すブロック図 従来のタスク間通信装置のデータ受信の動作を示すフローチャート 従来のタスク間通信装置のデータ送信の動作を示すフローチャート
符号の説明
100,101,102 タスク
110 共有メモリ
120,120a,120b 状態保持領域(STATE)
130,130a,130b メモリブロック
140 データ送信手段
150 データ受信手段
500,501,502 タスク
510 共有メモリ
520,520a,520b,520c 状態保持領域(STATE)
530,530a,530b,530c メモリブロック
540 リングバッファ
550 書込みポインタ
560 読出しポインタ
570 データ送信手段
580 データ受信手段
1101,1102 タスク
1110 共有メモリ
1120 処理フラグ
1130 データブロック
1140 データ送信手段
1150 データ受信手段

Claims (3)

  1. 複数のタスクからアクセス可能な共有メモリを有するタスク間通信装置において、
    前記共有メモリ上に設けられた状態保持領域をもつ複数のメモリブロックと、
    前記タスクのデータ送信処理開始に当たり、前記共有メモリをロックし、前記共有メモリにおいて前記状態保持領域に“送信可”を保持した前記メモリブロックを検索し、当該メモリブロックの前記状態保持領域に“送信中”を保持させ、前記共有メモリをアンロックすると共に、データ送信処理終了時に当該メモリブロックの前記状態保持領域に“受信可”を保持させるデータ送信手段と、
    前記タスクのデータ受信処理開始に当たり、前記共有メモリをロックし、前記共有メモリにおいて前記状態保持領域に“受信可”を保持した前記メモリブロックを検索し、当該メモリブロックの前記状態保持領域に“受信中”を保持させ、前記共有メモリをアンロックすると共に、データ受信処理終了時に当該メモリブロックの前記状態保持領域に“送信可”を保持させるデータ受信手段と、
    を有することを特徴とするタスク間通信装置。
  2. 複数のタスクからアクセス可能な共有メモリを有するタスク間通信装置において、
    前記共有メモリ上に設けられた状態保持領域をもつ複数のメモリブロックをリング状に連結して構成されるリングバッファと、
    前記リングバッファに付加されて次の送信メモリブロックを指示するための書込みポインタと、
    前記リングバッファに付加されて次の受信メモリブロックを指示するための読出しポインタと、
    前記タスクのデータ送信処理開始に当たり、前記共有メモリをロックし、前記書込みポインタが前記読出しポインタの1つ手前の前記メモリブロックを指示しているかを判断し、1つ手前でなければ当該メモリブロックの前記状態保持領域に“送信中”を保持させ、前記書込みポインタを次の前記メモリブロックの指示に更新し、前記共有メモリをアンロックすると共に、データ送信処理終了時に当該メモリブロックの前記状態保持領域に“受信可”を保持させるデータ送信手段と、
    前記タスクのデータ受信処理開始に当たり、前記共有メモリをロックし、前記読出しポインタと前記書込みポインタが同じ前記メモリブロックを指示しているか判断し、同じでなくかつ当該メモリブロックの前記状態保持領域に“受信可”が保持されている場合に当該メモリブロックの前記状態保持領域に“受信中”を保持させ、前記共有メモリをアンロックすると共に、データ受信処理終了時に当該メモリブロックの前記状態保持領域に“送信可”を保持させ、前記読出しポインタを次の前記メモリブロックの指示に更新するデータ受信手段と、
    を有することを特徴とするタスク間通信装置。
  3. 前記データ受信手段は、前記読出しポインタと前記書込みポインタが同じ前記メモリブロックを指示しておらず、かつ当該読出しポインタが指示する前記メモリブロックの前記状態保持領域に“受信可”が保持されていなければ、前記読出しポインタから前記書込みポインタまでにある前記メモリブロックから前記状態保持領域に“受信可”を保持した前記メモリブロックを検索し、当該メモリブロックの前記状態保持領域に“受信中”を保持させ、前記共有メモリをアンロックすると共に、データ受信処理終了時に当該メモリブロックに“送信可”を保持させることを特徴とする請求項2に記載のタスク間通信装置。
JP2004132964A 2004-04-28 2004-04-28 タスク間通信装置 Pending JP2005316659A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004132964A JP2005316659A (ja) 2004-04-28 2004-04-28 タスク間通信装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004132964A JP2005316659A (ja) 2004-04-28 2004-04-28 タスク間通信装置

Publications (1)

Publication Number Publication Date
JP2005316659A true JP2005316659A (ja) 2005-11-10

Family

ID=35444027

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004132964A Pending JP2005316659A (ja) 2004-04-28 2004-04-28 タスク間通信装置

Country Status (1)

Country Link
JP (1) JP2005316659A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522361A (ja) * 2007-03-22 2010-07-01 クゥアルコム・インコーポレイテッド オーディオファイルを処理するための共有バッファ管理
JP2012003673A (ja) * 2010-06-21 2012-01-05 Mitsubishi Electric Corp Cpu間通信システム及びcpu間通信方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010522361A (ja) * 2007-03-22 2010-07-01 クゥアルコム・インコーポレイテッド オーディオファイルを処理するための共有バッファ管理
JP2013083984A (ja) * 2007-03-22 2013-05-09 Qualcomm Inc オーディオファイルを処理するための共有バッファ管理
JP2012003673A (ja) * 2010-06-21 2012-01-05 Mitsubishi Electric Corp Cpu間通信システム及びcpu間通信方法

Similar Documents

Publication Publication Date Title
JP2010211696A (ja) メモリスワップ管理方法、装置およびプログラム
US20170371810A1 (en) Data Transmission Method and System
WO2008075361A2 (en) Apparatus, method and computer readable medium for disambiguating commands with respect to logical protocols
JP4834362B2 (ja) メモリ制御装置。
JP2014134861A (ja) 情報処理装置およびその制御方法、
CN1225212A (zh) 用于单信道双向无线通信的半双工通用异步收发信机控制器
CN101990049B (zh) 数据处理系统及该数据处理系统的控制方法
JP4983543B2 (ja) 画像形成装置及び画像形成システム
JP2005316659A (ja) タスク間通信装置
US20100325733A1 (en) Information processing device, information processing method and program
EP0789303B1 (en) Memory system and a data communication system
US9582341B2 (en) Semiconductor device including a plurality of processors and a method of operating the same
US6978391B2 (en) Asynchronous bus interface circuit, method of controlling the circuit, microcomputer, and device controlling method
CN111708288B (zh) 数据处理的方法、装置、电子设备及存储介质
JP5166955B2 (ja) 情報処理装置、情報処理方法、及び、情報処理プログラム
US20090237710A1 (en) Method of transmitting/receiving data between image forming device and portable storage device, and image forming device for performing the method
CN113031927A (zh) 数据输入、输出方法、装置及系统
JP2010079536A (ja) メモリアクセス制御回路、メモリアクセス制御方法
CN108234352B (zh) 电子控制单元和数据发送方法
JP4128477B2 (ja) 通信システムおよびプログラム
CN109086609B (zh) 用于具有安全属性的多核通信的方法和系统
JP2006134041A (ja) データ管理装置
KR20060086733A (ko) 파일 관리 기능이 구비된 이동통신 단말기 및 그 동작방법
JPH0644126A (ja) ファイル転送装置
JP2004235712A (ja) 画像形成装置、制御方法及び該方法を実行するためのプログラムを格納したコンピュータ読み取り可能な記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070207

A977 Report on retrieval

Effective date: 20080718

Free format text: JAPANESE INTERMEDIATE CODE: A971007

A131 Notification of reasons for refusal

Effective date: 20080805

Free format text: JAPANESE INTERMEDIATE CODE: A131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20081202