「ソフト」リアルタイムオペレーティングシステムが実際に提供する保証


17

「ハード」リアルタイムオペレーティングシステムとは何かを知っていると思います。これは、アプリケーションプログラマとの契約を提供するスケジューラを備えたオペレーティングシステムです。アプリケーションは、各リソース割り当て要求に期限を提供します。 場合は期限の要求がある実行可能な、スケジューラは、各リソースが締め切り前に要求しているアプリケーションに割り当てられることを保証します。この保証は、アプリケーションプログラマが特定のリクエストの最大レイテンシと最小スループットについて推論できるようにするのに十分です。

「ソフト」リアルタイムシステムについて私が見つけたすべての定義は、私には無意味に思えます。 ウィキペディアによると

結果の有用性は期限後に低下し、システムのサービス品質が低下します。

うーん。はい。その基準では、Windows 95はソフトリアルタイムシステムであり、3BSDもLinuxもそうでした。ウィキペディアは素晴らしい情報源ではありませんが、Googleの次のヒット数はそれほど良くありません。例えばhttp://users.ece.cmu.edu/~koopman/des_s99/real_time/は言います

ソフトリアルタイムシステムでは、まれにしか発生しないピーク負荷での動作の低下は許容されます。

それは契約ではありません、それは何も言うことのない派手な方法です。

実際のオペレーティングシステムによって提供される実際のソフトリアルタイムの保証/契約の例は何ですか?

私はフォームの答えを探しています:

(OS名)でプログラマーが(プログラマーが何をする必要があるか)を行うと、オペレーティングシステムは(システム保証を)保証します。

回答:


22

あなたはそれを正しく理解しており、ウィキペディアはできる限り有益です。ソフトリアルタイムは正式な特性評価ではなく、価値判断です。「ソフトリアルタイム」と言うもう1つの方法は、「リアルタイムであることを望みます」、またはおそらくより正確には「リアルタイムでなければなりませんが、それは難しすぎます」です。

保証の形で本当に言いたいのであれば、それは特定のパフォーマンスを保証するのではなく、ベストエフォートの保証です。

または、Erlang FAQ(Erlangは元々テレフォニーで使用するために設計されたプログラミング言語です)を引用するには:

ソフトリアルタイムとはどういう意味ですか?

Cynicsは「基本的には何もありません」と言います。

(…)多くのテレコムシステムの要件は(ハードリアルタイムよりも)厳密ではありません。たとえば、「データベースルックアップは97%のケースで20ミリ秒未満」という統計的保証が必要になる場合があります。Erlangなどのソフトリアルタイムシステムでは、そのような保証を行うことができます。

そして、これは有用な定義を提供します。ソフトリアルタイムとは、すべてのタスクの実行に費やされる合計時間を最適化するのではなく、個々のタスクに対して一定の時間以下で最適化される設計を示します。たとえば、ソフトリアルタイムシステムは、リクエストの99.9%を10ミリ秒で完了し、1秒あたり100リクエストを処理することを目指します。非リアルタイムは、1秒あたり200リクエストを処理することを目指しますが、 50ms以上。ハードリアルタイムでは、15ミリ秒ごとに1つのリクエストが保証されます。

ソフトリアルタイムは、締め切りに間に合わないことがサービスの低下を意味するが、パフォーマンスが重要ではないアプリケーションに使用されます。マルチメディアとテレフォニーは、典型的な使用例です。各オーディオまたはビデオフレームは、時間に合わせてレンダリングする必要があります。そうでない場合はスキップする必要があります。しかし、フレームをスキップすることは世界の終わりではありません。Erlangの設計者は、他の問題についても信頼性に関して同様の目標を掲げていました。電話交換機は非常にまれに電話を切る方が良いと考えましたが、すべてのコストで接続を維持しようとすると、致命的な障害が発生するリスクがあります。

対照的に、モーターの制御などでは、ソフトウェアが期限を逃さないことが必要です。これにはコストがかかります。通常、全体的なパフォーマンスは遅くなり、比較的単純な動作しか達成できません。スペクトルの反対側では、数値演算アプリケーションは通常、全体的なパフォーマンスのみを考慮します。重要なのは、各列の計算速度ではなく、1000x1000行列の乗算速度です。


@ E.DouglasJensenあなたの声明は大げさな怒りです。あなたの答えは、ウィキペディアの記事と根本的に異論はありません。
ジル 'SO-悪であるのをやめる'

はい私は同意する。私のコメントは、リアルタイムに関するいくつかのウィキペディアのページを網羅することを目的としており、そのコンテンツの多くは良くても十分に考慮されていません。
E.ダグラスジェンセン

私の最大の不満は、人々が、ハードリアルタイム(すべての期限を満たす)ソフトウェアが(たとえば)自動車のブレーキシステムに対して正式に検証される必要があることを考慮していないことです。 、タスクの少なくとも89%が20%遅滞している必要があります)推論し、正式に検証する必要があります。すべての軍事戦闘システムはソフトリアルタイムです。代わりに、人々はアドホックなずさんな思考を持ち、「ケセラセラ」と言います。
E.ダグラスジェンセン

「最初の革命は、物事の見方について考えを変え、見られなかった別の見方があるかもしれないことを見るときです。」--Gil・スコット・ヘロン、「革命ウィルは放映されていない」
E.ダグラスジェンセン

4

Linuxで-rt(リアルタイム)パッチセットを使用すると、スケジューラが提供され、空ではないように見える興味深い保証が提供されます。(保証を実際に使用する方法については明確ではありませんが。)

Linux-rt SCHED_FIFOスケジューリングポリシーは次のように機能します。ユーザーはすべてのプロセスに優先順位を割り当てます。(「リアルタイム」プロセスの優先度番号は0〜99であり、従来のUnix nice値-20〜19は優先度100〜139にマッピングされます(したがって、「0」が「最高」優先度、「139」が「最低" 優先。)

保証は、いつでもスケジューラがプロセッサマシンN上で最も優先度の高い実行可能なジョブをスケジュールすることNです。カーネル内部の優先順位の逆転の問題を回避するために多大な苦労が払われました。プロセスAが実行可能になりB、他の実行中のプロセスより高い優先度を持つとき、Aすぐに先取りしBます。

ただし、厳密な時間保証はありません。実際にプリエンプションの実行に費やされる時間は、理論的にはarbitrarily意的に長くなる可能性があります。また、優先度の低いジョブが多数の長いレイテンシのI / Oを開始する方法がいくつかあるようです。I / Oが完了すると、優先度の低いジョブの割り込みハンドラが優先度の高いジョブに割り込む可能性があります。

そのため、提供される制限付き保証は次のとおりです。最高の優先度を持つ単一のプロセスがある場合、実行可能な場合は常に、OSが現実的に提供できるすべてのプロセッサリソースを取得します。最高優先順位のプロセスが消費するプロセッサリソースの量に適切な上限がある場合、2番目に高い優先順位のプロセスが使用できるリソースの合理的に正確な推定値を計算できます。

Linuxリアルタイムスケジューラについて詳しく説明している記事は、http://www.linuxjournal.com/magazine/real-time-linux-kernel-schedulerです。


1
RTLinux FAQはここで有用な特性評価を提供すると思います(ハードまたはソフトの形容詞は使用しません) 。」
ジル「SO-悪であるのをやめる

4

「ソフトリアルタイム」を定義するには、「ハードリアルタイム」と比較するのが最も簡単です。

何気なく話すと、ほとんどの人は暗黙のうちに、情報やイベントを「リアルタイム」と見なす非公式のメンタルモデルを持っています。

•認識された通貨に関連する可能性のある遅延(レイテンシー)が明らかになる場合、またはその程度まで

•すなわち、情報またはイベントが満足のいく満足のいく価値を持っている時間枠内。

「ハードリアルタイム」にはさまざまなアドホックな定義がありますが、そのメンタルモデルでは、ハードリアルタイムは「if」という用語で表されます。具体的には、リアルタイムアクション(タスクなど)に完了期限があると仮定すると、すべてのタスクが完了するイベントの満足できる満足できる値は、すべてのタスクが期限を満たす特別な場合に限定されます。

ハードリアルタイムシステムは、アプリケーションとシステムおよび環境に関するすべてが静的であり、アプリオリに知られているという非常に強い仮定を立てます。たとえば、どのタスク、定期的であるか、到着時間、期間、期限、獲得したリソースの競合や全体的なシステムの時間的進化はありません。航空機の飛行制御システムまたは自動車のブレーキシステムおよびその他の多くの場合、これらの仮定は通常満たされ、すべての期限が満たされます。

このメンタルモデルは、ハードリアルタイムとソフトリアルタイムの両方を網羅するのに十分な程度に意図的かつ非常に有用であり、ソフトは「その程度まで」というフレーズで対応されています。たとえば、次の場合、タスク完了イベントの値は準最適ですが許容できると仮定します

  • 締め切りに間に合わないタスクは10%以下
  • または20%を超えるタスクはありません
  • または、すべてのタスクの平均遅延が15%を超えない
  • または、すべてのタスクの最大遅延が10%未満

これらはすべて、非常に多くのアプリケーションでのソフトリアルタイムの一般的な例です。

放課後に子供を迎えに行くシングルタスクアプリケーションを検討してください。おそらく実際の締め切りはありませんが、代わりにそのイベントがいつ発生するかに基づいて、あなたとあなたの子供にとって何らかの価値があります。早すぎるとリソース(時間など)が無駄になり、遅すぎると、子供が一人で放置され、潜在的に害を及ぼす(または少なくとも不便になる)ため、マイナスの価値があります。

静的なハードリアルタイムの特殊なケースとは異なり、ソフトリアルタイムは、タスクとシステムに関する最小限の必要なアプリケーション固有の仮定のみを行い、不確実性が予想されます。子供を迎えに行くには、学校まで車で行く必要があり、その時間は天候や交通状況などに応じて動的に変化します。システムを過剰にプロビジョニングしたくなるかもしれません。最悪の場合は運転時間)ですが、これもリソースを浪費しています(あなたの時間、家族の車を占有し、他の家族による使用を拒否する可能性があります)。

この例は、リソースの浪費という点ではコストがかかるようには見えませんが、他の例を検討してください。すべての軍事戦闘システムはソフトリアルタイムです。たとえば、目標の機動として更新されたミサイルを使用して敵の地上車両に航空機攻撃を実行することを検討してください。コース更新タスクを完了するための最大の満足度は、ターゲットに対する直接的な破壊的な攻撃によって達成されます。しかし、この結果を確実にするためにリソースを過剰に提供しようとする試みは、通常非常に高価であり、不可能な場合もあります。この場合、ミサイルがターゲットに接近して無効化できるほど十分に満足しているとは限りません。

明らかに、戦闘シナリオには、リソース管理で対処しなければならない非常に多くの可能性のある動的な不確実性があります。ソフトリアルタイムシステムは、産業オートメーションなどの多くの民間システムでも非常に一般的ですが、明らかに軍事システムは、満足できる満足のいく値を達成するための最も危険で緊急のシステムです。

リアルタイムシステムの要は「予測可能性」です。ハードリアルタイムの場合は、予測可能性の1つの特別な場合にのみ関心があります。つまり、タスクがすべて期限を満たし、そのイベントによって最大の価値が達成されるということです。その特別なケースは「決定論的」という名前です。

さまざまな予測可能性があります。ほとんどのリアルタイムシステム(つまり、ソフトシステム)には、たとえばタスクの完了時間、したがってそれらのイベントから得られる値の非決定的な予測可能性があります。一般的に、予測可能性、したがって価値は、必要に応じて決定論的エンドポイントに近づけることができますが、価格は物理的に不可能または過度に高価な場合があります(戦闘中またはおそらく子供を学校から連れて行く場合でも)。

ソフトリアルタイムでは、アプリケーション固有の確率モデル(一般的な頻度モデルではなく)の選択が必要であるため、イベントレイテンシと結果値について推論するための予測可能性モデルが必要です。

上記の許容可能な値を提供するイベントのリストに戻って、次のような非決定的なケースを追加できます。

  • どのタスクも期限を5%以上見逃さない確率は0.87を超えています。

ミサイル防衛アプリケーションでは、戦闘では攻撃が常に防衛よりも有利であるという事実を考えると、これらの2つのリアルタイムコンピューティングシナリオのどちらを好むでしょうか。

  • すべての敵対的ミサイルの完全な破壊は非常にありそうにないか不可能であるため、防御リソースを割り当てて、最も脅威となる(例:ターゲットに基づいて)敵対的ミサイルが正常に傍受される確率を最大化します(傍受カウントが近いため)敵対ミサイルをコース外に移動できます);

  • これは静的ではなく動的であり、従来のリアルタイムの概念や手法は適用されないため、これはリアルタイムコンピューティングの問題ではないことを訴えます。したがって、ソフトリアルタイムのR&Dには興味がありません。

リアルタイムコンピューティングコミュニティにおけるソフトリアルタイムに関するさまざまな誤解にもかかわらず(ただし、他の非コンピューティング分野ではそうではありませんが)、ソフトリアルタイムは非常に一般的かつ強力であり、ハードリアルタイムと比較して非常に複雑になる可能性があります。

OPの質問に直接回答するには:

  • ハードリアルタイムシステムは、確定的な保証を提供できます。最も一般的には、すべてのタスクが期限を満たし、割り込みまたはシステムコールの応答時間が常にx未満になるなどです。非常に強い仮定が行われ、重要なことはすべて静的であり、事前に知られています(一般に、ハードリアルタイムシステムに対するこのような保証は、かなり単純な場合を除き、未解決の研究問題です)

  • ソフトリアルタイムシステムは決定論的な保証を行いません。アプリケーション固有の基準に従って、現在の動的な状況下で実行可能な、可能な限り分析的に指定された確率的適時性と適時性の予測可能性を提供することを目的としています。明らかにハードリアルタイムは、ソフトリアルタイムの単純で特殊なケースです。明らかに、ソフトリアルタイムの分析的非決定性保証は提供するのが非常に複雑な場合がありますが、ほとんどの場合は静的ではなく動的であるため、最も一般的なリアルタイムの場合(戦闘などの最も危険で安全性が重要なものを含む)に必須です。

私のWebサイトreal-time.orgで、リアルタイム、ハードリアルタイム、ソフトリアルタイム、予測可能性、決定論、および関連トピックの詳細な議論を行っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.