2014-04-01 50 views
5

當我看使用內存映射

執行cat/proc/PID /圖進程的內存映射

有條目是這樣的:

00-40336000 r-xp 00000000 b3:15 875  /system/lib/libm.so 
40336000-40337000 r--p 00014000 b3:15 875  /system/lib/libm.so 
40337000-40338000 rw-p 00015000 b3:15 875  /system/lib/libm.so 
40338000-40345000 r-xp 00000000 b3:15 789  /system/lib/libcutils.so 
40345000-40346000 r--p 0000c000 b3:15 789  /system/lib/libcutils.so 
40346000-40347000 rw-p 0000d000 b3:15 789  /system/lib/libcutils.so 
40347000-40355000 rw-p 00000000 00:00 0 
40355000-403bc000 r-xp 00000000 b3:15 877  /system/lib/libmedia.so 
403bc000-403bd000 ---p 00000000 00:00 0 
403bd000-403d0000 r--p 00067000 b3:15 877  /system/lib/libmedia.so 
403d0000-403d1000 rw-p 0007a000 b3:15 877  /system/lib/libmedia.so 
403d1000-403d5000 rw-p 00000000 00:00 0 
403d5000-403d8000 rw-p 00000000 00:00 0 

我明白.so代表進程映射的共享庫。似乎每一個。所以有3個項目和它們的權限是 R-XP [R - P RW-P

那麼,如何解讀?我可以假設r-xp是庫的代碼部分,因爲它具有x(執行)權限? r - p和rw-p怎麼樣,他們是數據部分?

空條目怎麼樣?例如,關於libmedia的最後6個條目有三個空的條目(00:00 0)。這些是什麼?

403bc000-403bd000 ---p 00000000 00:00 0 
403bd000-403d0000 r--p 00067000 b3:15 877  /system/lib/libmedia.so 
403d0000-403d1000 rw-p 0007a000 b3:15 877  /system/lib/libmedia.so 
403d1000-403d5000 rw-p 00000000 00:00 0 
403d5000-403d8000 rw-p 00000000 00:00 0 
+0

這似乎是(至少部分)的部分,沒有相關的文件可能是匿名的地圖用於在運行時分配的內存。 –

回答

3

我可以假設R-XP是庫的代碼部分,因爲它有 的x(執行)權限?

是的,但這被稱爲文本段(存儲指令)。您還應該注意,它沒有寫權限,因爲它不應該有。

r-p和rw-p怎麼樣,它們是數據段嗎?

是的,這些段存儲靜態/全局變量。然而,不變的全局變量將被存儲到r-p段中,因爲它不應該被任何程序修改。

空條目怎麼樣?例如,關於 libmedia的最後6個條目有三個空的條目(00:00 0)。這些是什麼? 這些可能是保護段(內核插入這些段以保護溢出情況)。 「p」表示其私有。

編輯 有關完整信息,你可能需要參考以下鏈接:

http://linux.die.net/man/5/proc