Dela via


4-gigabytesanpassning: BCDEdit och Boot.ini

På 32-bitarsversioner av Windows har program 4 gb virtuellt adressutrymme tillgängligt. Det virtuella adressutrymmet är uppdelat så att 2 GB är tillgängligt för programmet och de andra 2 GB är endast tillgängliga för systemet. Justeringfunktionen för 4 GT eller 4 GT RAM, som aktiveras med kommandot BCDEdit /set increaseuserva, ökar det virtuella adressutrymmet som är tillgängligt för programmet upp till 3 GB, och minskar mängden tillgängligt för systemet till mellan 1 och 2 GB.

För program som är minnesintensiva, till exempel databashanteringssystem (DBMS), kan användningen av ett större virtuellt adressutrymme ge betydande prestanda- och skalbarhetsfördelar. Filcacheminnet, den sidsidiga poolen och den icke-sidiga poolen är dock mindre, vilket kan påverka program med tungt nätverk eller I/O negativt. Därför kanske du vill testa programmet under belastning och undersöka prestandaräknarna för att avgöra om programmet drar nytta av det större adressutrymmet.

Om du vill aktivera 4GT använder du kommandot BCDEdit /set för att ange alternativet increaseuserva startpostalternativ till ett värde mellan 2 048 (2 GB) och 3 072 (3 GB).

Windows Server 2003 och tidigare: Om du vill aktivera 4GT lägger du till /3GB växeln till filen Boot.ini. Växeln /3GB stöds på följande system:

  • Windows Server 2003
  • Windows XP Professional

Växeln /3GB gör hela 3 GB virtuellt adressutrymme tillgängligt för program och minskar mängden tillgängligt för systemet till 1 GB. På Windows Server 2003 kan mängden adressutrymme som är tillgängligt för program justeras genom att ställa in /USERVA växla i Boot.ini till ett värde mellan 2048 och 3072, vilket ökar mängden adressutrymme som är tillgängligt för systemet. Detta kan bidra till att upprätthålla övergripande systemprestanda när programmet kräver mer än 2 GB men mindre än 3 GB adressutrymme.

Om du vill att ett program ska kunna använda det större adressutrymmet anger du flaggan IMAGE_FILE_LARGE_ADDRESS_AWARE i bildrubriken. Länkaren som ingår i Microsoft Visual C++ stöder /LARGEADDRESSAWARE växla för att ange den här flaggan. Att ange den här flaggan och sedan köra programmet på ett system som inte har 4GT-stöd bör inte påverka programmet.

I 64-bitarsversioner av Windows har 32-bitarsprogram som markerats med flaggan IMAGE_FILE_LARGE_ADDRESS_AWARE 4 GB tillgängligt adressutrymme.

Itanium-utgåvor av Windows Server 2003: Före SP1 har 32-bitarsprocesser endast 2 GB tillgängligt adressutrymme.

Använd följande riktlinjer för att stödja 4GT i program:

  • Adresser nära gränsen på 2 GB används vanligtvis av olika system-DLL:er. Därför kan en 32-bitarsprocess inte allokera mer än 2 GB sammanhängande minne, även om hela 4 GB-adressutrymmet är tillgängligt.
  • Om du vill hämta mängden totalt virtuellt användarutrymme använder du funktionen GlobalMemoryStatusEx. Om du vill hämta den högsta möjliga användaradressen använder du funktionen GetSystemInfo. Identifiera alltid det verkliga värdet vid körning och undvik att använda hårdkopplade konstanta definitioner som: #define HIGHEST_USER_ADDRESS 0xC0000000.
  • Undvik signerade jämförelser med pekare eftersom de kan orsaka att program kraschar på ett 4GT-aktiverat system. Ett villkor som följande är falskt för en pekare som är över 2 GB: if (pointer > 40000000).
  • Kod som använder den högsta biten av en pekare för ett programdefinierat syfte misslyckas när 4GT är aktiverat. Till exempel kan ett 32-bitars ord betraktas som en användarlägesadress om det är under 0x80000000 och en felkod om ovan. Detta är inte sant med 4GT.

VirtualAlloc- returnerar vanligtvis låga adresser före höga adresser. Processen kanske därför inte använder mycket höga adresser om den inte allokerar mycket minne eller har ett fragmenterat virtuellt adressutrymme. Om du vill tvinga allokeringar att allokera från högre adresser före lägre adresser i testsyfte anger du MEM_TOP_DOWN när du anropar VirtualAlloc- eller anger följande registervärde till 0x100000:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management\AllocationPreference

minnesgränser för Windows-versioner

Fysiskt Adresstillägg

4GT Teknisk referens