「Windowsはリアルタイムオペレーティングシステムではありません」とはどういう意味ですか?


19

LatencyMonと呼ばれるアプリケーションに出会いましたが、これは明らかにレイテンシー監視を行います。

プロセッサにかける負荷が大きくなるほど、システムの応答性が低下するか、潜在性が高まることを常に理解しています。ただし、LatencyMonページの2番目のセクションでは、最初の文に「Windowsはリアルタイムオペレーティングシステムではありません」(RTOS)と書かれています。それは私に考えさせられました。つまり、これはLinux、Unix、Mac OS Xなどの他のオペレーティングシステムとは違うのでしょうか?

「リアルタイム」オペレーティングシステムはありますか?それとも、製品を購入させるための単なるマーケティングスキームですか?

編集:

また、RTOSの例はありますか?


4
たとえば、QNXはリアルタイムです。
new123456

回答:


21

ウィキペディアには、実際、ここに驚くべき情報が豊富にあります。

リアルタイムオペレーティングシステム(RTOS)は、リアルタイムのアプリケーション要求に対応することを目的としたオペレーティングシステム(OS)です。

RTOSの重要な特徴は、アプリケーションのタスクを受け入れて完了するのにかかる時間に関する一貫性のレベルです。変動はジッターです。ハードリアルタイムオペレーティングシステムは、ソフトリアルタイムオペレーティングシステムよりもジッタが少ないです。主な設計目標は高スループットではなく、ソフトまたはハードパフォーマンスカテゴリの保証です。通常または一般に期限を守ることができるRTOSはソフトリアルタイムOSですが、確定的に期限を満たすことができる場合、ハードリアルタイムOSです。

RTOSには、スケジューリングのための高度なアルゴリズムがあります。スケジューラの柔軟性により、プロセスの優先順位をより広く、コンピューターシステムで調整できますが、リアルタイムOSはよ​​り頻繁に狭い範囲のアプリケーションセット専用になります。リアルタイムOSの重要な要素は、最小の割り込みレイテンシと最小のスレッド切り替えレイテンシです。リアルタイムOSは、一定時間内に実行できる作業量よりも、どれだけ迅速に、または予測可能に応答できるかを重視しています。

これは、多くのワークロードでは効率が悪いため、ごく少数のオペレーティングシステムが実際に行うことです。現在、主要なコンシューマオペレーティングシステムはどれもリアルタイムではありません(または私の知る限りでは)。残念ながら、それは、非リアルタイム環境の物事が時々他の物事を待って座っている必要があることを意味します。これは、一般的に、適切な時間内に何かが収まらない場合にのみ問題になります。

現在、最もよく知られ、最も広く展開されているリアルタイムオペレーティングシステムは次のとおりです。

LynxOS
OSE
QNX
RTLinux
VxWorks
Windows CE

包括的なリストについては、リアルタイムオペレーティングシステムリストを参照してください。


6
リアルタイムOSは通常、非常に厳密な時間枠で決定/計算などを完了する必要がある非常に正確な制御システムなど、非常に専用の役割で使用されます。
ラマーB

RTOSの例はありますか?この点に関して質問を更新します。
チャドハリソン


@ ta.speot.isが言ったこと-すでにリンクされている記事にはいくつかあります。ただし、いくつか編集します。
新井

私はWikiページの一番下にはいませんでした...申し訳ありませんが試合について:/
チャドハリソン

19

リアルタイムオペレーティングシステムは、多くの場合、組み込みシステムに使用されます。組み込みシステムでは、ガイダンスやシステムモニタリングなどを担当する場合があります。リアルタイムシステムについて覚えておくべき重要な点(および非リアルタイムシステムとの違い)は、リアルタイムシステムでは、回答が遅れると間違っているということです。 これがどのように機能するかは、Excelで一連の数値を加算すること(操作が遅れても実質的な影響がない場合)と車にブレーキをかける(遅れが致命的な場合がある)ことを考えると簡単にわかります。


10

基本的に、RTOSは特定の(通常は低い)時間枠でIRQ(割り込み要求)を処理できることを保証できます。標準オペレーティングシステムにはこのような保証はありません。

最新のシステムでは、ほとんどのデバイスがIRQを生成できます。これにより、CPUは実行中の処理を停止(つまり、中断)し、割り込みサービスプログラムを実行します。このサービスプログラムは、デバイスが必要とするものをすべて実行する、つまり、デバイスからRAMにデータを取得し、デバイスに次に何をするかなどを指示するという考え方です。

x86では、CPUにIRQラインが1つしかないため、割り込みを受信すると、CPUが割り込みソースを確認して再度有効にするまで、追加の割り込みは自動的に無効になります(NMI、RESET、およびSMIを除く)。そのため、標準i386 / amd64 Windowsでの優れたデバイスドライバーは、この状態で最小限の処理を行い、割り込みを再度有効にして、後で割り込みの完全な処理を延期するのに十分なだけです(システムは技術的にCPUごとに1つの割り込みしか処理できないため)一度にコア)。よくわかりませんが、Linuxでも同じことができると思います。それにも関わらず、割り込みが処理される時間について確固たる保証はありません。

ディスク、キーボード、NICなどのほとんどのPCデバイスでは、IRQの処理にわずかな遅延がある場合、パフォーマンスの低下以外に何も悪いことは起こりません。これは、デバイスが何もバッファリングせず、PCがデータの着信ストリームに遅れずについていく必要があるオーディオやビデオ入力などのデバイスにとっては、より大きな問題になる可能性があります。


「x86にはIRQが1行しかない」という意味を説明できますか?前回80186コンピューターをワイヤーラップした(確かに数十年前)ので、8259 PICには8チャンネルがあり、当時の名目PCには2つ目がカスケード接続され、合計15チャンネルが含まれていたことが思い出せますNMI?
グレンスレイデン

x86にはIRQ行が1つしかないため、PICが必要です。しかし、x86割り込みが無効になっている場合、PICはCPUがそれらを再度有効にするまでしか待機できません。68000などのIIRCの他のCPUには3つの割り込みピンがあり、CPU自体にコード化された優先度レベル0〜7が期待されていました。実際に考えてみると、68000はIRQを受信したときにすべての割り込みを無効にする可能性があります-68000をプログラムしたことはありません。
LawrenceC

ああ、今は覚えています。また、IIRCは、8259チップデザインの「優先度」の側面(ネストされたIRQ処理を許可することにより)により、OSが割り込みを無効にすることをできる限り少なくするか、まったく無効にしないように促されましたが、PC割り込みラインは無計画に割り当てられ、アプローチ?いずれにせよ、CLI ... STIでかなりの量のコードを呼び出すことは、決して意図ではありませんでした。
グレンスレイデン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.