Perché i sistemi operativi Windows a 32 bit usano al massimo solo 3 mb di RAM? Non sarebbe utile, soprattutto con Vista, poterne installare di più (invece di usare il sistema di utilizzare come memoria le chiavette USB)? Se sono presenti più di 3 mb, quelli in più vengono sfruttati per le schede video con memoria condivisa?

Forse volevi dire 3GB e non 3 mb.

Se consideriamo un microprocessore a 32 bit, significa che, in generale, i suoi registri lavoreranno con 32 bit. Un sistema operativo a 32 bit, quindi, si suppone che sia stato progettato per lavorare con microprocessori aventi questo tipo di architettura.

Supponiamo, ad esempio, di avere il seguente registro (ad otto bit) su cui memorizzare gli indirizzi della memoria RAM:

B7B6B5B4B3B2B1B0

in cui Bi rappresenta la i-esima cella del registro indirizzi, collegato ad un Bus indirizzi ad 8 bit; lo spazio di indirizzamento che abbiamo è di 28 = 256 indirizzi. Se ad ogni indirizzo corrispondesse una parola da 8 bit, avremmo la possibilità di indirizzare una memoria di 256 byte.

Consideriamo, adesso, un ipotetico processore con registri a 32 bit e il cui registro degli indirizzi sia anch’esso a 32 bit. In questo caso lo spazio di indirizzamento che abbiamo è di 232 = 4294967296, praticamente più di 4 gigabyte di memoria.

Nei sistemi a 32 bit che utilizzano la tecnologia PAE (Physical Address Extension), è possibile indirizzare più di 4 gigabyte di memoria (senza la necessità di una penna usb), semplicemente considerando bus a 36 bit anzichè a 32. Con 36 bit è possibile indirizzare fino a 236 = 68719476736; quindi più di 68 gigabyte di spazio per l’indirizzamento della memoria.

torniamo ai nostri sistemi a 32 bit:

Seguendo il ragionamento appena visto, non dovrebbero esserci problemi ad indirizzare una memoria di 4 gigabyte con un sistema a 32 bit. Purtroppo la realtà è leggermente più complessa: i dispositivi memory-mapped, come la scheda video, ad esempio, o la ROM del BIOS, utilizzano parte dello spazio di indirizzamento del sistema, riducendo di fatto, la memoria disponibile per la RAM.

All’interno di un normale computer non abbiamo SOLO il microprocessore e la RAM, ma anche altri dispositivi come: la scheda video, la scheda audio, la ROM del BIOS e altre periferiche, in funzione del tipo di configurazione che si è scelto per il proprio computer. Affinchè questi dispositivi siano raggiungibili dal sistema operativo a 32 bit, le loro locazioni devono essere mappate all’interno dello spazio accessibile con 32 bit, quindi all’interno dei 4 gigabyte dello spazio indirizzi.

Se noi avessimo, ad esempio, una "super" scheda video con 500 megabyte di memoria e, contemporaneamente, blocchi di RAM per un totale di 4 GigaByte, i 500 megabyte della scheda verrebbero mappati nello spazio relativo ai 4 gigabyte: la conseguenza è che la memoria di sistema verrà ridotta almeno di tale quantità.

Questo problema è sempre esistito, però non ce ne accorgevamo perchè, fino a pochi anni fa, possedere
un gigabyte di RAM era più che sufficiente per utilizzare i programmi più diffusi. Con due gigabyte si viveva praticamente tranquilli!

Con l’avvento di sistemi operativi che richiedono molte più risorse rispetto ai precedenti (vedi il nuovo
Windows Vista, ad esempio), è subentrata la necessità di avere più RAM a disposizione e, conseguentemente, ci si trova a scontrarsi con i limiti fisici dei sistemi a 32 bit.

C’è anche da dire che, la maggior parte dell’hardware in circolazione, è ormai a 64 bit ed il limite dei 32 è solo una scelta della Microsoft anche se esiste una versione a 64 bit (sia di Vista che di XP) ma, al momento della stesura di questo articolo, ci sono problemi di driver ed altre incompatibilita’. Al contrario, Gnu/Linux (come BSD Unix, Solaris e AIX) girano perfettamente a 64 bit almeno dal 2004.