Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Numero KB originale: 2160852
Riepilogo
Questo articolo contiene informazioni di base sull'implementazione della memoria virtuale nelle versioni a 32 bit di Windows.
Nei sistemi operativi moderni, ad esempio Windows, applicazioni e molti processi di sistema fanno sempre riferimento alla memoria usando indirizzi di memoria virtuale. Gli indirizzi di memoria virtuale vengono convertiti automaticamente in indirizzi reali (RAM) dall'hardware. Solo le parti principali del kernel del sistema operativo ignorano questa conversione degli indirizzi e usano direttamente gli indirizzi di memoria reale.
La memoria virtuale viene sempre usata, anche quando la memoria richiesta da tutti i processi in esecuzione non supera il volume di RAM installato nel sistema.
Processi e spazi indirizzi
A tutti i processi (ad esempio, eseguibili dell'applicazione) in esecuzione in versioni a 32 bit di Windows vengono assegnati indirizzi di memoria virtuale (uno spazio indirizzi virtuale), compreso tra 0 e 4.294.967.295 (2*32-1 = 4 GB), indipendentemente dalla quantità di RAM installata nel computer.
Nella configurazione predefinita di Windows, 2 gigabyte (GB) di questo spazio indirizzi virtuale sono designati per l'uso privato di ogni processo e gli altri 2 GB sono condivisi tra tutti i processi e il sistema operativo. In genere, le applicazioni (ad esempio, Blocco note, Word, Excel e Acrobat Reader) usano solo una frazione di 2 GB di spazio indirizzi privato. Il sistema operativo assegna frame di pagina RAM solo alle pagine di memoria virtuale in uso.
L'estensione dell'indirizzo fisico (PAE) è la funzionalità dell'architettura Intel a 32 bit che espande l'indirizzo di memoria fisica (RAM) a 36 bit. PAE non modifica le dimensioni dello spazio degli indirizzi virtuali (che rimane a 4 GB), ma solo il volume di RAM effettivo che può essere risolto dal processore.
La conversione tra l'indirizzo di memoria virtuale a 32 bit usato dal codice in esecuzione in un processo e l'indirizzo RAM a 36 bit viene gestito automaticamente e in modo trasparente dall'hardware del computer in base alle tabelle di traduzione gestite dal sistema operativo. Qualsiasi pagina di memoria virtuale (indirizzo a 32 bit) può essere associata a qualsiasi pagina ram fisica (indirizzo a 36 bit).
L'elenco seguente descrive la quantità di RAM supportata dalle varie versioni e edizioni di Windows (a partire da maggio 2010):
Versione di Windows | RAM |
---|---|
Windows NT 4.0 | 4 GB |
Windows 2000 Professional | 4 GB |
Windows 2000 Standard Server | 4 GB |
Windows 2000 Advanced Server | 8 GB |
Windows 2000 Datacenter Server | 32 GB |
Windows XP Professional | 4 GB |
Windows Server 2003 Web Edition | 2 GB |
Windows Server 2003 edizione Standard | 4 GB |
Windows Server 2003 edizione Enterprise | 32 GB |
Windows Server 2003 Datacenter Edition | 64 GB |
Windows Vista | 4 GB |
Windows Server 2008 Standard | 4 GB |
Windows Server 2008 Enterprise | 64 GB |
Windows Server 2008 Datacenter | 64 GB |
Windows 7 | 4 GB |
File di paging
LA RAM è una risorsa limitata, mentre per la maggior parte degli scopi pratici la memoria virtuale è illimitata. Possono essere presenti molti processi e ogni processo ha 2 GB di spazio indirizzi virtuale privato. Quando la memoria usata da tutti i processi esistenti supera la RAM disponibile, il sistema operativo sposta le pagine (4 KB) di uno o più spazi di indirizzi virtuali sul disco rigido del computer. In questo modo il frame della RAM viene liberato per altri usi. Nei sistemi Windows, queste pagine di paging vengono archiviate in uno o più file (file Pagefile.sys) nella radice di una partizione. In ogni partizione del disco può essere presente un file di questo tipo. Il percorso e le dimensioni del file di pagina sono configurati in Proprietà sistema (fare clic su Avanzate, fare clic su Prestazioni e quindi sul pulsante Impostazioni).
Gli utenti spesso chiedono quanto è grande creare il file di paging? Non esiste una singola risposta a questa domanda perché dipende dalla quantità di RAM installata e dalla quantità di memoria virtuale richiesta dal carico di lavoro. Se non sono disponibili altre informazioni, la raccomandazione tipica di 1,5 volte la RAM installata è un buon punto di partenza. Nei sistemi server, in genere si vuole avere una RAM sufficiente in modo che non vi sia mai una carenza e in modo che il file di paging non venga usato. In questi sistemi, potrebbe non servire alcun scopo utile per gestire un file di paging di grandi dimensioni. D'altra parte, se lo spazio su disco è abbondante, mantenere un file di paging di grandi dimensioni (ad esempio, 1,5 volte la RAM installata) non causa un problema, e questo elimina anche la necessità di preoccuparsi di quanto grande per renderlo.
Prestazioni, limiti architetturali e RAM
In qualsiasi sistema informatico, man mano che il carico aumenta (il numero di utenti, il volume di lavoro), le prestazioni diminuiscono, ma in modo non lineare. Qualsiasi aumento del carico o della domanda, oltre un determinato punto, causa una diminuzione significativa delle prestazioni. Ciò significa che alcune risorse sono in un'offerta criticamente breve e sono diventate un collo di bottiglia.
A un certo punto, non è possibile aumentare la risorsa in breve fornitura. Ciò significa che è stato raggiunto un limite di architettura. Alcuni limiti architetturali segnalati di frequente in Windows includono quanto segue:
- 2 GB di spazio indirizzi virtuale condiviso per il sistema (kernel)
- 2 GB di spazio indirizzi virtuale privato per processo (modalità utente)
- 660 MB di archiviazione PTE di sistema (Windows Server 2003 e versioni precedenti)
- 470 MB di archiviazione del pool di paging (Windows Server 2003 e versioni precedenti)
- 256 MB di archiviazione del pool non a pagina (Windows Server 2003 e versioni precedenti)
Questo vale in particolare per Windows Server 2003, ma questo può essere applicato anche a Windows XP e a Windows 2000. Tuttavia, Windows Vista, Windows Server 2008 e Windows 7 non condividono tutti questi limiti architetturali. I limiti per la memoria utente e kernel (numeri 1 e 2 qui) sono gli stessi, ma le risorse del kernel, ad esempio ptes e vari pool di memoria, sono dinamiche. Questa nuova funzionalità abilita sia la memoria di paging che quella non di paging. In questo modo, i ptes e il pool di sessioni aumentano oltre i limiti illustrati in precedenza, fino al punto in cui l'intero kernel viene esaurito.
Istruzioni spesso trovate e tra virgolette, ad esempio le seguenti:
Con un Terminal Server, i 2 GB di spazio indirizzi condiviso verranno usati completamente prima che vengano usati 4 GB di RAM.
Questo può essere vero in alcuni casi. Tuttavia, è necessario monitorare il sistema per sapere se si applicano o meno al sistema specifico. In alcuni casi, queste affermazioni sono conclusioni da specifici ambienti Windows NT 4.0 o Windows 2000 e non si applicano necessariamente a Windows Server 2003. Sono state apportate modifiche significative a Windows Server 2003 per ridurre la probabilità che questi limiti architetturali vengano effettivamente raggiunti in pratica. Ad esempio, alcuni processi presenti nel kernel sono stati spostati in processi non kernel per ridurre la memoria usata nello spazio indirizzi virtuale condiviso.
Monitoraggio dell'utilizzo della RAM e della memoria virtuale
Monitor prestazioni è lo strumento principale per il monitoraggio delle prestazioni del sistema e per identificare la posizione del collo di bottiglia. Per avviare Monitor prestazioni, fare clic su Start, fare clic su Pannello di controllo, scegliere Strumenti di amministrazione e quindi fare doppio clic su Monitor prestazioni. Di seguito è riportato un riepilogo di alcuni contatori importanti e di ciò che indicano:
Memoria, Byte di cui è stato eseguito il commit: questo contatore è una misura della richiesta di memoria virtuale.
Questo mostra il numero di byte allocati dai processi e a cui il sistema operativo ha eseguito il commit di un frame di pagina RAM o uno slot di pagina nel file di paging (o forse entrambi). Man mano che i byte di cui è stato eseguito il commit aumentano rispetto alla RAM disponibile, il paging aumenta e anche le dimensioni del file di pagina usate aumentano. A un certo punto, l'attività di paging inizia a influire significativamente sulle prestazioni.
Process, Working Set, _Total: questo contatore è una misura della memoria virtuale in uso attivo .
Questo contatore mostra la quantità di RAM necessaria in modo che la memoria virtuale usata per tutti i processi sia in RAM. Questo valore è sempre un multiplo di 4.096, ovvero la dimensione della pagina usata in Windows. Man mano che la richiesta di memoria virtuale aumenta oltre la RAM disponibile, il sistema operativo regola la quantità di memoria virtuale di un processo nel set di lavoro per ottimizzare l'utilizzo della RAM disponibile e ridurre al minimo il paging.
File di paging, %pagefile in uso: questo contatore è una misura della quantità di file di paging effettivamente in uso.
Utilizzare questo contatore per determinare se il file di paging è una dimensione appropriata. Se questo contatore raggiunge 100, il file di paging è pieno e le cose smetteranno di funzionare. A seconda della volatilità del carico di lavoro, è probabile che il file di paging sia sufficientemente grande in modo che non venga usato più del 50-075%. Se si usa gran parte del file di paging, la presenza di più dischi fisici può migliorare le prestazioni.
Memoria, pagine/sec: questo contatore è una delle misure più fraintesi.
Un valore elevato per questo contatore non implica necessariamente che il collo di bottiglia delle prestazioni deriva da una carenza di RAM. Il sistema operativo usa il sistema di paging per scopi diversi dallo scambio di pagine a causa dell'eccessivo impegno della memoria.
Memoria, Output pagine/sec: questo contatore mostra il numero di pagine di memoria virtuale scritte nel file di paging per liberare frame di pagine RAM per altri scopi al secondo.
Questo è il contatore migliore da monitorare se si sospetta che il paging sia il collo di bottiglia delle prestazioni. Anche se i byte di cui è stato eseguito il commit sono maggiori della RAM installata, se l'output delle pagine/sec è basso o zero nella maggior parte dei casi, non c'è alcun problema significativo di prestazioni dalla RAM insufficiente.
Memoria, byte cache, memoria, pool di byte non di paging, memoria, byte di paging del pool, memoria, totale byte del codice di sistema, memoria, totale driver di sistema byte:
La somma di questi contatori è una misura della quantità di 2 GB della parte condivisa dello spazio di indirizzi virtuale da 4 GB in uso. Usare questi elementi per determinare se il sistema raggiunge uno dei limiti dell'architettura descritti in precedenza.
Memoria, MBytes disponibili: questo contatore misura la quantità di RAM disponibile per soddisfare le richieste di memoria virtuale (nuove allocazioni o per il ripristino di una pagina dal file di paging).
Quando la RAM è in breve fornitura (ad esempio, Commit Bytes è maggiore della RAM installata), il sistema operativo tenterà di mantenere una determinata frazione di RAM installata disponibile per l'uso immediato copiando pagine di memoria virtuale non in uso attivo nel file di paging. Pertanto, questo contatore non raggiungerà zero e non è necessariamente una buona indicazione di se il sistema è corto di RAM.