2010-04-02 15 views
5

Leggendo questo documento, e in particolare leggendo i documenti Microsoft, sembra che dovrebbe restituire il numero di processori PHYSICAL e che dovresti usare GetLogicalProcessorInformation per capire quanti processori LOGICAL hai.GetSystemInfo (su Windows) restituisce sempre il numero di processori logici?

Ecco il documento che ho trovato sulla struttura SYSTEM_INFO: http://msdn.microsoft.com/en-us/library/ms724958(v=VS.85).aspx Ed ecco il doc su GetLogicalProcessorInformation: (spazi aggiunti per ottenere attraverso il filtro antispam) http:// msdn.microsoft.com/ en-us/ library/ ms683194.aspx

leggere su ulteriormente, però, nella maggior parte delle discussioni Ho trovato su questo argomento, gli sviluppatori dicono che GetSystemInfo (e la struttura SYSTEM_INFO) riportano il numero di processori LOGICAL.

Quando cerco di nuovo, trovo che MS ha rilasciato alcune informazioni su questo (e un hot fix), qui (spazi aggiunti per ottenere attraverso filtro antispam): http:// support. microsoft.com/ kb/936235

lettura che, suona come il Xp, pre-service Pack 3, GetSystemInfo riporta il numero di processori LOGICAL nella struttura SYSTEM_INFO. Mi sembra inoltre che su Windows Vista e Windows 7, GetSystemInfo debba riportare il numero di processori PHYSICAL (diversi dal pacchetto 3 pre-service di Windows XP).

Qualcuno sa cosa fa effettivamente? GetSystemInfo segnala realmente il numero di processori fisici (sullo stesso computer) in modo diverso, a seconda del sistema operativo su cui è in esecuzione?

+1

Ottenere attraverso il filtro antispam? Da quando SO ha un filtro antispam? – jalf

risposta

4

Leggendo che suona come su Xp, pre-service Pack 3, GetSystemInfo riporta il numero di processori LOGICAL nella struttura SYSTEM_INFO. Mi sembra inoltre che su Windows Vista e Windows 7, GetSystemInfo debba riportare il numero di processori PHYSICAL (diversi dal pacchetto 3 pre-service di Windows XP).

Che è corretto. Windows XP pre SP2) non distingue tra processori logici e fisici. (Dopo tutto, i processori logici non esistevano quando è stato rilasciato Windows XP) Pertanto, mentre la funzione restituisce ciò che il sistema operativo pensa siano "processori fisici", non vi è alcuna differenza pre SP2.

Credo che per mantenere la compatibilità, XP SP2 + continua a segnalare processori logici per quella particolare funzione, perché è quello che le applicazioni si aspettano che faccia per le macchine XP. È molto più facile e veloce chiedere "Sono su XP?" piuttosto che chiedere "Sono su XP SP3?".

Perché la differenza tra SP2 e SP3? Nonostante abbia a che fare con la differenza tra processori fisici e logici in SP2, tale modifica ha influito solo sul modo in cui gli SKU della piattaforma vengono fatturati. Fondamentalmente, puoi avere fino a 32 processori logici in un sistema XP, ma solo 2 processori fisici al massimo post SP2. Prima di SP2, eri limitato a 2 processori logici. Tuttavia, il sistema operativo non ha esposto questa funzionalità in un'API fino al rilascio di SP3.

Per farla breve, se si desidera ottenere processori logici, pre SP3, basta ottenere processori fisici - il sistema operativo non conosce alcuna differenza. Posta SP3, chiamare GetLogicalProcessorInformation. Se si desidera ottenere processori fisici, pre SP3 quello che si desidera non è possibile (MODIFICA: Almeno con win32 apis). Posta SP3 ovviamente puoi chiamare GetLogicalProcessorInformation.

Problemi correlati