美文网首页
Linux maps文件

Linux maps文件

作者: 王保胜_8d27 | 来源:发表于2018-11-30 15:50 被阅读0次

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

    b6d01000-b6d73000 r-xp 00000000 b3:19 1118       /system/lib/libc.so
    b6d73000-b6d77000 r--p 00071000 b3:19 1118       /system/lib/libc.so
    b6d77000-b6d7a000 rw-p 00075000 b3:19 1118       /system/lib/libc.so
    b6d7a000-b6d84000 rw-p 00000000 00:00 0 
    b6d84000-b6e0c000 r-xp 00000000 b3:19 1117       /system/lib/libc++.so
    b6e0c000-b6e0d000 ---p 00000000 00:00 0 
    b6e0d000-b6e11000 r--p 00088000 b3:19 1117       /system/lib/libc++.so
    b6e11000-b6e12000 rw-p 0008c000 b3:19 1117       /system/lib/libc++.so
    b6e12000-b6e13000 rw-p 00000000 00:00 0 
    b6e13000-b6e3b000 r-xp 00000000 b3:19 1348       /system/lib/libwilhelm.so
    

    第一列:虚拟地址空间的开始和结束地址vm_start-vm_end
    第二列:虚拟地址空间的属性vm_flags

    每种属性用一个字段:
    r表示可读,w表示可写,x表示可执行,ps共用一个字段,互斥关系,p表示私有段,s表示共享段,如果没有相应权限,则用-代替。

    第三列:映射偏移。vm_pgoff 对有名映射,表示此段虚拟内存起始地址在文件中以页为单位的偏移。对匿名映射,它等于0或者vm_start/PAGE_SIZE
    第四列:映射文件所属设备号。对匿名映射来说,因为没有文件在磁盘上,所以没有设备号,始终为00:00。对有名映射来说,是映射的文件所在设备的设备号。
    第五列:映射文件所属节点号。对匿名映射来说,因为没有文件在磁盘上,所以没有节点号,始终为0。对有名映射来说,是映射的文件的节点号。
    第六列:映射文件名或堆、栈。对有名来说,是映射的文件名。对匿名映射来说,是此段虚拟内存在进程中的角色。[stack]表示在进程中作为栈使用,[heap]表示堆。其余情况则无显示。

    参考
    https://blog.csdn.net/lijzheng/article/details/23618365

    相关文章

      网友评论

          本文标题:Linux maps文件

          本文链接:https://www.haomeiwen.com/subject/zvehcqtx.html