日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

linux的memmap函数_linux /proc下的statm、maps、memmap 内存信息文件分析

發布時間:2024/10/8 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux的memmap函数_linux /proc下的statm、maps、memmap 内存信息文件分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ls /proc 能看到一些數字命名的文件夾,這些數字就是對于進程的pid

[[email?protected] proc]# cat /proc/1/statm

487 185 133 31 0 67 0

很簡單地返回7組數字,每一個的單位都是一頁 (常見的是4KB)

分別是

size:任務虛擬地址空間大小

Resident:正在使用的物理內存大小

Shared:共享頁數

Trs:程序所擁有的可執行虛擬內存大小

Lrs:被映像倒任務的虛擬內存空間的庫的大小

Drs:程序數據段和用戶態的棧的大小

dt:臟頁數量

接下來看看maps

[[email?protected] proc]# cat /proc/1/maps

00110000-00111000 r-xp 00110000 00:00 0 ? ? ? ? ?[vdso]

0032b000-00347000 r-xp 00000000 fd:00 852733 ? ? /lib/ld-2.8.so

00347000-00348000 r--p 0001c000 fd:00 852733 ? ? /lib/ld-2.8.so

00348000-00349000 rw-p 0001d000 fd:00 852733 ? ? /lib/ld-2.8.so

0034b000-004ae000 r-xp 00000000 fd:00 852734 ? ? /lib/libc-2.8.so

004ae000-004b0000 r--p 00163000 fd:00 852734 ? ? /lib/libc-2.8.so

004b0000-004b1000 rw-p 00165000 fd:00 852734 ? ? /lib/libc-2.8.so

004b1000-004b4000 rw-p 004b1000 00:00 0

08048000-08067000 r-xp 00000000 fd:00 843075 ? ? /sbin/init

08067000-08068000 rw-p 0001e000 fd:00 843075 ? ? /sbin/init

08b42000-08b6a000 rw-p 08b42000 00:00 0 ? ? ? ? ?[heap]

b8046000-b8048000 rw-p b8046000 00:00 0

bfb4e000-bfb63000 rw-p bffeb000 00:00 0 ? ? ? ? ?[stack]

一共有6列

第一列代表內存段的虛擬地址

第二列代表執行權限,r,w,x不必說,p=私有 s=共享

不用說,heap和stack段不應該有x,否則就容易被xx,不過這個跟具體的版本有關

第三列代表在進程地址里的偏移量

第四列映射文件的主設備號和次設備號

通過 cat /proc/devices

得知fd是253 device-mapper

第五列映像文件的節點號,即inode

第六列是映像文件的路徑

以前我很奇怪怎么會有兩個相同的文件路徑,原來

08048000-08067000 r-xp 00000000 fd:00 843075 ? ? /sbin/init

08067000-08068000 rw-p 0001e000 fd:00 843075 ? ? /sbin/init

一個是只讀的,是代碼段,一個是讀寫的,是數據段

至于為什么共享庫分成了三個

0034b000-004ae000 r-xp 00000000 fd:00 852734 ? ? /lib/libc-2.8.so

004ae000-004b0000 r--p 00163000 fd:00 852734 ? ? /lib/libc-2.8.so

004b0000-004b1000 rw-p 00165000 fd:00 852734 ? ? /lib/libc-2.8.so

其中的004ae000-004b0000 r--p 00163000 fd:00 852734 ? ? /lib/libc-2.8.so

還是不能理解

最后看看神秘的memmap

可惜不是所有的版本都有這個文件,如同我這里的情況

只有口頭說一說了,memmap需要和maps配合看

顯示出來的每一行代表maps里的一個段

每一行的每一個數字,代表那個段里的一個頁,段有多大,一行就有對應的多少個數字

如果這個數字是0,代表系統為其分配了虛擬內存,但是沒有分配物理內存

如果有數字,則代表系統為其分配了物理內存,以及有多少個進程引用了這個頁

當然,不會有負數出現

總結

以上是生活随笔為你收集整理的linux的memmap函数_linux /proc下的statm、maps、memmap 内存信息文件分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。