- ベストアンサー
組込み系のプログラム
今仕事で組込み系の開発をしているのですが スレッド使い過ぎな設計なので不安です。 組込み系のプログラムって一般的にどのような感じでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
10以上あるから、使いすぎってことは無いです。 逆に5なら大丈夫で、50ならダメということもないです。 つまり数の問題でもないです。 WindowsOS(NT系)と対比して考えてみても、最低でも10ならいい勝負です。 WindowsOS(NT系)は、マイクロカーネルなので、OSそのものに NT Executiveというプロセスが動いていますよね。 組込み系となると、例えばμITRONであれば、OSというよりカーネルですよね。 アプリケーションを動かすため、システムとして動作させないといけない部分がでてくるわけです。 また、デバイスドライバーにしても、デバイス毎に1つ以上のタスクを作って処理させる のが一般的だと思います。 ですので、デバイスが多いとそれだけタスクは多くなります。 また、すでに回答されていることかでもありますが、例えばWindowsのアプリのように CPU利用率を高くするのがよろしくないというものとは反対で、 CPU利用率が高いほど、コストパフォーマンスの高い設計といけます。 CPUを遊ばせない程度の高負荷で、かつ、リアルタイムシステムに必要な レイテンシ以内で動くことが満たされていればいいのです。 逆ににCPUが遊んでいるのであれば、CPUをより低クロックのものを選ぶことで コストダウンや少電力化が可能になります。 スケジューラの処理方法も異なり、μITRONなどのRTOSは、優先度の高いタスクは 自分が、Wait状態になるまで、ほかのタスクに処理を譲ったりしません。 それだから、タスクが多くても、あくまで時間の空きがあったら動くタスク などを多く設定しても、設計上問題にならないこともあります。 例えば、ラウンドロビンスケジュールの場合は、最優先のスレッドについても 処理速度に影響をうける場合もありますが、μITRONなどのRTOSでは、最優先タスク は、影響をうけない。ただし、最下位優先度のタスクがまったくディスパッチされないか、 されても極まれすぎて、役立たない場合があります。 それは、上位タスクが時間内にどれだけの 処理をさせないといけないか、その処理時間の合計が足りているか足りていないか によります。 それがタスク設計のキーになると考えています。 最近の組込みシステムでのRTOSでは、そういったパフォーマンス評価のツールがあったり 評価方法についても、一部紹介されています。 具体的には、TOPPERS/JSPというフリーのμITRONがありますが、これについては付属ドキュメント にて、タイマーデバイスを用いた評価方法が書かれています。 実際にNEXCESSという名古屋大でやっている講座にて、評価方法についてもやって いたりします。 ただ、設計手法によらず、感でやって、あとから処理が間に合わないというケース もあるので、質問者の心配があたらずとも遠からずの場合もあるかもしれません。
その他の回答 (3)
- rabbit_cat
- ベストアンサー率40% (829/2062)
1個のマイコンで、ぎりぎりまで仕事させようとしたら、ある程度スレッドが増えてしまうのは仕方ないのでは。 PCのソフトと違って、組み込み分野(とくにコンジューマ系とか)いまだにマイコンの本当に性能ぎりぎりまで使うとかいう設計することもあるみたいですし。 当然、完全にタイムクリティカルなスレッドと、まあ、そうでもないスレッドとか、いろいろあるんだと思いますが、例えばARMとかSHクラスのマイコンで、まあそれなりのRTOS載せてるなら、10スレッドくらいなら別に全然多くない、て感じもしますが。。 ちなみに、これはあくまで、私が知っているモノについての話で、全然、一般的な話ではないですよ。そもそも、組み込み分野に「一般的に」なんて概念はありません。
- pyonmae
- ベストアンサー率64% (40/62)
私は、ごく狭い世界で生きてきたので、「一般的」な感じはちょっとわかりませんが。 「スレッド」という事は、リアルタイムOSなりモニタなりが載っているのでしょうか。 もう、それだけで「大掛かりだなぁ」と思います。 「組み込み」と一言で言っても、私のようにPICやらPSoCやらでチマチマやっているのから、何メガもメモリを積んでゴリゴリ動くのまで様々です。 ですので、組み込みの「一般的」を語れる人は、あまり居ないのではないでしょうか。 本題ですが、まず、不安を感じておられるソフトは、どなたが設計なさったのでしょうか。 「一般的」には、ハードウェアのスペックに対して、設計者の方が大丈夫だろう、と判断した上でスレッドの数を決めているはずですが、貴方から見て不安を感じるほどの乱立状態でしたら、設計者の方にご指摘されるのが筋かと思います。 そうではなく、もしご自分で設計なさっていて、ご自分で不安を感じておられるのであれば、納得がいくまで設計を見直される事をお勧めしたいです。 余裕のない設計のまま突っ走ると、開発はうまくいっても納品後にバクハツ、という可能性もあります。 せっかく不安、というヒラメキを得られたのですから、無駄にしないで、是非とも再度検討を行ってほしいです。
- R32C
- ベストアンサー率39% (115/290)
スレッド使いすぎって、具体的にどれぐらいですか?
補足
10以上はありますねー。リアルタイムOSを使えば問題ないと思っているのかも。。。
お礼
回答ありがとうございます。 経験者の意見は大変参考になります。 設計は上の立場の会社ですね。もう後戻りは出来ないんですよねぇ。。。