2009-04-10 7 views
2

スレッドの使用方法の特性をオペレーティングシステムが理解しているという利点はありますか?たとえば、集中的なCPU計算に使用されることを示すために新しいスレッドを作成するときにJavaに方法があった場合、I/Oがブロックされます。これが能力であればスレッドのスケジューリングは改善されないでしょうか?オペレーティングシステムがスレッドの使用方法の特性を理解する利点はありますか?

+0

オペレーティングシステムのスレッドスケジューラよりもアプリケーションが "影響力"を持つ能力は良い考えであるように感じます。おそらく問題は、この機能が存在するかどうかです。アプリケーションが悪用しようとするスレッドの優先順位以外の特性は何ですか? – McGovernTheory

答えて

3

スレッドがI/Oまたは計算であるという情報をOSが実際に期待していることはわかりません。実際にスレッドのスケジューリング方法(スレッド優先度とスレッドCPU親和性)との最大の違いは、APIによってすでに公開されていることです(NUMAの側面も主流のOS APIに反映され始めています)。

「コンピューティングスレッド」は、バックグラウンド処理を行い、GUIスレッドより重要でない場合(アプリケーションの応答性を維持する観点から)、おそらく最も有益なことは、スレッドを少し計算します。

3

これは、OSプロセスが行うことです。 OSには、プロセスのための洗練されたスケジューリングがあります。 OSはI/O使用とCPU使用を追跡し、優先順位を動的に調整し、CPUを大量に使用する処理がI/Oを妨げないようにします。

これらの機能を使用するには、適切なOSプロセスを使用します。

1

これも必要ですか? I/Oでスレッドをブロックすると、CPUを大量に消費するスレッドが実行されます。オペレーティングシステムは、スレッドをスケジュールする方法を決定します。 AFAIKには、Javaのヒントはありません。

1

はい、あなたが特にスレッドをたくさん開いているような建築家の場合は、特にそれを理解することが非常に重要です。

WintellectのJeff Richter overはライブラリPowerThreadingを持っています。 .NET上でアプリケーションを開発している場合は非常に便利ですが、Javaについて話しているので、OSスレッド、カーネルモデル、割り込みの仕組みを理解することがさらに重要です。

関連する問題