No.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という名古屋大でやっている講座にて、評価方法についてもやって
いたりします。
ただ、設計手法によらず、感でやって、あとから処理が間に合わないというケース
もあるので、質問者の心配があたらずとも遠からずの場合もあるかもしれません。
No.3
- 回答日時:
1個のマイコンで、ぎりぎりまで仕事させようとしたら、ある程度スレッドが増えてしまうのは仕方ないのでは。
PCのソフトと違って、組み込み分野(とくにコンジューマ系とか)いまだにマイコンの本当に性能ぎりぎりまで使うとかいう設計することもあるみたいですし。
当然、完全にタイムクリティカルなスレッドと、まあ、そうでもないスレッドとか、いろいろあるんだと思いますが、例えばARMとかSHクラスのマイコンで、まあそれなりのRTOS載せてるなら、10スレッドくらいなら別に全然多くない、て感じもしますが。。
ちなみに、これはあくまで、私が知っているモノについての話で、全然、一般的な話ではないですよ。そもそも、組み込み分野に「一般的に」なんて概念はありません。
No.2
- 回答日時:
私は、ごく狭い世界で生きてきたので、「一般的」な感じはちょっとわかりませんが。
「スレッド」という事は、リアルタイムOSなりモニタなりが載っているのでしょうか。
もう、それだけで「大掛かりだなぁ」と思います。
「組み込み」と一言で言っても、私のようにPICやらPSoCやらでチマチマやっているのから、何メガもメモリを積んでゴリゴリ動くのまで様々です。
ですので、組み込みの「一般的」を語れる人は、あまり居ないのではないでしょうか。
本題ですが、まず、不安を感じておられるソフトは、どなたが設計なさったのでしょうか。
「一般的」には、ハードウェアのスペックに対して、設計者の方が大丈夫だろう、と判断した上でスレッドの数を決めているはずですが、貴方から見て不安を感じるほどの乱立状態でしたら、設計者の方にご指摘されるのが筋かと思います。
そうではなく、もしご自分で設計なさっていて、ご自分で不安を感じておられるのであれば、納得がいくまで設計を見直される事をお勧めしたいです。
余裕のない設計のまま突っ走ると、開発はうまくいっても納品後にバクハツ、という可能性もあります。
せっかく不安、というヒラメキを得られたのですから、無駄にしないで、是非とも再度検討を行ってほしいです。
この回答へのお礼
お礼日時:2009/01/25 00:34
回答ありがとうございます。
経験者の意見は大変参考になります。
設計は上の立場の会社ですね。もう後戻りは出来ないんですよねぇ。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Chrome(クローム) アンドロイドのスマホでグーグルアシスタントがごくたまに勝手に起動しますが、皆さんは勝手に起動する時は 2 2023/07/05 00:52
- C言語・C++・C# 参考にいろいろとc言語、c++言語プログラミングでレジストリーを操作したいのですが、無料配布のc++ 3 2022/12/22 01:49
- C言語・C++・C# [C言語] コメント文字列を無視して、数値データを読み込むプログラム部分について 5 2022/10/05 11:03
- その他(自然科学) 科学技術計算の仕事について 2 2023/02/04 18:09
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- IT・エンジニアリング webアプリの開発のみを行なっている企業というのは少ないのでしょうか。 3 2022/05/05 14:16
- Chrome(クローム) 最近のGoogle Chromeのデータ読み込みの遅延やエラーって頻発しますか? 2 2023/01/06 22:12
- 工学 身長187cmです。 組み込みエンジニアになるには電気電子工学科がいいとネットに書いてあるんですけど 4 2022/12/20 23:33
- 仕事術・業務効率化 仕事でのミスを減らすには どうすればいいでしょうか? 自動車の製造業で組み立ての仕事をしています。 3 2022/12/05 18:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++スレッドの正しい終了のさ...
-
マイクロソフトedge で5チャン...
-
別スレッドのデータを受信できない
-
マルチスレッドについて
-
WaitForSingleObjectの使い方に...
-
VC++ メインループでのイベン...
-
同一スレッドで、ロックをかけ...
-
C# スレッドから親ウィンドウへ...
-
待機関数(WaitForMultipleObjec...
-
.NetのBackgroundWorkerクラス...
-
スレッドの安全な終了のさせ方
-
Linuxでスレッド優先度って変え...
-
スレッドの監視方法
-
VB2005 シリアル通信のClose処理
-
sleep関数とは?
-
DirectX 11のConsntanBuffer
-
pthread_attr_tへの値の代入に...
-
別スレッドからのフォームのテ...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
WaitForSingleObjectの使い方に...
-
スレッドにて同一メモリの書き...
-
VC++スレッドの正しい終了のさ...
-
スレッドの監視方法について
-
Windows上で、シグナル(SIGTERM...
-
スレッドの終了の仕方
-
スレッドの安全な終了のさせ方
-
CWnd::OnTimerのスレッドの取得
-
MFC通信プログラムマルチスレッ...
-
Linuxでスレッド優先度って変え...
-
.netアプリへのSendMessageでフ...
-
VB2005 シリアル通信のClose処理
-
別スレッドからメインダイアロ...
-
マルチスレッドについて
-
スレッドの終了はどうやるんで...
-
マルチスレッドプログラミング...
-
別スレッドのデータを受信できない
-
特定のスレッドの破棄
-
msec単位のWait Timerが作れない!
-
C# スレッド終了の監視について
おすすめ情報