5

これを読んで、具体的には Microsoft のドキュメントを読むと、PHYSICAL プロセッサの数を返す必要があり、GetLogicalProcessorInformation を使用して、所有している LOGICAL プロセッサの数を把握する必要があるようです。

SYSTEM_INFO 構造体で見つけた ドキュメントは次のとおりですフィルタ) http://msdn.microsoft.com/en-us/library/ms683194.aspx

さらに調べてみると、このトピックに関して私が見つけた議論のほとんどで、開発者は GetSystemInfo (および SYSTEM_INFO 構造体) が LOGICAL プロセッサの数を報告すると言っています。

もう一度検索すると、MS がこれ (およびホット フィックス) に関する情報を公開していることがわかりました (スパム フィルターを通過するためにスペースを追加): http://support. microsoft.com/kb/936235

それを読むと、Xp のサービス パック 3 より前のように聞こえますが、GetSystemInfo は SYSTEM_INFO 構造体の LOGICAL プロセッサの数を報告します。また、Windows Vista および Windows 7 では、GetSystemInfo が PHYSICAL プロセッサの数を報告する必要があることもわかりました (Windows XP pre-service Pack 3 とは異なります)。

それが実際に何をするか知っている人はいますか?GetSystemInfo は、実行している OS に応じて、(同じコンピューター上の) 物理プロセッサの数を実際に異なる方法で報告しますか?

4

1 に答える 1

4

それを読むと、Xp、サービス パック 3 より前のように聞こえますが、GetSystemInfo は SYSTEM_INFO 構造体の LOGICAL プロセッサの数を報告します。また、Windows Vista および Windows 7 では、GetSystemInfo が PHYSICAL プロセッサの数を報告する必要があることもわかりました (Windows XP pre-service Pack 3 とは異なります)。

それは正しいです。Windows XP SP2 より前) では、論理プロセッサと物理プロセッサが区別されません。(やはり、Windows XP のリリース時には論理プロセッサは存在しませんでした)そのため、関数は OS が「物理プロセッサ」と見なすものを返していますが、SP2 以前と違いはありません。

私は互換性を維持していると信じていますが、XP SP2+ はその特定の機能について論理プロセッサを報告し続けています。「私は XP を使用していますか?」と尋ねる方がはるかに迅速かつ簡単です。「私は XP SP3 を使用していますか?」と尋ねるよりも。

SP2 と SP3 の違いはなぜですか? SP2 では物理プロセッサと論理プロセッサの違いに対処していましたが、その変更はプラットフォーム SKU の課金方法にのみ影響を与えました。基本的に、XP システムでは最大 32 個の論理プロセッサを使用できますが、SP2 以降では最大で 2 個の物理プロセッサしか使用できません。SP2 より前は、2 つの論理プロセッサに制限されていました。ただし、SP3 がリリースされるまで、OS は API でこの機能を公開しませんでした。

簡単に言えば、SP3より前の論理プロセッサを取得したい場合は、物理プロセッサを取得するだけです-OSは違いを認識しません。SP3 を投稿して、 に電話してGetLogicalProcessorInformationください。物理プロセッサを取得したい場合は、SP3より前に必要なものは不可能です(編集:少なくともwin32 APIでは)。もちろん、SP3 を投稿すると、呼び出すことができますGetLogicalProcessorInformation

于 2010-04-02T13:02:04.213 に答える