JP2001043092A - タスク間メッセージ通信方法 - Google Patents

タスク間メッセージ通信方法

Info

Publication number
JP2001043092A
JP2001043092A JP11217396A JP21739699A JP2001043092A JP 2001043092 A JP2001043092 A JP 2001043092A JP 11217396 A JP11217396 A JP 11217396A JP 21739699 A JP21739699 A JP 21739699A JP 2001043092 A JP2001043092 A JP 2001043092A
Authority
JP
Japan
Prior art keywords
message
task
state
address
receiving
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
JP11217396A
Other languages
English (en)
Inventor
Takayuki Sonobe
隆行 薗部
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.)
NEC IC Microcomputer Systems Co Ltd
Original Assignee
NEC IC Microcomputer Systems 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 NEC IC Microcomputer Systems Co Ltd filed Critical NEC IC Microcomputer Systems Co Ltd
Priority to JP11217396A priority Critical patent/JP2001043092A/ja
Publication of JP2001043092A publication Critical patent/JP2001043092A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 高優先タスクが待たされることなく、使用さ
れない無駄な領域をなくし資源の有効利用ができるよう
にする。 【解決手段】 OS1の中にメッセージ管理情報2とア
ドレス管理情報4により管理されるメッセージ・データ
3とを含む。メッセージ管理情報2は、メッセージID
5、受信中カウンタ6、メッセージ状態7を備えてい
る。メッセージID5は、他のメッセージデータと区別
するための番号を持つ。受信中カウンタ6は、メッセー
ジデータ3を受信しているタスクの個数を持つ。メッセ
ージ状態7はリード状態、メッセージ領域開放要求状
態、通常状態の3種類の状態に遷移が可能である。リー
ド状態は、メッセージデータ3を受信している状態、メ
ッセージ領域開放要求状態は受信が終了するとメッセー
ジを削除する状態、通常状態はそれ以外の状態である。
アドレス管理情報4は、メッセージ・データ3の先頭ア
ドレスを持つ。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はタスク間のデータ送
受信方法に関する。
【0002】
【従来の技術】タスク間通信の方法は、メールボックス
を使用してキューインングを行う方法や、メッセージを
セマフォを用いて管理する方法がある。タスク間通信機
能は通常OSより提供される。
【0003】キューイング方法を以下に示す(特開平8
−77024より要約)。図11にあるようにメッセー
ジ送信タスク51とメッセージ受信タスク52とはリア
ルタイムOS54の管理下で走行している。まず、メッ
セージ送信タスク51は、外部装置からの処理要求の発
生を待ち、処理要求が発生すると、メッセージを生成し
て、メッセージ送信用システムコールをリアルタイムO
S54に発行し、メッセージをメッセージキュー53に
格納する。
【0004】リアルタイムOS54は、送信処理の開始
の際、送信用システムコールを受付け(ステップ6
1)、メッセージキュー53の空きを調べ(ステップ6
2)、空きがある場合に、メッセージの格納をメッセー
ジ送信タスク51に指示する(ステップ64)。メッセ
ージキューに空きがない場合、エラー処理し(ステップ
65)、リアルタイムOS54は、他のタスク、ここで
は、メッセージ受信タスク52により後述するイベント
フラグをセットされるのを待つ。イベントフラグがセッ
トされた場合、リアルタイムOS54はメッセージキュ
ーの空きを調べ、以下、この手順を繰返す。
【0005】次に、メッセージ受信タスク52は、受信
処理開始可能になると、メッセージ受信用システムコー
ルをリアルタイムOS54に発行する。この結果、メッ
セージ受信タスク52は、リアルタイムOS54からメ
ッセージ取出し指示を受けて(ステップ72、73)、
メッセージをメッセージキュー53から取出し、このメ
ッセージの内容に従った処理を行う。
【0006】リアルタイムOS54は、メッセージキュ
ー53からメッセージが取出されてメッセージキュー5
3に空きが生じるので、リアルタイムOS54はイベン
トフラグをセットして、手順を終了する。メッセージの
格納がない場合には、受信処理は終了になり、次の開始
を待つ。
【0007】セマフォを用いる場合は、タスク間のデー
タの授受は共有メモリ領域を介して行うようになってい
る。OSは共有メモリのアクセス中フラグをセットし、
他タスクからその共有メモリに対してアクセスがある場
合は、共有メモリがアクセス中であることをタスクに返
す。タスクが共有メモリ受信中に、その共有メモリに対
して、他のタスクから送信しようとした場合、そのタス
クの送信要求は受信が終了するまでは中断される(図1
3)。
【0008】つまり、タスクが共有メモリに対してアク
セスを行っている間は、他のタスクからアクセスを行う
ことができない。
【0009】
【発明が解決しようとする課題】セマフォを行う方法で
は、その読み出しを行っているタスクよりも優先順位が
上位のタスクが起床され同一のメッセージに対して書込
みを行う場合、メッセージアクセスを一時停止させるた
め、図9のタイミングチャートで示すように、高優先タ
スクの処理が一時停止させた分だけ処理の終了が遅れて
しまう。タスクが重なれば重なるほどウエイト時間は増
加する。
【0010】また、キューイングを行う方法では、キュ
ーイングを行うために静的な領域を確保しなければなら
ないため、メッセージキューにメッセージがない場合で
も、領域を確保しておく必要がある。
【0011】本発明の目的は、優先順位が高いタスク
が、割り込みイベントにより短いタイミングで起床され
る場合に、高優先タスクが待たされることなく、かつ、
メッセージキューで使用するような静的な領域をなくし
資源の有効利用ができるタスク間のデータ送受信方法を
提供することにある。
【0012】
【課題を解決するための手段】本発明はタスク間メッセ
ージ通信方法は、オペレーティングシステム中に、各メ
ッセージ・データについて当該メッセージ・データを識
別するためのメッセージID、当該メッセージ・データ
を受信しているタスクの個数を持つ受信中カウンタ、当
該メッセージを受信していることを示すリード状態、受
信を終了すると当該メッセージを削除するメッセージ領
域開放要求状態、それ以外の通常状態からなるメッセー
ジ状態を含むメッセージ管理情報と、当該メッセージ・
データの先頭アドレスを示すアドレス管理情報を有し、
メッセージ管理情報とアドレス管理情報をもとにしてメ
ッセージの領域の確保と開放を動的に行う。
【0013】1対nのタスク間通信において可変長のメ
ッセージの送受信を行う場合、例えば、優先順位が低位
のタスクがメッセージに対して読み出しを行っている時
に割り込みイベントが発生し、その読み出しを行ってい
るタスクよりも優先順位が上位のタスクが起動され同一
のメッセージに対して書込みを行う場合、そのメッセー
ジに対してアクセスの禁止が行われていなければ、メッ
セージ・データが途中で書き換わるため、優先順位が低
位のタスクが行っている読み出しデータが不定なものに
なってしまう。
【0014】そのため、読み出し中、書込み中の場合
は、そのメッセージに対して他のタスクがアクセスする
ことを禁止する等の排他制御の対策が必要になり、従来
よりセマフォを行う方法や、メッセージのキューイング
を行う方法がある。
【0015】セマフォを行う方法では、その読み出しを
行っているタスクよりも優先順位が上位のタスク起床さ
れ同一のメッセージに対して書込みを行う場合、メッセ
ージアクセスを一時停止させるため、図9のタイミング
チャートで示すように、高優先タスクの処理が一時停止
させた分だけ処理の終了が遅れてしまう。タスクが重な
れば重なるほどウエイト時間は増加する。
【0016】本発明は、図10のタイミングチャートに
示すように、メッセージのアクセスにおいて、高優先タ
スク処理を一時停止することがないため、高優先タスク
の処理が遅れることがなくなる(高優先タスクが低優先
タスクの受信処理完了を待つ必要がない)。
【0017】また、キューイングを行う方法では、静的
に格納している領域(メッセージキュー)にメッセージ
を格納しメッセージの送受信を行うが、メッセージ送信
タスクからメッセージ送信用システムコールが呼び出さ
れた時に、OSがメッセージキューに空きがないことを
検出した場合、エラー処理を行う。この構成ではタスク
の処理時間が資源待ち等の原因で長くなった場合、メッ
セージ送信タスクの走行が多くなり、メッセージキュー
の空きがなくなってしまう。よって、あらかじめ静的な
領域を十分に確保しておく必要がある。例えば、100
バイトのメッセージを、キーイングを行うために最大1
0個のメッセージキューが必要になるシステムの場合、
OSはメッセージキューを10個持つ必要がある。よっ
て、100バイトのメッセージが2個だけ存在する場合
でも、100×10バイトの領域を確保する。
【0018】本発明では、静的な領域を必要としない
(メッセージが必要になる時のみOSが管理している領
域を確保する。タスクの処理時間が資源待ち等の原因で
長くなった場合でもOSが管理している領域が許す限り
確保することができる)ため、タスク100バイトのメ
ッセージが2個だけ存在する場合は、2×100バイト
でよい。
【0019】
【発明の実施の形態】次に、本発明の実施の形態につい
て図面を参照して説明する。
【0020】図1に示すように本実施形態は、OS1の
中にメッセージ管理情報2とアドレス管理情報4により
管理されるメッセージ・データ3とを含む。メッセージ
管理情報2は、メッセージID5、受信中カウンタ6、
メッセージ状態7を備えている。メッセージID5は、
他のメッセージデータと区別するための番号を持つ。受
信中カウンタ6は、メッセージデータ3を受信している
タスクの個数を持つ。メッセージ状態7はリード状態、
メッセージ領域開放要求状態、通常状態の3種類の状態
に遷移が可能である。リード状態は、メッセージ・デー
タ3を受信している状態、メッセージ領域開放要求状態
は受信が終了するとメッセージを削除する状態、通常状
態はそれ以外の状態である。アドレス管理情報4は、メ
ッセージ・データ3の先頭アドレスを持つ。
【0021】メッセージ送受信時のOS1の動作を説明
する(動作のイメージ図を図2に示す)。
【0022】送信時のOS動作は図3のフローチャート
に示すように、タスクよりメッセージ送信開始要求があ
るとOS1は、無条件でメッセージ状態を初期化し(メ
ッセージID5を格納、受信中カウンタ6をクリア、メ
ッセージ状態7を通常状態)(ステップ11)、空き領
域のメッセージ・アドレスをタスクに渡す(ステップ1
2)。その後、処理を終了し、タスクからのメッセージ
送信終了通知待ちに移行する。この時タスクに渡される
アドレスは、OS1が管理をしている空き領域を使用す
る(固定で持っているわけではない)。
【0023】タスクより送信終了通知があると、OS1
はアドレス管理情報4に登録されているメッセージアド
レスを使用し、同一メッセージIDを検索する(ステッ
プ13)。検索した結果、同一メッセージIDがない場
合は、アドレス管理情報4にタスクから送信されたアド
レスを追加し(ステップ17)、処理を終了する。
【0024】同一メッセージIDを持つメッセージがあ
る場合は、メッセージ状態7を確認しメッセージ状態7
が通常状態ならば領域を開放する(ステップ15)。メ
ッセージ状態7がリード状態ならばメッセージ状態7を
メッセージ領域開放要求状態にする(ステップ16)。
その後アドレス管理情報4にタスクから送信されたアド
レスを追加し(ステップ17)、処理を終了する。
【0025】受信時のOS動作は図4のフローチャート
に示すように、タスクよりメッセージ受信開始要求があ
ると、OS1はメッセージID5に対応したメッセージ
のアドレスをタスクに渡す(ステップ7)。同時にメッ
セージ状態をリード状態にし、受信中カウンタ6を+1
する(ステップ22)。その後、処理を終了し、タスク
からのメッセージ受信終了通知待ちに移行する。
【0026】タスクよりメッセージ受信終了通知がある
と、OS1は受信中カウンタ6を−1する(ステップ2
3)、その結果、受信中カウンタが0の場合で、メッセ
ージ状態がメッセージ領域開放要求状態の場合は、メッ
セージを開放する(アドレス管理情報4に登録されてい
るアドレスを削除する)(ステップ24〜26)。メッ
セージ状態7がメッセージ領域開放要求状態でない場合
は、メッセージ状態7を通常状態に戻し(ステップ2
7)、処理を終了する。
【0027】メッセージ送受信時のタスクの動作を説明
する。
【0028】送信時のタスク動作は図5のフローチャー
トに示すように、タスクがメッセージの送信を行う場
合、送信タスクはOS1に対して送信要求を発行する
(ステップ31)。送信要求を発行することにより送信
タスクは、OSからメッセージを書き込むアドレスを受
け取る。送信タスクは、受け取ったアドレスからメッセ
ージを書き込み(ステップ32)、OS1に送信終了通
知を発行し(ステップ33)、処理を終了する。
【0029】受信時のタスク動作は図6のフローチャー
トに示すように、メッセージ受信を行う場合、受信タス
クはOS1に対して受信要求を発行する(ステップ4
1)。受信要求を発行することにより、受信タスクはO
S1からメッセージの格納先アドレスを受信する。受信
タスクは、受け取ったアドレスからメッセージの読み込
みを行い(ステップ42)、終了するとOS1に受信終
了通知を発行し(ステップ43)、処理を終了する。
【0030】複数のタスクからの同一のメッセージに対
して送受信を行う場合を説明する。2つのタスクの優先
順位が、 タスクA>タスクB の関係にあり、タスク
Bがメッセージ受信を行っている途中にイベントが発生
し、タスクAが起動され、タスクAが(タスクBが受信
を行っているメッセージIDに対して)メッセージを送
信する場合、OS1は上記説明にあるように、現在使用
しているメッセージの領域と異なる領域へメッセージを
書込むようにアドレスを渡す。よって、受信を行ってい
るメッセージに対して送信を行う場合でも、一時停止さ
れることなくメッセージ送信処理を続けることが可能に
なる。
【0031】また、タスクAより優先順位が上位のタス
クCが存在し、タスクAのメッセージ書込み中にタスク
Cが起動されメッセージ受信を行う場合は、OS1は以
前にあるメッセージ(タスクBが受信を行っているメッ
セージ)のアドレスを渡すので、タスクCの受信処理も
一時停止されることなく受信を行うことが可能になる
(図7)。
【0032】また、タスクAのメッセージ書込みが終了
してからタスクCが起動された場合は、最後に書込まれ
たメッセージ(タスクBが読み込みを行っていない、タ
スクAにより新たに書き込まれたメッセージ)のアドレ
スを渡すため、最新メッセージを受信することが可能に
なる(図8)。
【0033】
【発明の効果】以上説明したように本発明は、組み込み
マイコン用OSでのタスク間通信のメッセージデータ送
受信方法において、メッセージ管理情報を設け、OSが
メッセージの領域確保や開放を動的に管理することで、
タスクはメッセージの状態を意識せずにメッセージの送
受信を行うことが可能になること。
【図面の簡単な説明】
【図1】本発明の一実施形態の構成図である。
【図2】OS1と複数のタスクA、B、C間のメッセー
ジ送受信を示す図である。
【図3】メッセージ送信時のOS1の動作を示すフロー
チャートである。
【図4】メッセージ受信時のOS1の動作を示すフロー
チャートである。
【図5】メッセージ送信時のタスクの動作を示すフロー
チャートである。
【図6】メッセージ受信時のタスクの動作を示すフロー
チャートである。
【図7】タスクBがメッセージ受信中にタスクAが起床
されメッセージ送信を行い、タスクA送信中にタスクと
がメッセージを受信する動作を示すイメージ図である。
【図8】タスクBがメッセージ受信中にタスクAが起床
されメッセージ送信を行い、タスクA送信終了後タスク
Cがメッセージを受信する動作のイメージ図である。
【図9】セマフォを行う方法のタイミングチャートであ
る。
【図10】本発明の一実施形態のタイミングチャートで
ある。
【図11】キューイングの構成図である。
【図12】キューイングの送受信動作を示すフローチャ
ートである。
【図13】セマフォを用いる方法のタイミングチャート
である。
【符号の説明】
1 OS 2 メッセージ管理情報 3 メッセージ・データ 4 アドレス管理情報 5 メッセージID 6 受信中カウンタ 7 メッセージ状態 11〜17、21〜27、31〜33、41〜43
ステップ 51 メッセージ送信タスク 52 メッセージ受信タスク 53 メッセージキュー 54 リアルタイムOS

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 複数のタスクがオペレーティングシステ
    ムからメッセージを受信し、またオペレーティングシス
    テムにメッセージを送信することでタスク間のメッセー
    ジ通信を行うタスク間メッセージ通信方法において、 オペレーティングシステム中に、各メッセージ・データ
    について当該メッセージ・データを識別するためのメッ
    セージID、当該メッセージ・データを受信しているタ
    スクの個数を持つ受信中カウンタ、当該メッセージを受
    信していることを示すリード状態、受信を終了すると、
    当該メッセージを削除するメッセージ領域開放要求状
    態、それ以外の通常状態からなるメッセージ状態を含む
    メッセージ管理情報と、当該メッセージ・データの先頭
    アドレスを示すアドレス管理情報を有し、前記メッセー
    ジ管理情報と前記アドレス管理情報をもとにしてメッセ
    ージの領域の確保と開放を動的に行うことを特徴とする
    タスク間メッセージ通信方法。
  2. 【請求項2】 タスクよりメッセージ送信開始要求があ
    ると、前記メッセージIDを格納し、前記受信中カウン
    タをクリア、前記メッセージ状態を通常状態とし、空き
    領域のメッセージ・アドレスを前記タスクに渡し、前記
    タスクより送信終了通知があると、前記アドレス管理情
    報に登録されているメッセージ・アドレスを使用し、同
    一メッセージIDを検索し、同一メッセージIDがない
    場合は、前記アドレス管理情報に前記タスクから送信さ
    れたアドレスを追加し、同一メッセージIDをもつメッ
    セージがある場合は、前記メッセージ状態を確認し、メ
    ッセージ状態が通常状態ならば領域を開放し、前記メッ
    セージ状態が前記リード状態ならば前記メッセージ状態
    を前記メッセージ領域開放要求状態にし、その後前記タ
    スクから送信されたアドレスを前記アドレス管理情報に
    追加する、請求項1記載の方法。
  3. 【請求項3】 タスクよりメッセージ受信開始要求があ
    ると、前記メッセージIDに対応したメッセージのアド
    レスを前記タスクに渡し、前記メッセージ状態をリード
    状態にし、前記受信中カウンタを+1し、前記タスクよ
    りメッセージ受信終了通知があると、前記受信中カウン
    タを−1し、その結果受信中カウンタが0で、前記メッ
    セージ状態が前記メッセージ領域開放要求状態の場合は
    前記アドレス管理情報に登録されているアドレスを削除
    し、前記メッセージ状態が前記メッセージ領域開放要求
    状態でない場合、前記メッセージ状態を通常状態に渡
    し、前記受信中カウンタが0でない場合は、そのまま処
    理を終了する、請求項1記載の方法。
  4. 【請求項4】 第1のタスクがメッセージ受信を行って
    いる途中に、第1のタスクよりも優先順位が高い第2の
    タスクが、第1のタスクがメッセージ受信を行なってい
    るメッセージにメッセージを送信する場合、現在使用さ
    れているメッセージ領域と異なるメッセージ領域へメッ
    セージを書込むようにアドレスを渡す、請求項1記載の
    方法。
  5. 【請求項5】 第2のタスクのメッセージ書込み中に、
    第2のタスクよりも優先順位の高い第3のタスクが起動
    されメッセージ受信を行う場合、第1のタスクが受信を
    行なっているメッセージのアドレスを第3のタスクに渡
    す、請求項4記載の方法。
  6. 【請求項6】 第2のタスクのメッセージ書込みが終了
    してから、第2のタスクよりも優先順位の高い第3のタ
    スクが起動された場合、第1のタスクが読み込みを行っ
    ていない、第2のタスクにより新たに書込まれたメッセ
    ージのアドレスを第3のタスクに渡す、請求項4記載の
    方法。
JP11217396A 1999-07-30 1999-07-30 タスク間メッセージ通信方法 Pending JP2001043092A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11217396A JP2001043092A (ja) 1999-07-30 1999-07-30 タスク間メッセージ通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11217396A JP2001043092A (ja) 1999-07-30 1999-07-30 タスク間メッセージ通信方法

Publications (1)

Publication Number Publication Date
JP2001043092A true JP2001043092A (ja) 2001-02-16

Family

ID=16703544

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11217396A Pending JP2001043092A (ja) 1999-07-30 1999-07-30 タスク間メッセージ通信方法

Country Status (1)

Country Link
JP (1) JP2001043092A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005322209A (ja) * 2004-05-06 2005-11-17 ▲萬▼國電腦股▲ふん▼有限公司 シリコン記憶媒体制御方法およびシリコン記憶媒体
US7568010B2 (en) * 2005-11-16 2009-07-28 International Business Machines Corporation Self-updating email message

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005322209A (ja) * 2004-05-06 2005-11-17 ▲萬▼國電腦股▲ふん▼有限公司 シリコン記憶媒体制御方法およびシリコン記憶媒体
US7568010B2 (en) * 2005-11-16 2009-07-28 International Business Machines Corporation Self-updating email message

Similar Documents

Publication Publication Date Title
JP3606541B2 (ja) 複数ノードの非同期データ通信システム内で早期到達メッセージを処理する方法
KR100326864B1 (ko) 네트워크통신방법및네트워크시스템
US10104005B2 (en) Data buffering
US6385658B2 (en) Method and apparatus for synchronized message passing using shared resources
CN101937406B (zh) 一种VxWorks操作系统中实现驱动1394设备的方法和系统
US7472214B2 (en) Real-time embedded simple monitor method and computer product
JPS63234343A (ja) 通信媒体に結合された複数のステーションからなるシステムのステーションとそれらステーション間の通信方法
JPH06202883A (ja) プロセス間通信装置及び通信方法
US6009472A (en) Process for transferring data between nodes in a multinodal information system
JPH06309252A (ja) 相互接続インタフェース
JPH01142963A (ja) バスに接続されたバス装置及び該バス装置のためのデータ転送制御方法
EP0694850A2 (en) Method and apparatus for distributing control messages between interconnected processing elements
CN113535425A (zh) 一种数据发送方法、装置、电子设备及存储介质
JPH01142964A (ja) 記憶装置管理方法
CN112698959A (zh) 一种多核通信方法和装置
JPH076043A (ja) マルチスレッド・サーバ
JP3245500B2 (ja) マルチプログラミングにおける事象管理方式
JP2001043092A (ja) タスク間メッセージ通信方法
JP3713977B2 (ja) リアルタイム分散システム
JP5262418B2 (ja) タスクスケジューリング装置およびタスクスケジューリング方法
CN116204487A (zh) 远程数据访问方法及装置
JP4317348B2 (ja) 情報処理装置及び入出力方法並びにプログラム
US6940865B2 (en) System and method for interleaving frames with different priorities
JP2971119B2 (ja) 複数プロセッサシステムにおける高速データ転送方式
CN116662030A (zh) 一种安全停止服务的系统及方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040602