7

職場で新しいプラットフォームの設計について話し合っていますが、上級管理職の 1 人が、現在のコード ベース (Linux では C) を実行する必要があるが、さまざまな入力に 1 秒以内に応答する必要があるため、リアルタイムである必要があると述べました。 . 私は次のように指摘しました。

  1. その点は、「リアルタイム」である必要があるという意味ではなく、より高速なクロックと割り込み処理の合理化が必要なだけです。
  2. 考慮すべき重要なポイントの 1 つは、使用されている OS です。彼らは組み込み Linux に固執したかったので、私は RTOS が必要だと指摘しました。Linux を使用すると、カーネル/ユーザー空間のメモリが分割されるため「リアルタイム」が妨げられるため、I/O はファイルとソケットを介して行われ、遅延が発生します。
  3. 本当に決定する必要があるのは、決定論的である必要があるかどうかです (たとえば、90% の時間で 200 ミリ秒未満で入力に応答する必要があります)。

ポイント 3 が当てはまる場合、それはリアルタイム システムである必要があり、ポイント 2 が最大の考慮事項です。

自信を持って答えられたのですが、後で考えていました... 他の人はどう思いますか?私はここで正しい軌道に乗っていますか、それとも何か不足していますか?

「リアルタイム」システムと「決定論的」なシステムの間に見落としている違いはありますか? また、RTC と RTOS 以外に、真のリアルタイム システムを実行するために必要な主要なものがありませんか?

素晴らしい回答をお待ちしております!

編集:

これまでのところ、いくつかの良い反応を得ています。私のシステムと要件について少し好奇心が強いようです。興味のある人のためにいくつかのメモを追加します。

  1. 私の会社は数万台のユニットを販売しているので、価格を殺したくありません
  2. 通常、メイン プロセッサ ボードと独立したディスプレイを販売しています。他の CAN デバイスのネットワークも接続されています。
  3. ボードは (現在) デバイスを実行し、基本的な XML ドキュメントをエンド ユーザーのディスプレイに送信する Web サーバーとしても機能します。

要件は、管理者がディスプレイを「迅速に」(<1 秒) 更新することを望んでいる場合です。ただし、IMO の真の制約は、CAN 経由で接続できるデバイスに由来します。これらのデバイスは、多くの場合、「200ms 未満で応答する必要がある」などの要件を持つモーター制御デバイスです。

4

5 に答える 5

10

次のものを区別する必要があります。

  • ハード リアルタイム: 違反してはならない (失敗としてカウントされる) 応答時間には絶対的な制限があります。たとえば、ロボット モーターや医療機器を制御していて、締め切りに間に合わないと破滅的な事態になる可能性がある場合などに適しています。
  • ソフト リアルタイム:ほとんどの場合(おそらく 99.99% 以上) 迅速に応答する必要がありますが、平均して応答が非常に高速であれば、時折制限時間に違反することは許容されます。たとえば、これはコンピューター ゲームでリアルタイム アニメーションを実行する場合に適しています。

ソフト リアルタイムは、適切なハードウェアがあり、ボトルネックの特定と最適化に十分な注意を払っている限り、ほとんどのシステムで容易に実現できます。いくつかのチューニングを行うことで、非決定論的な一時停止 (Java のガベージ コレクションなど) を持つシステムでも実現できます。

ハード リアルタイムには、専用の OS サポート (スケジューリングを保証するため) と決定論的アルゴリズム (スケジューリングが完了すると、タスクが期限内に完了することが保証されるため) が必要です。これを正しく行うのは難しく、ハードウェア/ソフトウェア スタック全体を慎重に設計する必要があります。

ほとんどのビジネス アプリはどちらも必要としないことに注意することが重要です。特に、1 秒未満の応答時間を目標とすることは、ほとんどの人が「リアルタイム」要件と考えるものとはかけ離れていると思います。そうは言っても、要件で応答時間が明示的に指定されている場合は、かなり緩い締め切りのソフト リアルタイムと見なすことができます。

于 2012-09-21T03:02:57.540 に答える
5

real-timeタグの定義から:

アクティビティの完了の適時性が単なるパフォーマンス メトリックではなく、機能要件および正確性の条件である場合、タスクはリアルタイムです。リアルタイム システムとは、一部の (すべてではないかもしれませんが) タスクがリアルタイム タスクであるシステムです。

つまり、システムの応答が遅すぎて締め切りに間に合わないと何か悪いことが起こるのであれば、システムはリアルタイムである必要があり、RTOS が必要になります。

リアルタイム システムは決定論的である必要はありません。応答時間が 50 ミリ秒から 150 ミリ秒の間でランダムに変化するが、応答時間が 150 ミリ秒を超えない場合、システムは非決定論的ですが、それでもリアルタイムです。

于 2012-09-21T03:02:26.290 に答える
2

たぶん、試してみるRTLinuxRTAI、実験するのに十分な時間があれば. これにより、非リアルタイム アプリケーションを Linux に残すことができますが、realtimeアプリケーションは RTOS 部分に移動されます。その場合、1 秒未満の応答時間を達成できます (可能性があります)。

利点は -

  • 大量のコードを再利用できます
  • リアルタイム タスクと非リアルタイム タスクを手動で分割し、必要に応じて 1 秒未満の応答を達成することができます。
  • ほとんどのコードは Linux にあるため、移行時間はそれほど長くはないと思います。

余談ですが、リアルタイム部分で実行する必要がある可能性のあるハードウェア ドライバーには注意してください。

RTLinux の次のアーキテクチャは、これがどのように可能になるかを理解するのに役立つ場合があります。

RT Linux システム

于 2012-09-21T16:15:58.713 に答える
1

RTOSで正しい方向に進んでいるようです。RTOSが異なれば、堅牢性や速度など、さまざまなものが優先されます。ハードRTOSとソフトRTOSのどちらが必要か、必要なものに基づいて、スケジューラをどのように駆動するかを理解する必要があります。1つ確かなことは、通常のOSとRTOSの使用には重大な違いがあるということです。

注:おそらく、最も真のリアルタイムシステムでは、ハードイベントベースの解決が必要になります。これにより、プロセスが期待どおりに実行されることを保証できます。

于 2012-09-21T03:15:17.303 に答える