|
每行中的字段如下:
/proc/*/maps (映像名字本身除外)中的每一个字段都与struct vm_area_struct中的一个成员相对应,下面用一个列表对每个字段进行描述。
start
end
该内存区域的起始和结束虚拟地址。
perm
内存区域的读、写和执行许可的位掩码。该字段描述了允许进程对属于该区域的页所能进行的操作。字段中的最后一个字符既可以是 p(代表私有),也可以是 s(代表共享)。
offset
这里是内存区域在被映射文件中的起始位置。零偏移量表示内存区域的第一页与文件的第一页相对应。
major
minor
对应于被映射文件所在设备的主设备号和次设备号。主设备号和次设备号是由用户打开的设备特殊文件所在的磁盘分区来决定的,而不是由设备本身所决定,这一点很容易混淆。
inode
被映射文件的索引节点号。
image
已被映射的文件(通常是一个可执行映像)的名字。
#include <string.h>
int ab[250000] ={1};//data
int abc[250000] = {0};//bss
int main()
{
int a[250000] = {0};
void *myblock = (void *) malloc(1024*1024*1024);
printf("test\n");
sleep(100000);
return 0;
}
$cat /proc/26348/maps
0060e000-00624000 r-xp 00000000 fd:00 2803996 /lib/ld-2.3.4.so
00624000-00625000 r--p 00015000 fd:00 2803996 /lib/ld-2.3.4.so
00625000-00626000 rw-p 00016000 fd:00 2803996 /lib/ld-2.3.4.so
0062d000-00753000 r-xp 00000000 fd:00 2804676 /lib/tls/libc-2.3.4.so
00753000-00755000 r--p 00125000 fd:00 2804676 /lib/tls/libc-2.3.4.so
00755000-00757000 rw-p 00127000 fd:00 2804676 /lib/tls/libc-2.3.4.so
00757000-00759000 rw-p 00757000 00:00 0
08048000-08049000 r-xp 00000000 00:2f 597793 a.out code?
08049000-0813e000 rw-p 00000000 00:2f 597793 a.out [data]
0813e000-08232000 rw-p 0813e000 00:00 0 bss 976k ?
77ef1000-b7ef4000 rw-p 77ef1000 00:00 0 heap 1G
bfdb7000-c0000000 rw-p bfdb7000 00:00 0 total 3G [c0000000]
ffffe000-fffff000 ---p 00000000 00:00 0