2006年12月11日 20:29 by BAK
今、仕事で組み込みLinuxについて調べています。
とっても基本的なことかもしれませんが、
みなさんならわかるかと思い、質問させてください(*^^*ゞ

RTOSのタスクがLinuxのスレッドにあたるということなのですが、
?同じプロセス内のスレッド同士で通信したいとき、
 タスク間通信であったメッセージ、セマフォ、イベント
 フラグなどと同等の機能はあるのでしょうか?
 あるならその具体的なシステムコールも知りたいです。

?同じプロセス内のスレッド同士なら共有メモリを
 どんどん使ってもいいという意見をよく見かけるのですが
 これは、組み込みLinuxでもいえることなのでしょうか?
 タスク間は基本的にあまり使わないということが
 あったような。。。

?プロセス間で、メッセージは使えるのでしょうか?

質問ばかりですみません<(_ _)>
けっこうネットで調べたのですが、なかなかスレッド間通信の情報が見つからなくて。。。。
こういうことがかいてある組み込みLinuxの本も
なかなか見つからなくて。。。
いい本、サイトあれば、もしよろしければ教えてください★
まだまだ初心者で知識不足なもので、助けていただいたら
嬉しいです(*^^*ゞ

レス

1: 口コミさん
pthread一般の話でいいのでしょうか...? ネタ的には組み込みに限った話ではないしLinuxに限った話でもありませんので、LinuxやUNIX一般のコミュなどで聞いてもいいかもです。
僕自身具体的に説明できる程精通していませんがキーワードだけでも...

1. まずpthreadでぐぐってみてください。APIを一通り眺めて見通しをつけてみるとよいと思います。
システムコールで言うと生成にclone(), 同期にfutex()等が使われているようですが、質問内容からするとそこまで深入りしなくてもよい階層の話かなと思います。僕も今ちょこっと調べただけです(^_^;

2. 共有メモリに関しては、スレッド間ではどんどん使っていいというかそもそも全部共有です。

3. "Linux プロセス間通信" で調べてみてください。ソケットやパイプなどを使う方法が見つかると思います。

2006-12-12 00:52

2: BAK
pthread な話はコメントが付いてるので良いとして,組み込み固有の話だと,

 ターゲット環境の glibc が pthread をサポートしているか

確認しましょう.
ちょっと古めの環境だと,pthread 無しでコンパイルされていたりすることがあります.

また,マシン語レベルでの atomic inc/dec 操作ができないために mutex が実装できない CPU もあります.
例えば MIPS 系の SoC の場合,ll/rc 命令を実装していない CPU がかなりあるようです.
この場合,該当部分の排他処理を別の手で書き換えてやらないと,マトモに実行できる pthread ライブラリがビルドできないかもしれません.

2006-12-12 01:52

3: 口コミさん
元の質問からは離れてしまいそうですが、以下のものを思い出しました:

PS2 Linux での安全なユーザレベル排他制御の実現:
http://lc.linux.or.jp/lc2001/papers/tas-ps2-paper.pdf

ちゃんとよんでませんが、こういうのってglibcとかに反映されてないのかな。

2006-12-12 03:38

4: 口コミさん
ご回答くださった皆様ありがとうございます<(_ _)>

そもそも会社で調べるきっかけとなったものが
組み込みLinuxは最近盛んであることと、社員でそこまで
精通している人が少ないことから、
アプリ部分をRTOSからLinuxへの移植方法を調べて
まとめてるようにとのことだったんですけれども、
前提知識が少ないこともあって、
なかなか難しいですね( >Д<;)

みなさんのお答え参考にもうちょっと調べてみます。
初心者ですみませんでした。

2006-12-12 22:01

5: 口コミさん
 もしもVxWorksからの移行ならば、VxEMUなんてのが勤務先ゲホゲホ……。

 VxWorksやTRONとかのメモリ保護という概念がない(TRONの最新版には付いたけど)OSにおけるタスクは、メモリ保護があるOSにおけるスレッドと同じモノと考えて大きくハズレはしません。

 後、現在主流のLinux Kernel 2.6系列では2.6.16辺り(だったかな?)からRealTime Extentionが標準kernelに組み込まれましたが、それ以前のものでは主導でRT-patchをあてないとpriority inheritance等が存在しません。(残念ながら、これをあててもまだRTOSのものとは機能的な開きが多いのが現状です。)
# Real Time性をさほど重視しないので有れば、気にしないで済むものですが。
 また、RT-patch適用後ではpriority levelが二種類存在するので、vanilla Linuxに存在するpriorityを間違って使用しないように気をつける必要があるでしょう。

 とりあえず、今まで使用していたRTOSと乗り換えようとしているLinuxのkernelやディストリビューション(特にglibcとGCCのバージョン、patch level)が何であるか、ターゲットのアーキテクチャが何であるかなど明記するともう少し話を進められると思います。
# あ、わたしは今Real Time Linuxのサポートから離れているので、込み入った相談には乗れません。……込み入った相談に乗ったりするともっとまずいか。^^;

2006-12-17 00:35

サイト内検索