Se ho mmap() alcuni PRIVATA e ANONIME pagine e poi li estendo con mremap(), fa il nuovo spazio anche ottenere inizializzato a zero?mremap "inizializza" la memoria in fase di crescita?
ho provato a leggere il codice per mremap (mm/mremap.c) nei sorgenti di Linux, ma richiede una certa conoscenza specifica del dominio che al momento non hanno (VMA _ ### roba). Nemmeno sicuro che è il posto giusto per cercare ...
Ma, da quello che ho raccolto io penso che mremap() Memoria a cura sarebbe stata cancellata, è corretto?
assegnazione viene fatta in questo modo
list = mmap(NULL, newSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)
e quindi rimappatura è fatto in questo modo
newList = mremap(list, oldSize, newSize, MREMAP_MAYMOVE)
Ah, e ultimo, si tratta di un Linux domanda specifica, l'esecuzione di un kernel recente (> = 2.6.28) e libc (> = 2.11.1)
Sì. Qualunque cosa tranne le pagine zero sarebbe un buco di sicurezza. –
Ti stai sbagliando sulle mappature copy-on-write della pagina zero universale. Almeno su Linux questo non è il modo in cui 'mmap()' funziona. Le pagine fisiche vengono mappate al primo accesso alla memoria mappata e questo è il gestore degli errori della pagina del kernel che azzera la pagina fisica e la mappa. Nessuna pagina universale zero coinvolta. –
Sei sicuro? Certamente per i mapping anonimi di sola lettura non crea una pagina fisica per ogni pagina. Ciò che ho detto è sicuramente vero in un certo senso se abiliti la fusione di pagine duplicate, ma potrei sbagliarmi in generale; Non ho RTFS o testato. –