转自:http://blog.csdn.net/fisher_jiang/article/details/5063852

proc/<PID>/maps
查看进程的虚拟地址空间是如何使用的。
该文件有6列,分别为:
地址:库在进程里地址范围
权限:虚拟内存的权限,r=读,w=写,x=,s=共享,p=私有;
偏移量:库在进程里地址范围
设备:映像文件的主设备号和次设备号;
节点:映像文件的节点号;
路径: 映像文件的路径
每项都与一个vm_area_struct结构成员对应,
范例:
应用程序的正文段(权限为r-xp)从0x08048000到0x08049000,大小为4096;数据段从0x08049000到0x0804a000,大小为1KB。该应用程序使用了两个库:lib和libc。Libc 的正文段从0x00391000到0x004b4000,大小为1164KB;数据段从0x004b5000到0x004b8000,大小为12KB.
Ld 的正文段从00378000到0038d000,大小为84KB;数据段从0x0038e000到0x0038f000,大小为4KB。该应用程序所使用的库所占的虚拟空间的大小从0x4b8000到0x378000,大小为1280KB,其实真正大小为VmLib(1251KB);因为是按页分配,每页大小为4KB。

[root@localhost ~]# cat /proc/7114/maps
08047000-080dc000 r-xp 00000000 03:06 884901 /bin/bash
080dc000-080e3000 rwxp 00094000 03:06 884901 /bin/bash
080e3000-08129000 rwxp 080e3000 00:00 0 [heap]
4d575000-4d58a000 r-xp 00000000 03:06 736549 /lib/ld-2.3.4.so
4d58a000-4d58b000 r-xp 00015000 03:06 736549 /lib/ld-2.3.4.so
4d58b000-4d58c000 rwxp 00016000 03:06 736549 /lib/ld-2.3.4.so
4d58e000-4d6b1000 r-xp 00000000 03:06 736550 /lib/tls/libc-2.3.4.so
4d6b1000-4d6b2000 r-xp 00123000 03:06 736550 /lib/tls/libc-2.3.4.so
4d6b2000-4d6b5000 rwxp 00124000 03:06 736550 /lib/tls/libc-2.3.4.so
4d6b5000-4d6b7000 rwxp 4d6b5000 00:00 0
4d6de000-4d6e0000 r-xp 00000000 03:06 736552 /lib/libdl-2.3.4.so
4d6e0000-4d6e2000 rwxp 00001000 03:06 736552 /lib/libdl-2.3.4.so
4d807000-4d80a000 r-xp 00000000 03:06 736567 /lib/libtermcap.so.2.0.8
4d80a000-4d80b000 rwxp 00002000 03:06 736567 /lib/libtermcap.so.2.0.8
b7bf2000-b7c1e000 r-xp 00000000 03:06 881337 /usr/lib/gconv/GB18030.so
b7c1e000-b7c20000 rwxp 0002b000 03:06 881337 /usr/lib/gconv/GB18030.so
b7c20000-b7c26000 r-xs 00000000 03:06 881502 /usr/lib/gconv/gconv-modules.cache
b7c26000-b7d2f000 r-xp 02197000 03:06 852489 /usr/lib/locale/locale-archive
b7d2f000-b7f2f000 r-xp 00000000 03:06 852489 /usr/lib/locale/locale-archive
b7f2f000-b7f38000 r-xp 00000000 03:06 734450 /lib/libnss_files-2.3.4.so
b7f38000-b7f3a000 rwxp 00008000 03:06 734450 /lib/libnss_files-2.3.4.so
b7f3a000-b7f3c000 rwxp b7f3a000 00:00 0
b7f51000-b7f52000 rwxp b7f51000 00:00 0
bfc3d000-bfc52000 rw-p bfc3d000 00:00 0 [stack]
ffffe000-fffff000 ---p 00000000 00:00 0 [vdso]
[root@localhost ~]#

参数 解释
address: 0085d000-00872000 虚拟内存区域的起始和终止地址文件所占的地址空间
perms:rw-p 权限:r=read, w=write, x=execute, s=shared, p=private(copy on write)
offset: 00000000 虚拟内存区域在被映射文件中的偏移量
dev: 03:08 文件的主设备号和次设备号
inode: 设备的节点号,0表示没有节点与内存相对应
name: /lib/ld-2.3.4.so 被映射文件的文件名

各共享库的代码段,存放着二进制可执行的机器指令,是由kernel把该库ELF文件的代码段map到虚存空间;
各共享库的数据段,存放着程序执行所需的全局变量,是由kernel把ELF文件的数据段map到虚存空间;
用户代码段,存放着二进制形式的可执行的机器指令,是由kernel把ELF文件的代码段map到虚存空间;
用户数据段之上是代码段,存放着程序执行所需的全局变量,是由kernel把ELF文件的数据段map到虚存空间;
用户数据段之下是堆(heap),当且仅当malloc调用时存在,是由kernel把匿名内存map到虚存空间,堆则在程序中没有调用malloc的情况下不存在;
用户数据段之下是栈(stack),作为进程的临时数据区,是由kernel把匿名内存map到虚存空间,栈空间的增长方向是从高地址到低地址。

cat /proc/maps 进程内存映射【转】的更多相关文章

  1. 内存映射MMAP和DMA【转】

    转自:http://blog.csdn.net/zhoudengqing/article/details/41654293 版权声明:本文为博主原创文章,未经博主允许不得转载. 这一章介绍Linux内 ...

  2. LDD3 第15章 内存映射和DMA

    本章内容分为三个部分: 第一部分讲述了mmap系统调用的实现过程.将设备内存直接映射到用户进程的地址空间,尽管不是所有设备都需要,但是能显著的提高设备性能. 如何跨越边界直接访问用户空间的内存页,一些 ...

  3. linux查看进程内存占用

    ps -aux | grep xxx USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND 可以看到RSS ...

  4. Android漫游记(1)---内存映射镜像(memory maps)

    Android系统内核基于Linux2.6+内核,因此,其在进程内存管理方面的非常多机制和Linux是非常相像的.首先,让我们来看一个典型的Android进程的内存镜像(App进程和Native本地进 ...

  5. linux查看某个进程内存占用情况以及/proc/pid/status解释

    以nginx 为例1.toptop -b -n 1 |grep nginx|awk '{print "VIRT:"$5,"RES:"$6,"cpu:& ...

  6. .NET 4.0中使用内存映射文件实现进程通讯

    操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段.Win32 API中也包含有创建内存映射文件的函数,然而,这些函数都 ...

  7. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案

    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...

  8. 【IPC进程间通讯之三】内存映射文件Mapping File

    IPC进程间通信+共享内存Mapping                IPC(Inter-Process Communication.进程间通信).         文件映射(Mapping)是一种 ...

  9. 【VS开发】内存映射文件进程间共享内存

    内存映射文件进程间共享内存 内存映射文件的另一个功能是在进程间共享数据,它提供了不同进程共享内存的一个有效且简单的方法.后面的许多例子都要用到共享内存.共享内存主要是通过映射机制实现的.Windows ...

随机推荐

  1. js石头剪刀布小游戏

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...

  2. 网络编程介绍(uninx/windows)

    1.网络中进程之间如何通信? 2.Socket是什么? 3.socket的基本操作 3.1.socket()函数 3.2.bind()函数 3.3.listen().connect()函数 3.4.a ...

  3. 自定义控件的getChildCount

    我真的是一步一步走过来,看过来的代码.不是能力问题,而是他们用的,我没用过,我用的他们不用.然后一句一句的问为什么,然后一句一句的去想为什么. 只有这样,才能慢慢的熟悉,东一榔头西一棒子,不是分模块再 ...

  4. python基础——数字&集合&布尔类型

    Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...

  5. 《Cracking the Coding Interview》——第14章:Java——题目6

    2014-04-26 19:11 题目:设计一个循环数组,使其支持高效率的循环移位.并能够使用foreach的方式访问. 解法:foreach不太清楚,循环移位我倒是实现了一个,用带有偏移量的数组实现 ...

  6. 了解JavaScript核心精髓(三)

    1.js判断对象是否存在属性. hasOwnProperty(‘property’)  判断原型属性是否存在. "property" in o;  判断原型属性和原型链属性是否存在 ...

  7. flask利用session身份伪造

    想研究很久了,这次终于初步了解了flask session伪造(得知道密钥). python2和python3 session解密不一样,而且不都是base64,脚本https://github.co ...

  8. Python学习4,字符串

    字符串这个东西主要靠记,多打打就好了. _author_ = "Happyboy" name = "my \tname is happyboy and i am 66 y ...

  9. Opencv4.0.0安装包

    这个资源是Opencv4.0.0安装包,包括Windows软件包,Android软件包,IOS软件包,还有opencv的源代码:需要的下载吧. 点击下载

  10. LeetCode-N皇后

                                          LeetCode-N皇后 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. ...