一. proc maps

Proc/pid/maps显示进程映射了的内存区域和访问权限。对应内核中的操作集为proc_pid_maps_op,具体的导出函数为show_map。内核中进程的一段地址空间用一个vm_area_struct结构体表示,所有地址空间存储在task->mm->mmap链表中。

一个文件可以映射到进程的一段内存区域中,映射的文件描述符保存在vm_area_struct->vm_file域中,这种内存区域叫做有名内存区域,相反,属于匿名映射内存区域。Vm_area_struct每项对应解析如下表所示:
 

内核每进程的vm_area_struct项

/proc/pid/maps中的项

含义

vm_start

“-”前一列,如00377000

此段虚拟地址空间起始地址

vm_end

“-”后一列,如00390000

此段虚拟地址空间结束地址

vm_flags

第三列,如r-xp

此段虚拟地址空间的属性。每种属性用一个字段表示,r表示可读,w表示可写,x表示可执行,p和s共用一个字段,互斥关系,p表示私有段,s表示共享段,如果没有相应权限,则用’-’代替

vm_pgoff

第四列,如00000000

对有名映射,表示此段虚拟内存起始地址在文件中以页为单位的偏移。对匿名映射,它等于0或者vm_start/PAGE_SIZE

vm_file->f_dentry->d_inode->i_sb->s_dev

第五列,如fd:00

映射文件所属设备号。对匿名映射来说,因为没有文件在磁盘上,所以没有设备号,始终为00:00。对有名映射来说,是映射的文件所在设备的设备号

vm_file->f_dentry->d_inode->i_ino

第六列,如9176473

映射文件所属节点号。对匿名映射来说,因为没有文件在磁盘上,所以没有节点号,始终为00:00。对有名映射来说,是映射的文件的节点号

第七列,如/lib/ld-2.5.so

对有名来说,是映射的文件名。对匿名映射来说,是此段虚拟内存在进程中的角色。[stack]表示在进程中作为栈使用,[heap]表示堆。其余情况则无显示

root@gedu:/home/privilege# cat /proc/2939/maps
0041b000-00502000 r-xp 00000000 08:01 1707678    /usr/sbin/sshd
00503000-00505000 r--p 000e7000 08:01 1707678    /usr/sbin/sshd
00505000-00506000 rw-p 000e9000 08:01 1707678    /usr/sbin/sshd
00506000-0050b000 rw-p 00000000 00:00 0
0169d000-01717000 rw-p 00000000 00:00 0          [heap]
b75d1000-b75dc000 r-xp 00000000 08:01 1446136    /lib/i386-linux-gnu/security/pam_gnome_keyring.so
b75dc000-b75dd000 r--p 0000a000 08:01 1446136    /lib/i386-linux-gnu/security/pam_gnome_keyring.so
b75dd000-b75de000 rw-p 0000b000 08:01 1446136    /lib/i386-linux-gnu/security/pam_gnome_keyring.so
b75de000-b75e3000 r-xp 00000000 08:01 1446201    /lib/i386-linux-gnu/security/pam_limits.so
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值