Newsgroup: it.lavoro.informatica
Titolo: informazione su scrittura sw a 32 bit

Se scrivo un programma windows con codice 32bit,e poi lo installo su un 
computer con sistema operativo win 64 bit con 16 GB di RAM , il mio 
programma potrà sfruttare-beneficiare di tutti questi 16 GB di Ram?
 
Oppure girando nel sottostima WoW, non li userà?
 
Grazie e saluti 
 
 


su linux il sistema non può assegnare a ciascun processo a 32bit più di 4 
gb complessivi. immagino che su windows il principio sia lo stesso. 

 
 
"Ludovico"  ha scritto nel messaggio 
news:k06rnr$clo$1...@nnrp-beta.newsland.it...

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx
 
 
dice che il tuo processo potrà allocare massimo 2 Gb senza uso di istruzioni 
particolari. Massimo 4 Gb con IMAGE_FILE_LARGE_ADDRESS_AWARE attivato.
 

 gb complessivi. immagino che su windows il principio sia lo stesso.
 
Con PAE puoi superare questo limite.

Con PAE puoi superare questo limite.
 
Supportato ufficialmente solo sulle versioni server dell'OS.
 
Su Vista/7 con dei kernel accrocchiati, ma se i driver non sono
scritti per accorgersi che PAE e' abilitato (e.g. driver per la GPU
intel)... KABOOM
-- 
Living in Barbaropoli
http://www.barbaropoli.com
 

 intel)... KABOO
 
Io a dire il vero mi riferivo  a  Linux. Li il supporto c'e' dalla 
versione 2.6 del kernel se non vado errato; poi in alcune distribuzioni 
e' abilitato di base in altre devi abilitarlo  ricompilando.
Su windows aggiungerei che  non in tutte le versioni server e' 
supportato ufficialmente.
 

 Oppure girando nel sottostima WoW, non li user ?
 
Forse intendi: il programma 32bit avrà speciali benefici dalla CPU 64
bit, s.o. 64 bit, memoria 16 gb, senza essere stato progettato e
compilato appositamente? Direi che  un beneficio probabile è la
possibilità di allocare in RAM tutti i gb massimi permessi (2 o 4 come
già è stato scritto), cosa che con un s.o. versione 32 bit non si
potrebbe avere, visto che il s.o. stesso non potrebbe gestire più di 4
gb di RAM ed una parte la userebbe per se stesso.

 programma potr� sfruttare-beneficiare di tutti questi 16 GB di Ram?
 
A naso, no.
 
32 bit significano uno spazio di indirizzamento massimo di 4 Gb (2^32). Ho un unico dubbio - ma penso che sia perché a volte amo farmi seghe mentali -  circa il fatto che a) tu sicuramente non allochi 4 Gb in modo contiguo e b) in fin dei conti chi si occupa dell'allocazione di memoria, 
accessibile poi via handle, è sempre il sistema operativo.
 
-- 
Ciao!
Luca

 Oppure girando nel sottostima WoW, non li userà?
 
Nella generalità dei casi, no.
 
-- 
ale
http://ale.riolo.co.uk
 

 accessibile poi via handle, è sempre il sistema operativo.
 
In realtà è vero che non può utilizzare più di 4 gb indirizzati
direttamente, ma il s.o. 64 bit può usare tutti gli altri 12 gb per
ulteriori allocazioni in RAM di sue strutture collegate al programma
(per es. driver di qualche tipo), senza dover swappare su disco, e
questo potrebbe portare ad un beneficio indiretto. Quindi
l'applicativo potrebbe beneficiare di un incremento netto della
velocità di esecuzione.

 32 bit significano uno spazio di indirizzamento massimo di 4 Gb (2^32). Ho un unico dubbio - ma penso che sia perché a volte amo farmi seghe mentali -  circa il fatto che a) tu sicuramente non allochi 4 Gb in modo contiguo e b) in fin dei conti chi si occupa dell'allocazione di memoria, accessibile poi via handle, è sempre il sistema operativo.
 
contiguo o non contiguo ciascun programma dispone (ormai da qualche tempo) di un area riservata protetta, quest'area virtuale quanto vuoi ma per un programma a 32 bit non può essere più di 4 giga perché non è in grado di indirizzarla. a suo tempo sia il dos che win3.1 usavano il "trucchetto" delle pagine per superare il limite dei 64k ma era anche vero che il programma poi andava a leggere e scrivere più o meno ovunque.  

supportato ufficialmente.
 
Non ci piove, ma l'OP menzionava Windows esplicitamente. :)


Non ci piove, ma l'OP menzionava Windows esplicitamente. :)
 
A parte che l'OP menzionava anche che l'eseguibile 32 bit lo avrebbe
fatto girare su un OS a 64, in quel caso la memoria la indirizzi
tutta, PAE o non PAE, ma l'eseguibile probabilmente oltre i 4GB non
accede.


 Non ci piove, ma l'OP menzionava Windows esplicitamente. :)
 
non solo, ma menzionava windows a 64 bit, quando le estensioni pae sono 
(ovviamente) dei sistemi a 32bit. inoltre le estensioni pae consentono 
*al* *sistema* di superare il limite fisico dei 4gb ma i singoli 
applicativi continuano, per ovvie ragioni, a non poter indirizzare più di 
4gb. 
a dire il vero su linux esistono tecniche di indirizzamento per superare 
questo limite ma si tratta di chiamate di sistema specifiche che il 
programma deve prevedere, in altre parole niente di trasparente.
 
 

 accede.
 
Vero che il limite resta sia che il processo giri  sotto OS windows x32 
che  windows x64;
Sotto windows  x32 puoi pero' aggirarlo utilizzando AWE (livello 
applicativo) e PAE (livello kernel) con alcune limitazioni. Mentre sotto 
x64 non essendo AWE supportato in wow64 lo devi per forza ricompilare a 64.

 4gb.
 
questo non è esatto: se l'applicativo è compilato in modo da sfruttare
le estensioni AWE/PAE, può anche sfondare il tetto dei 4GB, al prezzo
dell'overhead di dover tradurre tutti gli indirizzamenti di memoria.
Vero è che in pratica non è una cosa che si incontra spesso (forse
giusto qualche installazione di Oracle), visto che è sicuramente
preferibile upgradare ad un sistema a 64bit veri.
 
bye!
 

 le estensioni AWE/PAE
 
Magari mi sbaglio ma non trovo scritto da nessuna parte che l'uso di AWE 
possa essere reso trasparente con una ricompilazione.
 
Anche perché la memoria rimappata non è proprio equivalente a quella 
"nativa" e credo l'applicazione debba usare l'API esplicitamente.
 
-- 
  Daniele "Vihai" Orlandi
  Bieco Illuminista #184213

 Con PAE puoi superare questo limite.
 
Cari vecchi banchi di memoria del C64 :-)


C64? E questi allora? :^)
 
http://www.old-computers.com/museum/hardware/sinclair_zx80_1-3kb-ram-expansion_1.jpg
 
 
bye!

 possa essere reso trasparente con una ricompilazione.
 
infatti mi sono espresso male: la ricompilazione è necessaria ma non
sufficiente, l'applicativo deve proprio essere scritto apposta per
utilizzare le funzioni AWE.
 
bye!

 
http://www.old-computers.com/museum/hardware/sinclair_zx80_1-3kb-ram-.
..
 
Ah bè, i banchi in senso fisico! :-)) Ancora ho il Vic20 con la sua
espansione da 20k, se non sbaglio

 Con PAE puoi superare questo limite.
 
Per l'OS, non per il singolo processo che rimane limitato a 4G.