Stavo cercando di vedere la mappa della memoria di un processo su Linux x86-64 usando il comando pmap -x
. Mi sono confuso guardando l'output della pmap. In particolare per le voci per la mappatura di librerie dinamiche. Ci sono più voci per loro (in realtà 4 per tutti la maggior parte di loro, con alcuni con 3 voci). Di seguito è riportato un esempiocomprensione uscita pmap
Address Kbytes RSS Dirty Mode Mapping
00000036ca200000 88 64 0 r-x-- libpthread-2.5.so
00000036ca216000 2044 0 0 ----- libpthread-2.5.so
00000036ca415000 4 4 4 r---- libpthread-2.5.so
00000036ca416000 4 4 4 rw--- libpthread-2.5.so
La seconda fila per ciascuna della biblioteca è sempre dimensioni di 2 MB mentre non ha il permesso pagina. In tutte le librerie sembra che il suo RSS sia SEMPRE zero. Le ultime due righe hanno anche la stessa dimensione (che è la dimensione della pagina di base) e le stesse autorizzazioni (una libreria manciata non ha la mappatura rw).
Qualcuno ha qualche spiegazione per questo? Ho la sensazione che probabilmente la mappatura con la protezione di sola lettura viene eseguita dal loader per leggere i metadati della libreria mentre la parte con il permesso eseguibile in realtà il codice per la libreria. Potrei sbagliarmi comunque.
Ma non ho idea di quella fila centrale. Nessun permesso e nessun uso? Qualcuno ha qualche parola di saggezza qui?
Ho anche visto alcune pagine dichiarate sulla memoria anonima e non ha alcun bit di modalità impostato. Cosa rappresentano?
Possibile duplicato di [/ proc/$ pid/maps mostra pagine senza autorizzazioni rwx su x86 \ _64 linux] (http://stackoverflow.com/questions/16524895/proc-pid-maps-shows-pages-with -no-rwx-permissions-on-x86-64-linux) –
ha provato a correggere la porzione typo: * con il permesso eseguibile in realtà il codice per la libreria * ... sembra che "is" sia mancante ma non possa essere Sicuro al 100%; potresti aiutare? –