79

私が過去に読んだことから、Windows アプリケーションの優先度をプログラムで変更しないことをお勧めします。変更する場合は、決して「リアルタイム」に変更しないでください。

「リアルタイム」プロセス優先度設定は、「高」および「標準以上」と比較して何をしますか?Low から Realtime までのプロセス優先度リスト。

4

7 に答える 7

85

リアルタイム優先スレッドは、タイマー割り込みによってプリエンプトされることはなく、システム内の他のスレッドよりも高い優先度で実行されます。そのため、CPUにバインドされたリアルタイム優先スレッドは、マシンを完全に台無しにする可能性があります。

リアルタイム優先スレッドの作成には特権(SeIncreaseBasePriorityPrivilege)が必要であるため、管理ユーザーのみが作成できます。

Vista以降の場合、リアルタイムの優先順位で実行する必要があるアプリケーションの1つのオプションは、Multimedia Class Scheduler Service(MMCSS)を使用して、スレッドの優先順位を管理できるようにすることです。MMCSSは、アプリケーションがCPU時間を使いすぎないようにするため、マシンのタンクを心配する必要はありません。

于 2009-11-03T03:07:36.297 に答える
27

簡単に言えば、「リアルタイム」優先度クラスは「高」優先度クラスよりも高くなります。それ以上のものはないと思います。そうそうSeIncreaseBasePriorityPrivilege、スレッドを Real Time クラスに入れるには が必要です。

Windows は、さまざまな理由でスレッドの優先度を上げることがありますが、スレッドの優先度を別の優先度クラスに上げることはありません。また、リアルタイム優先度クラスのスレッドの優先度を上げることもありません。したがって、優先度の高いスレッドは、リアルタイム優先度クラスへの自動一時ブーストを取得しません。

Windows が優先順位を処理する方法に関する Russinovich の「Inside Windows」の章は、これがどのように機能するかを学ぶための優れたリソースです。

通常の Windows システムでリアルタイムの優先度を持つスレッドにはまったく問題がないことに注意してください。これらは、専用マシンで実行されている特別なプロセス用であるとは限りません。マルチメディア ドライバーやプロセスには、リアルタイムの優先度を持つスレッドが必要になる可能性があると思います。ただし、このようなスレッドは多くの CPU を必要としないはずです。通常のシステム イベントが処理されるように、ほとんどの時間ブロックしている必要があります。

于 2009-11-02T22:01:21.150 に答える
17

これは利用可能な最高の優先順位設定であり、通常、その特定のプログラムの実行専用のボックスでのみ使用されます。実際には十分に高いため、キーボードとマウスのスレッドが応答しなくなるほどの枯渇を引き起こす可能性があります。

だから基本的に、あなたが尋ねなければならないなら、それを使わないでください:)

于 2009-11-02T22:03:37.313 に答える
3

リアルタイムは、プロセスで使用できる最も優先度の高いクラスです。したがって、「High」とは 1 段階大きく、「Above Normal」とは 2 段階大きくなります。

同様に、リアルタイムもスレッドの優先度レベルです。

プロセス優先度クラスは、プロセス内のすべての有効なスレッド優先度を上げたり下げたりするため、「基本優先度」と見なされます。

したがって、プロセスには次のものがあります。

  1. 基本プロセス優先度クラス
  2. 個々のスレッドの優先度、基本優先度クラスのオフセット。

リアルタイムは、他の実行中のプロセスを絶対に先取りする必要があるアプリケーション用に予約されていると想定されているため、偶然の使用から保護するための特別なセキュリティ特権があります。これは、セキュリティ ポリシーによって定義されます。

NT6+ (Vista+) では、Vista Multimedia Class Scheduler を使用することが、リアルタイム OS ではない場合にリアルタイム操作を実現する適切な方法です。OSはリアルタイム操作用に設計されていないため、ほとんどの場合は機能しますが、完全ではありません.

マイクロソフトは、この優先順位を非常に危険だと考えています。非常に特殊な状況以外では、どのアプリケーションでもこれを使用すべきではなく、一時的な必要性に限定して使用するようにしてください。

于 2011-04-23T18:42:51.707 に答える
1

プログラムが通常よりも高い優先度を使用していることを Windows が学習すると、プロセスの優先度が制限されているように見えます。

優先順位を IDLE から REALTIME に設定しても、CPU 使用率は変わりません。

私のマルチプロセッサ AMD CPU で、最後の CPU のように CPU の 1 つをドロップすると、CPU 使用率が最大になり、最後の CPU がアイドル状態のままになることがわかりました。私の Quad AMD では、プロセッサーの速度が 75% に上がります。

タスク マネージャを使用 -> プロセスを選択 -> プロセスを右クリック -> 選択 -> アフィニティを設定 最後のプロセッサ以外のすべてをクリックします。ビデオの処理が増加すると、CPU 使用率は残りのプロセッサとフレーム カウントで MAX まで増加します。

于 2012-10-21T05:03:37.297 に答える
0

リアルタイムがそのプログラムに最優先クラスを与える前の他のすべての回答と同様に。そのプログラムが処理されるまで、何も処理されません。
私の pentium 4 マシンでは、ゲームのパフォーマンスが大幅に向上し、システムが完全に安定しているように見えるため、Minecraft をリアルタイムに設定しました。そのため、リアルタイムは見た目ほど悪くはありません。マルチコアでプログラムのアフィニティを特定のコアまたはコアに設定している場合に限ります(すべてではなく、リアルタイムの場合に他のすべてを実行できるようにするためだけです)。プログラムがハングアップする)、優先度をリアルタイムに設定します。

于 2016-12-28T18:33:41.610 に答える