Kısa cevap no. ASLR (örneğin XP) olmadan sistem üzerinde
bir tercih edilmeyen bir adreste DLL yükleniyor birkaç maliyetleri vardır:
tehcir bölüm ayrıştırılır ve fixups görüntünün tamamına uygulanması gerekecektir edilecek olan
- .
- Düzeltmeleri uygulama eylemi, göreceli olarak daha pahalı CPU'lu, yazma uygulamalı hatalara neden olur ve ayrıca, uygulama tarafından başvurulan olmasalar bile, sayfaların diskten okunmasını zorlar.
- DLL'yi tercih edilmeyen bir adreste yükleyen her işlem, yazılan her sayfanın özel bir kopyasını alır ve bu da bellek kullanımını artırır.
Öğeler 2 ve 3 en büyük maliyetlerdir ve DLL'lerin zorunlu olarak kullanılmasının neden ana nedenidir.
ASLR ile, düzeltmeler işletim sistemi tarafından saydam olarak uygulanır; bu, DLL'nin tercih edilen adreste gerçekten yüklü gibi görünmesini sağlar. Üzerine yazma hataları yoktur ve işlem özel sayfaları oluşturulmaz. Ayrıca, düzeltmeler yalnızca görüntünün tamamı tarafından değil, uygulama tarafından erişilen sayfalara uygulanır; bu, diskten fazladan veri okunmadığı anlamına gelir.
Buna ek olarak, el ile yeniden oluşturma şemaları tüm temel adres çakışmalarını önleyemez (örneğin, farklı satıcılardan gelen DLL'ler birbiriyle çakışabilir veya bir OS DLL'si bir düzeltme nedeniyle boyutunun artmasına neden olabilir. diğer bazı DLL, vb için ayrılmış bir aralık. ASLR, bu konularla uğraşırken çok daha verimlidir, bu nedenle sisteme bir bütün olarak bakıldığında, performansı gerçekten artırabilir.
Kabul etmeliyim, ilgimi çekiyorum. ASLR, OS'den onlarca yıllık performans tweaks'lerini tersine çevirir. Ve Windows STILL'in açılmasının çok uzun sürdüğünü biliyorum. –