PDA

View Full Version : Come attivare il Flag LARGE ADDRESS AWARE per una specifica applicazione?^^?


Spike88
29-12-2008, 15:42
salve a TUTTI!
è la prima volta che posto in questa sezione e a dir la verità è la prima volta che mi cimento in cose un pò particolari come queste.


QUADRO HARDWARE E SO
allora io ho windows xp home edition 32bit
attualmente sul mio sitema fisicamente ho montati 4gb di ram ddr2 divisi in due moduli da 2gb ciascuno in dual channel

COSA HO FATTO FIN ORA
attualmente ho fatto solo una modifica...ovvero la modifica per far dedicare 3gb di ram alle applicazioni generiche e 1Gb intero per il kernel...naturalmente non si parla di ram fisica con questi numeri ma ram virtuale(poi vede il pc quale effettivamente utilizzare)

per fare questo ho modificato il file di boot aggiungendo alla riga giusta:

/3GB /Userva=2900

la riga modificata è questa:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Home" /FASTDETECT /NOEXECUTE=OPTIN /3GB /Userva=2900

QUELLO CHE VOGLIO FARE ADESSO
Adesso per i programmi sono dedicati 3gb di ram come già detto sopra, ma mi manca ancora un elemento ovvero come far in modo che il SO riconosca che una singola applicazione specifica possa utilizzare 3Gb di ram.
Da quello che ho letto in giro nei sistemi a 32bit ogni singola applicazione può potenzialmente richiedere 2gb di ram tutti per se(questo il più delle volte non è necessario)
Ogni .exe ha una bandiera, un FLAG che fa capire al SO quanta ram gli deve potenzialmente concedere(abbiamo detto che nei 32bit è minore di 2gb mentre nei 64bit è maggiore di 2gb), questo flag è chiamato LAA ovvero LARGE_ADDRESS_AWARE e di fatto su macchine a 32bit è impostato sempre su OFF.

Io sono più che altro un giocatore, ne capisco di hardware e di software ma sempre per fini ludici...ed ecco il mio fine: devo abilitare il FLAG LARGE_ADDRESS_AWARE di un .exe di red alert 3(gioco) per fargli utilizzare in potenza 3GB di ram (che in ram fisica si tradurranno con circa 2.2Gb di ram effettiva)

in passato già l' ho fatto per il primo supreme commmader con un tool l' editbin...ma gli autori del forum dove l' ho trovato (con istruzioni e spiegazione annesse) lo hanno modificato solo per trovare e modificare l' .exe di questo gioco in particolare e non funziona con altri .exe.

Chiedo a voi esperti se potreste darmi link per questo editbin senza personalizzazioni o in alternativa altri software o procedure atte ad attivare il FLAG LARGE_ADDRESS_AWARE in un .exe

Inoltre mi piacerebbe approfondire l' argomento RAM perchè devo dire che si tratta di roba molto interessante anche se svia dai giochini.

grazie a tutti scusate se ho scritto qualche castroneria ma resto pur sempre un novizio...sorry

Spike88
30-12-2008, 00:41
nessuno?^^?
help please dove siete guru?==?

cdimauro
30-12-2008, 06:59
Non ho mai giocato con la struttura degli exe, ma se non ricordo male non si può assegnare 3GB di ram in esclusiva a un'applicazione: la ram viene sempre condivisa con le altre che girano, e quindi swappata eventualmente su disco alla bisogna.

Quindi anche se riesci a modificare l'exe e gli assegni 3GB di ram, il s.o. può comunque toglierla all'applicazione.

Questo per lo meno è ciò che ricordo.

So che è anche possibile allocare memoria "non swappable", quindi privata per l'applicazione, ma non mi pare sia possibile specificarlo in un flag dell'exe. Anzi, lo riterrei abbastanza pericoloso.

Spike88
30-12-2008, 16:36
Non ho mai giocato con la struttura degli exe, ma se non ricordo male non si può assegnare 3GB di ram in esclusiva a un'applicazione: la ram viene sempre condivisa con le altre che girano, e quindi swappata eventualmente su disco alla bisogna.

Quindi anche se riesci a modificare l'exe e gli assegni 3GB di ram, il s.o. può comunque toglierla all'applicazione.

Questo per lo meno è ciò che ricordo.

So che è anche possibile allocare memoria "non swappable", quindi privata per l'applicazione, ma non mi pare sia possibile specificarlo in un flag dell'exe. Anzi, lo riterrei abbastanza pericoloso.

questo è ovvio infatti parlo di "potenziale" ovvero le applicazioni credono di avere 2 o dopo fix 3gb a disposizione ma in realtà non la occuperanno mai tutta...ma di fatto potenzialmente la possono richiedere.
da quello che sto leggendo in rete l' editbin fa parte del C++ ...oppure sono io che ho letto male?
guru in sciopero di questi tempi eh?:D

cionci
30-12-2008, 16:54
A quanto sembra è un'opzione del linker, il problema è scovare in quale punto dell'exe è inserita.
Prova a confrontare un exe patchato ed uno oritignale con un editor esadecimale e a vedere in quale punto risiedono le differenze. Se è un'opzione del formato dell'eseguibile dovrebbe bastare.

cionci
30-12-2008, 16:57
editbin è un programma di utilità che si trova in Visual Studio:

setting the LARGE_ADDRESS_AWARE flag can be done using the editbin tool found with Visual Studio. You can also use the tool and specify LARGE_ADDRESS_AWARE:NO, which results in a slightly different EXE from what original one is.


Non ho Visual Studio, non ti posso aiutare.

setting this bit directly in the executable - using the program editbin.exe located in C:\Program files\Microsoft Visual Studio .NET\Vc7\bin like this:
c:\(...)\Vc7\bin> editbin.exe /LARGEADDRESSAWARE \Path\To\The\Program.exe
Afterwards this bit can be checked with the dumpbin.exe utility:
c:\(...)\Vc7\bin> dumpbin.exe /headers \Path\To\The\Program.exe
Among other things a line like this one should appear:

Application can handle large (>2GB) addresses

bio82
30-12-2008, 17:22
e di fatto su macchine a 32bit è impostato sempre su OFF.


sulle applicazioni professionali è abilitato di default, sul mio notebook al lavoro ho raggiunto i 2.7 giga per la singola applicazione (cad 3d), solo aggiungendo il /3gb al boot ini..

cmq abbiamo preso l'abitudine di usare tutto ciò che troviamo a 64 bit per ovviare definitivamente a questo problema...ovviamente cosa che non puoi fare facilmente coi giochi :P

bio

Spike88
31-12-2008, 00:09
qualcuno di voi questo visual studio lo sa utilizzare?^^?

cionci
31-12-2008, 01:29
qualcuno di voi questo visual studio lo sa utilizzare?^^?
C'è scritto sopra cosa devi fare ;) Non devi utilizzare visual studio devi semplicemente usare un programma che installa visual studio.

Spike88
02-01-2009, 01:59
cionci non sono praticissimo potresti spiegarmi più passo passo coem fare?^^?
thanks per la tu adisponibilità;)

cionci
02-01-2009, 08:11
C'è già scritto passo passo:
Vai in cmd e ti sposti nella directory C:\Program files\Microsoft Visual Studio .NET\Vc7\bin o C:\Programmi\Microsoft Visual Studio .NET\Vc7\bin

editbin.exe /LARGEADDRESSAWARE \Path\To\The\Program.exe
dumpbin.exe /headers \Path\To\The\Program.exe
Fra varie altre linee dovrebbe apparire questa:
Application can handle large (>2GB) addresses