Ben mmap() bazı ÖZEL ve ANONİM sayfaları ettik ve sonra onları uzatırsanız mremap(), yeni alanı da sıfıra başlatıldı olsun mu?Mremap bellek büyümeye "başlatıyor" mu?
ben linux kaynağında mremap kodunu (aa/mremap.c) okuma denedim ama şu anda yok (VMA _ ### şeyler) sahip bazı alana özgü bilgi gerektirir. Anlamıştım kadarıyla ben mremap() ed bellek temizlenmiş olması düşünüyorum bile emin değil ki bu doğru,
... bakmak için doğru yer Ama?
Tahsisi bu
list = mmap(NULL, newSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)
gibi yapılır ve sonra remap bu
newList = mremap(list, oldSize, newSize, MREMAP_MAYMOVE)
Ah gibi yapılır ve son, bu kadar bir Linux spesifik bir soru, (son çekirdek çalışan > = 2.6.28) ve libc (> = 2.11.1)
Yep. Sıfır sayfalardan başka bir şey de bir güvenlik açığı olacaktır. –
Evrensel sıfır sayfanın yazma üzerine yazılan eşlemeleri hakkında yanılıyorsunuz. En azından Linux'ta bu, mmap() 'ın çalışması değildir. Eşlenmiş belleğe ilk erişimde eşlenmiş fiziksel sayfalar alırsınız ve bu, fiziksel sayfayı sıfırlayan ve haritalayan çekirdek sayfa hata işleyicisidir. Evrensel sıfır sayfa içermiyor. –
Emin misin? Kesinlikle salt okunur anonim eşlemeler için her sayfa için fiziksel bir sayfa yapmaz. Yinelenen sayfaların birleştirilmesini sağlarsanız, bir anlamda kesinlikle söylediğim doğrudur, fakat genel olarak yanlış olabilirim; RTFS ya da test etmedim. –