WindowsとDebian / Red Hatは同じスレッド管理を使用していますか?


-4

WindowsとDebian / Red Hatが最近のバージョンでどのようなスレッド管理を使用しているか知る必要があります。

私は彼らが1対1のスレッド管理モデルを使用していたことを知っています。彼らは今でもこのモデルを使用していますか?または、彼らはそれを変えましたか?


完全に異なるモデル。
ラムハウンド14年

完全に異なるモデルは答えではありません。私は調査しており、出発点が必要です。曖昧な答えや意味は役に立ちません。
ブリーズ14年

Ramhoundは回答を投稿しませんでしたが、コメントを投稿しました。この質問が少し広すぎないかどうかはわかりません。特定の参照を探していますか?その場合、正確に知る必要があることを明確にしてください。
-slhck

あなたが正確に何を求めているのか分かりません。オペレーティングシステムには、実際にはスレッド管理モデルがありません。
デビッドシュワルツ14年

@Hossein-漠然とした答えは、広範で広範囲にわたる質問から得られます。WindowsとLinuxが2つの異なるスレッド管理モデルを使用していると言うのは受け入れられる対応です。
ラムハウンド14年

回答:


0

CProgramming Boradから

win32 APIは、1対1モデルと多対多モデルの両方をサポートしています(それぞれスレッドライブラリとファイバーライブラリで)。

Windows 7は、すべてのNTファミリと同様に、win32 APIをサポートしています。

Windows 7はカーネルスレッドをサポートしています。したがって、1対1モデルまたは多対多モデルでなければなりません。しかし、実際には両方のモデルをサポートするハイブリッドです。デフォルトでは、従来の1対1のスケジューリングを使用しますが、OSで使用可能なスケジューリングエンティティの数(プロセッサーとコアの数に基づく)に応じて、多対多のスケジューラーに強制できます。オペレーティングシステム自体が自動的にシフトすることはありません。明示的に指示する必要があります。

Windows 7の32ビットバージョンはM:Nスケジューリングをサポートしていないことに注意してください。64ビットバージョンのみ。

Linuxは、WindowsがファイバーAPIを介して行うのと同様に、RIBS2などのライブラリを介してM:Nもサポートできます。

以前は選択肢が1つしかなかったのに対し、スレッドスケジューリングを最適化するオプションがあるため、ハイブリッドは常に優れています。しかし、多対多のスケジューラを実際に活用することは、まったく別の問題です。非常に多くのスレッドの必要性と実際に何をしているのかに大きく依存します。ただし、非常に多数のスレッドを作成する必要がある高性能プロジェクトには関与したことがないため、正確な詳細はわかりません。ただし、スレッドのプログラミングは簡単になりますが、スレッドの管理は難しくなります。特に、テスト段階で多くの時間を費やして、より複雑なスケジューラーに合わせてスレッドを最適化しようとしています。

トムズハードウェア:

Windows 7より前は、Windowsは1対1のユーザースレッドとカーネルスレッドの関係を使用していました。もちろん、大まかな1対1のユーザースケジューラーをつなぐことは常に可能でした(これは、ほとんどすべてのOSでユーザーレベルのタイマー割り込みを使用して実行できます)が、システムコールがユーザースレッドのいずれかでブロックされると、ブロックされますカーネルスレッドに応じて、同じスケジューラ上の他のすべてのユーザースレッドをブロックします。当然、多対1モデルではSMPを利用できません。

Windows 7では、Microsoftはユーザーモードスケジューリングのサポートを導入しました。プログラムは、1つまたは複数のカーネルスレッドをスケジューラとして構成し(必要な論理プロセッサごとに1つ)、これらのUMSを引き出すことができるユーザーモードスレッドプールを作成できます。カーネルは、カーネルスレッドをブロックせずにUMSの実行を継続できる未処理のシステムコールのリストを保持しています。この構成は、多対一または多対多として使用できます。

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