4 Gigabayt Ayarlama: BCDEdit ve Boot.ini

Windows'un 32 bit sürümlerinde, uygulamalar 4 gigabayt (GB) sanal adres alanına sahiptir. Sanal adres alanı, uygulama için 2 GB ve diğer 2 GB yalnızca sistem tarafından kullanılabilir olacak şekilde bölünür. BCDEdit /set increaseuserva komutuyla etkinleştirilen 4 gigabaytlık ayarlama (4GT veya 4GT RAM Ayarlama) özelliği, uygulamanın kullanabileceği sanal adres alanını 3 GB'a kadar artırır ve sistem için kullanılabilir miktarı 1 ile 2 GB arasında bir değere düşürür.

Veritabanı yönetim sistemleri (DBMS) gibi yoğun bellek kullanan uygulamalar için daha büyük bir sanal adres alanı kullanılması önemli performans ve ölçeklenebilirlik avantajları sağlayabilir. Ancak, dosya önbelleği, disk belleği havuzu ve sayfalanmamış havuz daha küçüktür ve bu da ağır ağ veya G/Ç içeren uygulamaları olumsuz etkileyebilir. Bu nedenle, uygulamanızı yük altında test etmek ve uygulamanızın daha büyük adres alanından yararlanıp yararlanmadığını belirlemek için performans sayaçlarını incelemek isteyebilirsiniz.

4GT'yi etkinleştirmek için BCDEdit /set komutunu kullanarak increaseuserva önyükleme girdisi seçeneğini 2048 (2 GB) ile 3072 (3 GB) arasında bir değere ayarlayın.

Windows Server 2003 ve önceki sürümleri : 4GT'yi etkinleştirmek için /3 GB anahtarını Boot.ini dosyasına ekleyin. /3 GB anahtarı aşağıdaki sistemlerde desteklenir:

  • Windows Server 2003
  • Windows XP Professional

/3 GB anahtarı, uygulamalar için tam 3 GB sanal adres alanı sağlar ve sistem için kullanılabilir miktarı 1 GB'a düşürür. Windows Server 2003'te, Boot.ini içindeki /USERVA anahtarı 2048 ile 3072 arasında bir değere ayarlanarak uygulamaların kullanabileceği adres alanı miktarı ayarlanabilir ve bu da sistem için kullanılabilir adres alanı miktarını artırır. Bu, uygulama 2 GB'tan fazla ama 3 GB'tan az adres alanı gerektirdiğinde genel sistem performansını korumaya yardımcı olabilir.

Bir uygulamanın daha büyük adres alanını kullanmasını sağlamak için görüntü üst bilgisinde IMAGE_FILE_LARGE_ADDRESS_AWARE bayrağını ayarlayın. Microsoft Visual C++ ile birlikte gelen bağlayıcı, bu bayrağı ayarlamak için /LARGEADDRESSAWARE anahtarını destekler. Bu bayrağı ayarlamak ve ardından uygulamayı 4GT desteği olmayan bir sistemde çalıştırmak uygulamayı etkilememelidir.

Windows'un 64 bit sürümlerinde, IMAGE_FILE_LARGE_ADDRESS_AWARE bayrağıyla işaretlenmiş 32 bit uygulamalar 4 GB adres alanına sahiptir.

Windows Server 2003'ün Itanium sürümleri: SP1'in öncesinde, 32 bit işlemler yalnızca 2 GB adres alanına sahiptir.

Uygulamalarda 4GT'yi desteklemek için aşağıdaki yönergeleri kullanın:

  • 2 GB sınırına yakın adresler genellikle çeşitli sistem DLL'leri tarafından kullanılır. Bu nedenle, 32 bitlik bir işlem, 4 GB adres alanının tamamı kullanılabilir olsa bile 2 GB'tan fazla bitişik bellek ayıramaz.
  • Toplam kullanıcı sanal alanı miktarını almak için GlobalMemoryStatusEx işlevini kullanın. Mümkün olan en yüksek kullanıcı adresini almak için GetSystemInfo işlevini kullanın. Çalışma zamanında her zaman gerçek değeri algılayın ve aşağıdaki gibi sabit kablolu sabit tanımları kullanmaktan kaçının: #define HIGHEST_USER_ADDRESS 0xC0000000.
  • İşaretçi ile işaretli karşılaştırmalardan kaçının, çünkü bunlar, uygulamaların 4GT özellikli bir sistemde kilitlenmesine neden olabilir. 2 GB'ın üzerindeki bir işaretçi için aşağıdaki gibi bir koşul yanlıştır: if (pointer > 40000000).
  • Uygulama tanımlı bir amaç için işaretçinin en yüksek bitini kullanan kod, 4GT etkinleştirildiğinde başarısız olur. Örneğin, 32 bit sözcük 0x80000000 altındaysa kullanıcı modu adresi ve yukarıdaysa bir hata kodu olarak kabul edilebilir. Bu, 4GT ile doğru değildir.

VirtualAlloc genellikle yüksek adreslerden önce düşük adresler döndürür. Bu nedenle, işleminiz çok fazla bellek ayırmadığı veya parçalanmış bir sanal adres alanı olmadığı sürece çok yüksek adresler kullanmayabilir. Test amacıyla sistem belleği ayırmalarını daha düşük adreslerden önce daha yüksek adreslerden yapmaya zorlamak için, VirtualAlloc çağırırken MEM_TOP_DOWN belirtin veya aşağıdaki kayıt defteri değerini 0x100000 olarak ayarlayın.

HKEY_LOCAL_MACHINE\Sistem\MevcutKontrolSeti\Kontrol\Oturum Yöneticisi\Bellek Yönetimi\Ayırma Tercihi

Windows Yayınları için Bellek Sınırları

Fiziksel Adres Uzantısı

4GT Teknik Referans