解説記事:プロセス間通信

最終更新日:

Selenium Web Driver についての簡単な紹介。


メッセージキュー

プロセス間通信や同一プロセス内のスレッド間通信に使われる。VxWorksなどのRTOSでは、 主要なプロセス間通信機構として使っている。JavaではJava Message Serivceがメッセージキューに相当する。

メッセージキューは大抵の場合、格納できる1つのメッセージの大きさに上限がある。 上限がない場合は、メールボックスと呼ぶ。

メールボックス

μITRON4.0で使われている。メールボックスのキューイング数は無制限で、いくらでも送信することができる。 一方、データキューでは、最大キューイング数を指定する必要がある。

μITRONではsnd_mbxで受け取るデータ(T_MSG)の中にOS管理領域(メモリプールなどから割り当てる)が含まれており、 その領域を使って、送信されたデータをキューで管理している。受信されずに残っているデータが増えても、 OS自身のデータ領域が増えるわけではないので、メモリが許す限り、メールを送信することができる。

メールボックスでは、メッセージそのものが送受信されるわけではなく、メッセージの先頭アドレスだけが送受信される。

メールボックスに優先順位をつけることが可能。複数タスクがメッセージを待っている場合、 メールボックス生成時の属性の指定が、TA_TFIFOであれば、メッセージ待ちになった順番になる。 一方、TA_TPRIの場合は、タスクの優先度順にキューイングされる。

特定のタスクに対して、メッセージを送るような機能は備えていない。 そのため、受け取るタスクが使用するメールボックスを専用に作成することにより、実現が可能。 このとき、必ずしも1つに限定しなくても良い。 たとえば、1つのタスクが2つの専用メールボックスを持っても良い。

データキュー

共有メモリ

セマフォ

参考資料

【データキュー】
【共有メモリ】
【セマフォ】