Newsgroup: it.comp.aiuto
Titolo: Win XP quanta RAM può sfruttare?

Ho un Pentium 4 2,6 GHz
con 512 MB di RAm DIMM 400
Se installo 2 Gbyte di RAM XP riesce a sfruttarla tutta
se ce ne sia necessità (editing video ad es.)
oppure oltre 1Gb è sprecata?
Grazie 
Luca



Il limite teorico è di quattro giga, in realtà per motivi che potrai
appurare facilmente con semplici ricerche su google o analogo motore di
ricerca, quello pratico si restringe e può essere di parecchio meno. 
Ad ogni modo per rispondere pienamente  e semplicemente alla tua domanda,
con due giga non ci sono problemi, e salvo inconvenienti hardware, il
sistema operativo li vede e sfrutta senza problemi.
-- 
Ciao, Guglielmo.

 ricerca, quello pratico si restringe e può essere di parecchio meno.
EDIT: ovviamente mi riferisco alla tradizionale versione più diffusa, cioè
a quella a trentadue bit. 
Con la versione a sessantaquattro bit, il limite della RAM sfruttabile è
posizionato molto (aiutami a dire moooolto) più in alto :)
-- 
Ciao, Guglielmo.

Del sistema a 64 bit ne ho sentito parlare ma non ho capito bene cos'è. 
Windows xp è solo a 32 bit? La differenza di prezzo è notevole? Con Linux 
esiste lo stesso problema?
Grazie
"Guglielmo" <mmemmoTO...@tiscali.it.invalid> ha scritto nel messaggio 
news:kne1tyk4p4n6$.q3sprhjqpxzv$.dlg@40tude.net...


 Con Linux esiste lo stesso problema?
Nì. Nel senso che il kernel già dalla versione 2.4 supporta ben 64 GB di
memoria RAM, però è anche vero che AFAIK parecchi kernel preconfezionati
dalle distribuzioni restano bloccati a quattri giga. Dipende poi anche
dalle istruzioni dei processori, insomma è un gran casino. In linea
generale resta valida la regola che se intendi usare con successo e meno
grattacapi quantitativi di RAM superiori ai tre giga, è meglio disporre di
versioni dei SO a sessantaquattro giga.
-- 
Ciao, Guglielmo.

 ricerca, quello pratico si restringe e può essere di parecchio meno.
La gestione della memoria sotto W32 (tra cui xp) e' un argomento vasto
ma siccome credo siano in molti a chiedersi le ragioni del limite
citato da Guglielmo voglio provare a darne una (goffa) spiegazione. I
microprocessori a 32 bit hanno una gestione virtuale della memoria
implementata in hardware (ovviamente visto che si tratta di uP) e col
il supporto software fornito da un sistema operativo a 32 bit e'
possible accedere alla memoria in un modo che rispetto a prima e'
totalmente nuovo e originale. Nello spazio di indirizzamento
disponibile usando 32 bit, cioe' 4GB (2^32 = 4GB) un programma che
gira sotto xp ha a disposizione 2GB di memoria per i sui dati e il suo
codice, mentre il kernel occupa gli altri 2GB e non puo' essere
disturbato.
Si', si potrebbe dire, ma cosi' un programma occupa tutto lo spazio di
indirizzamento disponibile (2GB) e va da se' che se si prende tutto lo
spazio lui non ne avanza per far girare gli altri programmi. Invece
non solo avanza spazio, ma ne avanza altrettanto (cioe' 2GB) per OGNI
programma che gira nel sistema, con la vistosa eccezione del kernel
che vede un unico spazio, sempre lo stesso. E non solo ogni programma
a disposizione i suoi 2GB come tutti gli altri ma questo avviene anche
se il sistema ha solo 16 MB di ram e un harddisk da 100MB.
Per capire come tutto questo possa funzionare bisogna tornare un po'
indietro nel tempo. Il sistema tradizionale (quello dei sistemi a 16
bit come windows 3.0 o il DOS su un 8086 per es) prevedeva l'accesso
diretto alla memoria, cioe' il uP generava un indirizzo, lo passava
direttamente al chip della RAM e il chip gli schiaffava i dati sul bus
senza tanti complimenti. Quando c'e' un solo programma in memoria
questo sistema e' valido perche' e' veloce e un bug al massimo puo'
distruggere i dati o alterare il codice dello stesso programma
(potremmo dire che quasi se lo merita) ma in sistemi multitasking come
windows e' una catastrofe. Niente infatti impedisce a un programma
malfatto di distruggere i dati di un altro programma che fino a quel
momento funzionava benissimo. E questo e' evidentemente
inaccettabile.
Pensa che ti ripensa ;D in Intel e in Microsoft sono arrivati alla
conclusione che la memoria andava virtualizzata. In realta' da anni
(dal 1982 con l'Intel 80286 ma in maniera compiuta dal solo 386 in su,
1986) Intel produceva microprocessori capaci di farlo a livello
hardware, quello che mancava era il software capace di sfruttarlo.
Implementato come si deve il sistema sarebbe stato perfetto, i
programmi potevano ancora tentare di distruggere i dati di altri
programmi ma con le modifiche che gli ingegneri avevano in mente non
ci sarebbero riusciti piu'. All'uscita di W95 tutti i problemi sono
risolti [1], anche su una macchina con 16MB di memoria i programmi a
32 bit hanno a disposizione 2GB e possono fare quello che vogliono, ma
lo spazio di indirizzamento di un altro programma non lo vedranno mai.
[1]: Per evitare un miliardo di flames sono costretto a chiarire che
W95 era un sistema di transizione e ancora permetteva molte delle
porcherie che avrebbe dovuto impedire. Solo con versioni successive a
W98 la transizione al nuovo e' completa.
La virtualizzazione della memoria e' un processo simile a quello che
fa uno che prende un taxi invece di guidare da solo: il taxi e' piu'
lento e costoso che usare la macchina ma e' piu' comodo e anche piu'
sicuro perche' in caso di incidenti la responsabilita' e' del
"driver" (per rimanere in tema, driver = autista). Quindi se succede
qualcosa noi scendiamo e ce ne andiamo per la nostra strada. Windows
fa la stessa cosa con tutto l'hardware e il software. Comunica con
loro con cortesia ma se quelli gli rispondono male li blocca senza che
gli altri programmi (o drivers) abbiano a soffrirne e soprattutto
senza che il sistema si inchiodi come succedeva prima. Un po' quello
che ha fatto Guglielmo con me plonkandomi come un driver pieno di bug
(a parte la questione della cortesia, direi :D)
Ma come fa il sistema a fornire tutta quella memoria a ciascun
processo (definizione piu' precisa di "programma")? Lo fa sperando che
il processo non la richieda, nel qual caso basta dargli l'illusione
che ci sia lasciandolo libero di usare qualsiasi indirizzo. E se il
processo usa effettivamente un certo indirizzo?
Windows e' costretto a fornirgli la memoria relativa a
quell'indirizzo, non ci sono cazzi. Pero' windows non fornisce la
memoria corrispondente a quel'indirizzo FISICO (che potrebbe anche non
esistere quando c'e' poca ram) ma cerca in tutti i posti che ha a
disposizione (ram e disco), trova un buco libero (una pagina), lo
riserva al processo in modo che sia accessibile solo da lui e in
seguito traduce ogni singolo indirizzo generato dal processo per
dargli l'illusione perfetta che quella memoria esista e che si trovi
proprio all'indirizzo specificato. Se la pagina (la cui dimensione
standard e' 4KB) si puo' mappare in ram bene, altrimenti bisogna
salvarla nel file di swap. Ecco come il file di swap diventa quel
mostro da vari gigabyte che ho visto in certi sistemi.
Per usare una metafora sgangherata quanto le precedenti direi che il
sistema e' quello di un parcheggio automatico. Ogni macchina entra con
un codice ed esce con lo stesso codice ma il punto dove viene
fisicamente sistemata all'interno del parcheggio varia ogni volta.
All'utente tutto questo sta bene finche' e' sicuro che la sua macchina
un posto ce l'ha.
Ma cosa succede se un processo si impunta e chiede i 2GB a cui a
diritto tutti d'un botto? Niente. Al sistema non importa nulla di
quelo che un processo richiede, e' solo quello che effettivamente usa
che windoz trova importante. Le 524288 pagine da 4KB richieste dal
processo vengono riservate ma non vengono allocate finche' il processo
non comincia ad usarle una per una. E' come una serie di prenotazoni
in albergo, le richieste ci sono e sono registrate al nome dei clienti
ma le stanze verranno consegnate solo all'arrivo di ciascuno.
Dato lo scollamento completo tra indirizzamento fisico e virtuale
stupisce di meno sapere che XP non e' in grado di sfruttare tutta la
memoria che ha a disposizione. In realta' non c'e' nessuna relazione
tra la memoria fisica e lo spazio di indirizzamento virtuale dei
processi incluso il kernel.
Ma perche' alla fine XP non riesce a sfruttare neanche i 4 giga fino
in fondo? Il problema e' che xp (in teoria) virtualizza tutto inclusi
i canali di input/output. Non e' piu' possibile leggere dall'hardware
di una porta parallela come facevo in W95/98 (cioe' su sistemi che
teoricamente impedivano queste cose). Adesso per leggere o scrivere
sulla parallela (che ormai non esiste piu') bisogna  scrivere in un
indirizzo di memoria riservato allo scopo e completamente diverso da
quello fisico. La stessa cosa vale per ogni singolo byte della memoria
video, sono tutti mappati in modo virtuale nello spazio di
indirizzamento a 32 bit. Ma riservare indirizzi cosi' impedisce di
vedere la memoria con gli stessi indirizzi fisici, rendendola di fatto
irrangiungibile. Ed e' questo il caso di xp con 4GB. La memoria c'e ma
non si "vede"...
Altre versioni a 32 bit di windows pero' supportano memorie ram piu'
grandi di 4 GB (Guglia non sto contraddicendoti, hai parlato di
sistemi xp e quello che hai scritto e' sacrosanto, io parlo piu' in
generale di sistemi a 32 bit e delle loro relazioni con la memoria. E
gia' che ci sono voglio dirti che anche quando ti contraddico non lo
faccio per pestarti i piedi ne' per dimostrare che sono piu' bravo di
te, scrivo solo quello che so!). Si tratta di versioni un po' esotiche
come Windows 2000 Advanced Server o Windows 2000 Datacenter Server e
credo che pochi di noi le abbiano usate nella vita vera. I
microprocessori dal Pentium Pro in su supportano in hardware una
modalita' di gestione della memoria chiamata Physical Address
Extension (PAE) e quando sono supportati da un chipset adeguato e
fanno girare i sistemi gia' citati possono raggiungere un massimo
indirizzabile di 64GB, 16 volte il limite di XP.
Johnny
PS: Per Guglielmo. So che sto parlando al vento se davvero mi hai
plonkato ma se non e' cosi' ti chiedo: perche' non facciamo la pace?
L'aiuto che nel nostro piccolo cerchiamo di dare al ng sarebbe anche
migliore se andassimo piu' d'accordo e non sprecassimo banda a citarci
addosso. Guarda che io ho sempre rispettato la tua opinione (almeno
prima che iniziassi ad insultarmi) e ti considero un tipo MOLTO
preparato come ricordo di avere gia' scritto fin dal mio primo post.
La mia e' un'offerta onesta, pensaci, basta un ps come questo per
farmi sapere qualcosa, non sono uno che si formalizza. Ciao.