it-swarm-eu.dev

Perché Windows mostra solo circa 3,5 GB dei miei 4 GB di RAM?

Recentemente ho aggiornato il mio computer RAM a 4 GB. L'installazione di Windows a 32 bit mostra solo 3574 MB di memoria. Come posso fare in modo che Windows utilizzi l'intera quantità di RAM?

90
ala

Non puoi:

Vedi Amico, dov'è il mio 4 gigabyte di RAM?

se si desidera adattare memoria e dispositivi in ​​un intervallo di indirizzi a 32 bit: non tutti i 4 GB di spazio indirizzi disponibili possono essere trasferiti in memoria.
Quindi cosa succede realmente se esci e acquisti 4 GB di memoria per il tuo PC?
C'è un buco nella mappa della memoria per l'IO. (Ora è solo il 25% dello spazio di indirizzamento totale, ma è ancora un grosso buco.) Quindi i 3GB in meno della tua memoria saranno disponibili, ma c'è un problema con quest'ultimo 1GB.

L'unica soluzione pratica è installare un sistema operativo a 64 bit. In Windows Vista e versioni successive, le chiavi di licenza a 32 e 64 bit sono intercambiabili. Se è possibile ottenere il supporto di installazione di Windows per la versione a 64 bit del sistema operativo, è possibile reinstallare utilizzando la chiave di licenza originale.

70
VonC

Innanzitutto, Windows XP (32 bit) supporta solo 4 GB. Questo non si applica solo a Windows XP. Invece, si applica a Windows a 32 bit per desktop - sistemi Linux a 32 bit con PAE e molte edizioni di Windows Server a 32 bit supportano oltre 4 GB per articolo collegato. Non vedrai mai più di 4 GB se utilizzi un Windows XP a 32 bit. Tuttavia, ho trovato un motivo in più per cui il tuo sistema mostra meno ram disponibili di quello che è effettivamente installato.

Da Il problema 3GB-not-4GB RAM (blog Microsoft MSDN):

A causa di una decisione architettonica fatta molto tempo fa, se sono installati 4 GB di RAM fisici, Windows è in grado di segnalare solo una parte dei 4 GB fisici di RAM (variano da ~ 2.75 GB a 3.5 GB a seconda sui dispositivi installati, chipset e BIOS della scheda madre).

Questo comportamento è dovuto a "prenotazioni mappate in memoria IO". Queste prenotazioni si sovrappongono allo spazio degli indirizzi fisici e nascondono quegli indirizzi fisici in modo che non possano essere utilizzati per la memoria di lavoro. Questo è indipendente dal sistema operativo in esecuzione sulla macchina.

Pezzi significativi di spazio indirizzo inferiore a 4 GB (l'indirizzo più alto accessibile tramite 32 bit) vengono riservati all'hardware del sistema:

  • BIOS - incluso ACPI e supporto video legacy
  • Bus PCI inclusi ponti ecc.
  • Il supporto PCI Express riserva almeno 256 MB, fino a 768 MB in base alla memoria installata della scheda grafica

Ciò significa che un sistema tipico potrebbe vedere tra ~ 256 MB e 1 GB di spazio indirizzo inferiore a 4 GB, riservati per l'utilizzo hardware a cui il sistema operativo non può accedere. Le specifiche del chipset Intel sono abbastanza utili a spiegare quali intervalli di indirizzi vengono riservati per impostazione predefinita e in alcuni casi si ricorda che 1.5 GB è sempre riservato e quindi inaccessibile a Windows.

Ci sono ulteriori informazioni se si controlla la fonte. Tuttavia, potresti essere in grado di sfruttare gli 8 GB completi installati se hai seguito queste istruzioni .

Parlando dall'esperienza personale, questo non è un nuovo problema. Mi sono imbattuto in questo stesso problema alcuni anni fa quando ho creato un sistema Windows Vista da 32 GB a 32 bit quando Vista è stato rilasciato per la prima volta. C'erano innumerevoli post sul forum online relativi a questo stesso argomento.

Leggi anche Microsoft KB 929605 - La memoria di sistema riportata nella finestra di dialogo Informazioni di sistema in Windows Vista è inferiore a quella prevista se sono installati 4 GB di RAM .

8
SgtOJ

La vecchia scheda madre supportava solo 4 GB di RAM fisica, quelli moderni supportano molto di più. La CPU Intel P4 potrebbe sempre indirizzare più di 4 GB (utilizzando qualcosa chiamato Physical Address Extension, o PAE)

Microstoft ha preso una "decisione di marketing" per non supportare più di 4 GB di spazio di indirizzamento fisico nelle versioni "client" di tutte le versioni a 32 bit dei suoi sistemi operativi - che include tutto da w2k a 32 bit di Windows 8 (se si visita MS KB le pagine si noterà che le versioni a 32 bit del server possono supportare molto di più - fino a 128 GB credo con l'Enterprise Edition a 32 bit) - che è il motivo per cui i "veri" sistemi operativi a 32 bit (Linux ecc.) esattamente sullo stesso hardware possono sempre accedere a TUTTI la RAM fisica.

(nota a margine - gli utenti di Win7 a 32 bit sono così stanchi di questo limite "stupido" che hanno "hackerato" il Kernal per consentire gli accessi all'intero fisico RAM .. inutile dire che questo rompe la tua Licenza ed è in realtà illegale negli Stati Uniti (DCMA)

Windows XP parte "riserva" a 32 bit dello spazio di indirizzi lo 4Gb per l'utilizzo del driver. Non vi è alcun motivo per cui non è possibile "indirizzare" fisico RAM oltre il 4Gb (usando PAE), anche se molti OLD DRIVER in giro al momento di Windows XP Pro non sono riusciti a farlo e si otterrebbe un ' Errore di BSOD (i driver moderni usano PAE correttamente e IN TEORIA non c'è motivo per cui abbiano bisogno di più di circa 32Mb di pagine di spazio "lo" (come una "finestra") in totale anche per supportare una scheda grafica da 2Gb (il 2gb sarà nello spazio "ciao", vale a dire sopra il segno di 4 Gb)

In XP SP2, MS ha quasi triplicato la quantità di spazio degli indirizzi 'riservata' per i driver nel tentativo di eliminare i BSOD ed è sempre stato così (MS non vuole i driver di debug == vogliono vendi invece il sistema operativo a 64 bit). L'hardware ACTUAL ha quasi zero effetti su questo spazio 'riservato'.

COSÌ, se hai 4Gb o più di RAM fisica, la maggior parte di XP Pro sp2 + vedrà circa 3,25 Gb .. il resto PU CAN essere raggiunto usando vari differenti RAM Disk Driver (non la MS di Ovviamente) = vai a cercare qualcosa che usi 'Spazio Indirizzo invisibile' o 'spazio 4gb alto' su XP Pro) .. utilizzando il 'mancante' .75Gb come parte della tua 'memoria virtuale' può velocizzare il tuo sistema ...

Si noti che lo switch/3G può consentire alle applicazioni a 32 bit di accedere a 3Gb su un sistema operativo a 32 bit (se hanno il flag LargeAddressAware impostato nell'intestazione .exe - nel qual caso accedono fino a 4 Gb su un sistema operativo a 64 bit) ma su XP è necessario specificare/USERVA per impedire che il sistema operativo venga "spremuto" di RAM :-)

3
steve b

Se si utilizza un 32 bit Windows XP, non è possibile. Dato che non c'è abbastanza spazio per gli indirizzi disponibile per utilizzare la RAM extra

La soluzione migliore sarebbe l'aggiornamento a una versione a 64 bit di Windows in quanto supporta 4+ GB di RAM.

3
Shaharyar

Come hanno detto gli altri, non è possibile.

Spiegazione:

Ogni pezzo di memoria ha un indirizzo. Il sistema operativo specifica la lunghezza dell'indirizzo. Per i sistemi operativi precedenti la lunghezza dell'indirizzo è di 32 bit, che consente solo indirizzi 2 ^ 32 (4 294 967 296). Ora, guardando quel numero, potrebbe sembrare che il tuo sistema operativo dovrebbe supportare 4 GB, ma tutto l'altro hardware (in particolare la ram del video nella tua scheda video) che ha memoria interna viene mappato anche in quello spazio degli indirizzi.

È come se stessimo cercando di distribuire 1.200.000 numeri telefonici a sei cifre.

3
drby

Se si desidera utilizzare il 4 GB completo, l'unica opzione è l'aggiornamento a un sistema operativo a 64 bit:

  • Windox XP 64
  • Windows Vista 64
  • Linux
  • Max OS/X (ok, potresti aver bisogno di un nuovo PC anche per quello)

Il normale Windows XP è solo a 32 bit e ciò limita la memoria a 3,5 gb max. Controlla il link VonC pubblicato per i dettagli su questo argomento.

0
FrankS

È una domanda piuttosto complicata in quanto richiede diversi componenti per risolvere il problema. Questi componenti sono:

  • Unità centrale di elaborazione
  • Memory Controller Unit
  • BIOS/(U) EFI
  • Sistema operativo
  • Applicazione

L'ultimo elemento non riguarda direttamente il problema, ma l'ho aggiunto per completezza.

In poche parole, tutti i componenti di cui sopra devono supportare più di 4 GB di memoria per avere successo.

Unità centrale di elaborazione

Iniziamo con una CPU. Ma prima è importante notare che una CPU non ha alcuna abilità magica diuseanymemoryat tutti. Invece potrebbe semplicementeaccessanyaddressall'interno del suospazio indirizzabile. Ora ecco che arriva la cosa-testimone. La CPU a 32 bit è capace diaccessingindirizzinell'intervallo da 0 a 4 GiB. Questo intervallo tuttavia deve contenere non solo la RAM disponibile, ROM, SMRAM , Tabella di rimappatura degli indirizzi grafici ma anche tutto il necessario I/O mappato in memoria e molti altri, che potrebbero richiedere una parte sostanziale di questo intervallo di indirizzi . Di conseguenza potrebbe essere perfettamente possibile, che alcuni indirizzi di memoria fosseroombreggiatida quegli usi e quindi non sono disponibili per operazioni sulla RAM. Per recuperare la memoria nascosta è necessario estendere la CPUspazio di indirizzamento accessibile. In caso di CPU a 32 bit l'estensione degli indirizzi fisici potrebbe aiutare. Che consenteindirizzamentofino a 64 GiB. La CPU a 64 bit che opera in modalità nativa a 64 bit è in grado di default diaccessingfino a 16 EiB, che è piuttosto grande e non richiede tali trucchi. D'altro canto, per una CPU a 64 bit non è pratico utilizzare l'indirizzamento a 64 bit, quindi in realtà sono ancora limitati dal loro bus di indirizzo a un intervallo inferiore a 16 EiB.

Memory Controller Unit

Inizialmente si trovava in Northbridge , ma è stato spostato sul processore morire da AMD iniziando con i loro processori AMD64 e da Intel con i loro processori Nehalem. Anche se una CPU con PAE è capace diaccede a64 GiB da sola, ha ancora bisogno di un MCU per accedere alla RAM. In poche parole: una CPUaccessingindirizzo particolare ottiene la risposta dal dispositivo PCI, BIOS ROM flash o MCU, se l'indirizzo richiesto risiede nella RAM, e quindi sopra. Tuttavia, non è raro che un MCU (sia in Northbridge che in CPU) supporti molto menospazio indirizzabiledi 64 GiB per ragioni di marketing, ad esempio.

BIOS/(U) EFI

BIOS/(U) EFI sono anche importanti in quanto è loro dovere configurare l'hardware prima che tutto possa effettivamente funzionare. Tra le altre cose, sono responsabili della mappatura dell'intero processorespazio indirizzabilecon intervalli di memoria di dispositivi hardware, bus, RAM e così via. È interessante notare che potrebbe accadere che l'intera RAM divida in parti e mappata in diversi punti non contigui disponibili. Il problema con il BIOS è che gli sviluppatori potrebbero non aspettarsi più di 3 GiB di RAM utilizzo all'interno del loro sistema e in quanto tale BIOS non mapperà correttamente tutta la memoria da utilizzare. Molto probabilmente questo non accadrà a (U) EFI.

Sistema operativo

Il sistema operativo dovrebbe supportare anche l'indirizzamento di più di 4 GiB memoria. Per essere più specifici, dovrebbe configurare una CPU per utilizzare PAE. Alcuni sistemi operativi a 32 bit sono perfettamente in grado di utilizzare PAE e accedere a più di 4 GiB, altri hanno il limite del software sulla memoria massima, anche se abilitano il PAE per una maggiore sicurezza (Windows XP è un esempio). Ancora una volta, i sistemi operativi a 64 bit non presentano tali difficoltà e normalmente supportano più di 4 GiB di memoria.

Applicazione

L'ultimo punto proviene da un mondo diverso, poiché le applicazioni comunemente operano in uno spazio di indirizzi virtuale , l'ho aggiunto per completezza. Ciononostante, durante la compilazione per l'applicazione sono necessari alcuni passaggi aggiuntivi per poter utilizzare più memoria. Per impostazione predefinita, l'applicazione a 32 bit è in grado di utilizzare solo 2 GiB di memoria. La stessa applicazione a 32 bit potrebbeindirizzofino a 4 GiB di memoria, a condizione che il sistema operativo lo supporti e abbia abilitato CPU PAE. Più specificamente, potrebbeusarefino a 3 GiB di memoria, l'altro 1 GiB sarebbe indirizzabile come librerie e kernel del sistema operativo, ma non scrivibile (in definitiva ciò dipende dall'architettura del SO piuttosto che dall'applicazione stessa). Anche in questo caso, le applicazioni a 64 bit supportano nativamente più di 4 GiB di memoria e non presentano tali problemi in primo luogo.

Per mettere tutto in prospettiva, consideriamo diversi esempi.

Considerare Intel® 82945G Memory Controller . Il sito Web di Intel afferma che non supporta PAE ed è limitato a 4 GB di RAM. Si consulti il ​​paragrafo 9 System Address Map della scheda tecnica. Ha molte informazioni. Il più interessante è Figure 9-3. Main Memory Address Range: Figure 9-3. Main Memory Address Range e il paragrafo 9.2 Main Memory Address Range (1 MB to TOLUD), che recita come segue:

Questo intervallo di indirizzi si estende da 1 MB fino alla parte superiore della memoria fisica a cui è consentito essere accessibile da (G) MCH (come programmato nel registro TOLUD). Tutti gli accessi agli indirizzi all'interno di questo intervallo vengono inoltrati da (G) MCH alla memoria principale a meno che non rientrino nel TSEG opzionale, nel foro ISA opzionale o nella memoria VGA rubata IGD opzionale. Il (G) MCH fornisce uno spazio di decodifica dell'indirizzo di memoria principale massimo di 4 GB (2 GB per 82945GC/82945GZ/82945PL). Il (G) MCH non rimappa lo spazio di memoria APIC o PCI Express. Ciò significa che quando la quantità di memoria fisica popolata nel sistema raggiunge 4 GB (2 GB per 82945GC/82945GZ/82945PL), la memoria fisica esistente è ancora non indirizzabile e quindi inutilizzabile dal sistema.

Come dice, dal momento che non supporta PAE, non è in definitiva in grado diremapPCI e ogni altro MMIOabove4 GiB, quindi parte della memoria sarà ombreggiata e inutilizzata. Ciò significa che anche se viene utilizzato con una CPU che supporta l'indirizzamento a 36 bit, la memoria superiore a 4 GiB sarà ancora non disponibileeparte della memoria vicina a 4 Anche il limite GiB sarà inutilizzato.

Al contrario, consideriamo Intel® 82955X Memory Controller , che è correlato al precedente, ma è specificato che supporta 8 GB contrariamente a quello precedente! Il foglio dati 2.1 Host Interface Signals suggerisce che utilizza bus di indirizzi a 36 bit per la CPU, che è un buon segno. Il paragrafo 7 System Address Map ha ulteriori approfondimenti. Confronta Figure 7-1. System Address Ranges con quello che abbiamo visto prima: Figure 7-1. System Address Ranges Questo suggerisce chiaramente che è in grado di utilizzare più di 4 GiB di RAM, a condizione che sia utilizzato con la CPU anche in grado di indirizzamento a 36 bit. Vale anche la pena notare che il paragrafo 7 System Address Map afferma che MCH supports 64 GB of addressable memory space. Tuttavia è ulteriormente chiarito che maximumusableRAM è limitato a 8 GB. Questo ancora una volta dichiara la differenza traindirizzabileeusabilecome cercavo di trasmettere nella sezione CPU.

Per concludere, vorrei notare che due chipset correlati hanno un'enorme differenza nella gestione della memoria.

Lets inspect Intel® Pentium® Processor Extreme Edition 840 . Supporta set di istruzioni a 64 bit, ma non supporta PAE. Ciò significa che se eseguito in modalità a 32 bit, non sarà in grado di utilizzare più di 4 GiB di RAM (per favore, correggimi se ho torto con questa ipotesi). Consente di controllare la scheda tecnica e la tabella Table 4-3. Signal Description. Anche se questa CPU è a 64 bit, è ancora limitata dal fatto che il suo bus di indirizzo è largo 36 bit, limitandolo quindi aaccessibileintervallo di indirizzi a partire da 0 a 64 GiB.

Ora esaminiamo una CPU più recente. Take Intel® Core ™ i7-7700 Processor per esempio. È pubblicizzato per supportare fino a 64 GB di RAM. Ora consente di controllare la scheda tecnica di esso. Il paragrafo 2.3 System Address Map ci convince che l'intervallo di CPUindirizzabileè compreso tra 0 e 512 GiB a causa del bus di indirizzi a 39 bit. Si noti che è ancora lontano dal teorico intervallo di 16 EiB per una CPU a 64 bit. Sorprendentemente però chiarisce ulteriormente che questa CPU supporta fino a 32 GiB diusabileRAM massimo (contrariamente a 64 GB sul sito Web). C'è anche un'immagine di interesse qui Figure 2-2. System Address Range Example: Figure 2-2. System Address Range Example Fa un buon lavoro illustrando il problema con ombreggiatura della memoria da parte dei dispositivi PCI ecc. Suggerisce anche un modo per superare questo problema conmappingun intervallo dal reale RAM all'intervallo di indirizzi superiore all'interno della CPU -indirizzabileintervallo. Così reclamando quella memoria nascosta per l'uso. Si noti che questa rimappatura viene eseguita dal BIOS/(U) EFI dopo l'inizializzazione dell'hardware ed è esattamente per questo motivo che ho incluso BIOS/(E) EFI nell'elenco puntato sopra.

Ho preso come esempio i prodotti Intel, ma lo stesso vale per AMD.

Ora parliamo di come sono coinvolti i sistemi operativi. Il kernel Linux include il pieno supporto in modalità PAE a partire dalla versione 2.3.23 ed è perfettamente possibile avere più di 4 GiB di memoriausabilecon kernel Linux su un sistema a 32 bit. Tuttavia, si noti un problema indeterminato con il kernel Linux a 32 bit su un sistema con più di 4 GiB di RAM su alcuni componenti hardware (nella mia esperienza ha qualcosa a che fare con gli sparatutto di TLB). In ogni caso Wikipedia ha una buona informazione su supporto PAE . Interessante è il modo in cui Windows XP è limitato a 4 GB, mentre Windows Server 2003 Enterprise/Datacenter SP2 è capace di 64 GB. Lo stesso vale per le altre coppie di Windows Desktop-Server.

Come puoi vedere ci sono molte combinazioni tra i componenti elencati e in alcuni casi la sostituzione di una CPU o di un sistema operativo potrebbe essere d'aiuto. È molto più difficile gestire il BIOS/(U) EFI o MCU poiché il primo è proprietario e integrato nel sistema e non facilmente modificabile, quest'ultimo è incorporato nella CPU o saldato a bordo.

0
PF4Public

Se si utilizza la grafica integrata, è possibile disattivarla e ciò significa che il sistema sarà in grado di indirizzare più RAM del sistema.

Ma la soluzione migliore è sicuramente quella di ottenere un sistema operativo x64.

Nessuna ragione, non troppo comunque. La maggior parte dei programmi funziona in x64 con XP/Vista/7 con un livello di emulazione x86. I suoi soli driver che potrebbero essere il problema.

0
Blam